提问人:Nukaccino 提问时间:11/16/2023 最后编辑:Nukaccino 更新时间:11/17/2023 访问量:144
这是合并 LoRA 权重的正确方法吗?
Is this right way to merge LoRA weights?
问:
我使用带有 HuggingFace 库的 LoRA 对 RoBERTa 进行了微调,生成了多个 LoRA 文件。
我想在不更改原始模型的情况下合并这些 LoRA 权重.所以我写了如下代码。
from peft import (
...
PeftModel,
...
)
from transformers import (
...
RobertaForSequenceClassification
...
)
model = RobertaForSequenceClassification.from_pretrained("roberta-base")
# "lora-1" and "lora-2" are local directories.
model = PeftModel.from_pretrained(model, "lora-1")
model = model.merge_and_unload()
model = PeftModel.from_pretrained(model, "lora-2")
model = model.merge_and_unload()
代码正在工作,但有点可疑,因为我不知道具体是如何工作的。按名称猜测, 我想也许它将所有 LoRA 权重合并到基本模型的权重中,并使其成为最终的单个模型.但据我所知,这不是 LoRA 的工作方式.merge_and_unload()
总而言之,我想生产,而不是单一合并(对不起方程式文本,我没有足够的声誉来链接在线方程式 SVG!p(phi_0 + delta phi_1(theta_1) + delta phi_2(theta_2) + ... + delta phi_n(theta_n))
p(phi_0)
我找不到比使用 .merge_and_unload()
编辑
我发现有关于它的描述......可惜我没有读过它。
merge_and_unload()
This method merges the LoRa layers into the base model. This is needed if someone wants to use the base model as a standalone model.
所以基本上使用绝对不是我想要的。merge_and_unload()
是否有其他选项可以合并 LoRA 权重?
任何建议将不胜感激。
答:
评论