当前位置: 首页 > news >正文

PEFT适配器加载

 激活单个 LoRA 模块

        当我们想要在自己的模型中使用Lora方法进行微调时,可以借助PeftModel来给我们自己的模型实现lora方法。

# 1. 创建原始模型
net_original = nn.Sequential(nn.Linear(10,10),nn.ReLU(),nn.Linear(10,2)
)# 2. 用副本分别创建并保存两个适配器(不污染原始模型)
net_copy1 = copy.deepcopy(net_original)
config1 = LoraConfig(target_modules=["0"])   # 在模型的第0层添加lora模块
model1 = get_peft_model(net_copy1, config1)
model1.save_pretrained("./weights/lora_A")net_copy2 = copy.deepcopy(net_original)
config2 = LoraConfig(target_modules=["2"])
model2 = get_peft_model(net_copy2, config2)
model2.save_pretrained("./weights/lora_B")

        上述实现了自定义模型的创建和 lora 适配器的创建。

# 3. 用干净的原始模型加载lora_A(此时基础模型无任何适配器)
model = PeftModel.from_pretrained(copy.deepcopy(net_original),  # 传入原始模型副本model_id="./weights/lora_A",adapter_name="task_a"
)# 4.加载第二个适配器
model.load_adapter(model_id="./weights/lora_B",adapter_name="task_b"  # 另一个唯一名称
)# 使用 set_adapter() 强制模型使用指定的适配器并禁用其他适配器
model.set_adapter("task_b")

        这一步实现了将两个适配器加载到模型上同时激活适配器 lora_B。

同时激活多个Lora模块

        PeftMixedModel 支持同时激活多个LoRA模块,实现更灵活的组合调用。

import torch
from torch import nn
from peft import LoraConfig, get_peft_model, PeftModel, PeftMixedModel
import copy# 1. 创建原始模型
net_original = nn.Sequential(nn.Linear(10,10),nn.ReLU(),nn.Linear(10,2)
)# 2. 用副本分别创建并保存两个适配器(不污染原始模型)
net_copy1 = copy.deepcopy(net_original)
config1 = LoraConfig(target_modules=["0"])
model1 = get_peft_model(net_copy1, config1)
model1.save_pretrained("./weights/lora_A")net_copy2 = copy.deepcopy(net_original)
config2 = LoraConfig(target_modules=["2"])
model2 = get_peft_model(net_copy2, config2)
model2.save_pretrained("./weights/lora_B")model = PeftMixedModel.from_pretrained(copy.deepcopy(net_original),model_id="./weights/lora_A",adapter_name = "task_a"
)model.load_adapter(model_id="./weights/lora_B",adapter_name="task_b"  # 另一个唯一名称
)# 使用 set_adapter() 强制模型使用指定的适配器并禁用其他适配器
model.set_adapter(["task_a","task_b"])print("adapter",model.active_adapter)

        与上面的流程基本一致,但是模型模板改为 PeftMixedModel

http://www.dtcms.com/a/482712.html

相关文章:

  • React Hooks 核心规则自定义 Hooks
  • 江门网站制作 华企立方洛宁县东宋乡城乡建设局网站
  • 河南网站建设哪家有三品合一网站建设案例
  • 位运算专题总结:从变量初始化陷阱到理解异或分组
  • Linux学习笔记(八)--环境变量与进程地址空间
  • 【动态规划】题目中的「0-1 背包」和「完全背包」的问题
  • Streamlit 中文全面教程:从入门到精通
  • 大模型系列-dify
  • 推荐系统:Python汽车推荐系统 数据分析 可视化 协同过滤推荐算法 汽车租赁 Django框架 大数据 计算机✅
  • 第16讲:深入理解指针(6)——sizeof vs strlen 与 指针笔试题深度解析
  • 【iOS】PrivacyInfo.xcprivacy隐私清单文件(二)
  • 环保网站建设公司排名手机访问wordpress网站卡
  • 从零构建大模型 Build a large language model from scratch by Sebastian Raschka 阅读笔记
  • 基于Chainlit和Llamalndex的智能RAG聊天机器人实现详解
  • 18.5 GLM-4大模型私有化部署实战:3秒响应+显存降低40%优化全攻略
  • Prisma 命令安全指南
  • Linux系统下文件操作系统调用详解
  • 网站备案后需要年检吗官方网站搭建
  • 515ppt网站建设北京朝阳区属于几环
  • 5~20.数学基础
  • HTML应用指南:利用POST请求获取全国鸿蒙智行门店位置信息
  • 优先级队列(堆)-295.数据流的中位数-力扣(LeetCode)
  • 大语言模型推理本质与技术演进
  • 福田区网站建最牛视频网站建设
  • 踩坑实录:Go 1.25.x 编译的 exe 在 Windows 提示“此应用无法运行”
  • 学习网站建设有前景没wordPress登不上数据库
  • 互联网大厂Java面试:从缓存技术到安全框架的深度探索
  • 本地部署开源集成工具 Jenkins 并实现外网访问( Linux 版本)
  • HackerNews 播客生成器
  • 新网站优化品牌营销策略四种类型