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

相关推荐
爱笑的眼睛112 分钟前
深入理解MongoDB PyMongo API:从基础到高级实战
java·人工智能·python·ai
软件开发技术深度爱好者14 分钟前
基于多个大模型自己建造一个AI智能助手
人工智能
中國龍在廣州27 分钟前
现在人工智能的研究路径可能走反了
人工智能·算法·搜索引擎·chatgpt·机器人
攻城狮7号36 分钟前
小米具身大模型 MiMo-Embodied 发布并全面开源:统一机器人与自动驾驶
人工智能·机器人·自动驾驶·开源大模型·mimo-embodied·小米具身大模型
搜移IT科技41 分钟前
【无标题】2025ARCE亚洲机器人大会暨展览会将带来哪些新技术与新体验?
人工智能
信也科技布道师FTE1 小时前
当AMIS遇见AI智能体:如何为低代码开发装上“智慧大脑”?
人工智能·低代码·llm
青瓷程序设计1 小时前
植物识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
AI即插即用1 小时前
即插即用系列 | CVPR 2025 WPFormer:用于表面缺陷检测的查询式Transformer
人工智能·深度学习·yolo·目标检测·cnn·视觉检测·transformer
唐兴通个人2 小时前
数字化AI大客户营销TOB营销客户开发专业销售技巧培训讲师培训师唐兴通老师分享AI销冠人工智能销售AI赋能销售医药金融工业品制造业
人工智能·金融
人机与认知实验室2 小时前
国内主流大语言模型之比较
人工智能·语言模型·自然语言处理