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

相关推荐
cxr8289 分钟前
混沌背后的秩序:T-Π-O 框架与复杂系统理解的认识论重构
人工智能·认知框架
sramdram18 分钟前
语音识别芯片类别有哪些?离线语音识别芯片交互方案分析
人工智能·交互·语音识别·语音识别芯片·离线语音识别芯片
lisw0532 分钟前
用于信息超材料设计的生成模型!
人工智能·材料科学
资深电气设计40 分钟前
堆垛机变频器项目落地观察:FC360变频驱动方案在中鼎科技堆垛机中的应用成效
大数据·人工智能·科技
xwz小王子1 小时前
综述:机器人要学会“接触世界”,光有视觉远远不够
人工智能·机器人
cd_949217211 小时前
哪些AI纹理生成工具适合专业3D角色制作?
人工智能·3d
Profile排查笔记1 小时前
指纹浏览器怎么设置 IP?代理配置、检测与排错流程
前端·人工智能·后端·自动化
冬奇Lab1 小时前
Code Agent 解剖(13):Harness 设计之三——工具执行管道
人工智能
动物园猫2 小时前
行人细分目标检测数据集:3类别、4,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
船厂电气自动化ai大模型2 小时前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习