丝滑切换多个LoRA权重(LoRA加载与卸载方法)

  1. 在通过 PeftModel.from_pretrained 加载第一个适配器时,你可以使用 adapter_name 参数给它命名。否则,默认的适配器名称为 default
  2. 要加载另一个适配器,请使用 PeftModelload_adapter() 方法,例如:model.load_adapter(peft_model_path, adapter_name)
  3. 要在适配器之间切换,请使用 PeftModelset_adapter() 方法,例如:model.set_adapter(adapter_name)
  4. 要禁用适配器,请使用上下文管理器 disable_adapter(),例如:with model.disable_adapter():

对于 LoRA 方法特别说明:要合并并卸载当前激活的适配器,以便 LoRA 的权重被添加到基础模型的权重中,并移除注入的模型以恢复基础的 transformers 模型(同时保留添加的 LoRA 权重),请使用 merge_and_unload() 方法,例如:model = model.merge_and_unload()

示例代码:

from peft import PeftModel
from transformers import LlamaTokenizer, LlamaForCausalLM, GenerationConfig

model_name = "decapoda-research/llama-7b-hf"
tokenizer = LlamaTokenizer.from_pretrained(model_name)
model = LlamaForCausalLM.from_pretrained(
    model_name,
    load_in_8bit=True,
    device_map="auto",
    use_auth_token=True
)
model = PeftModel.from_pretrained(model, "tloen/alpaca-lora-7b", adapter_name="eng_alpaca")
model.load_adapter("22h/cabrita-lora-v0-1", adapter_name="portuguese_alpaca")

model.set_adapter("eng_alpaca")
instruction = "Tell me about alpacas."
print(evaluate(instruction))

model.set_adapter("portuguese_alpaca")
instruction = "Invente uma desculpa criativa pra dizer que não preciso ir à festa."
print(evaluate(instruction))

with model.disable_adapter():
    instruction = "Invente uma desculpa criativa pra dizer que não preciso ir à festa."
    print(evaluate(instruction))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落难Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值