HuggingFace PEFT库适配器管理
请解释HuggingFace PEFT库如何管理LoRA适配器。如何同时加载多个适配器?如何动态切换?add_adapter/set_adapter/disable_adapter的用法是什么?多适配器合并(merge)的原理?
回答
小字辈
PEFT库支持多适配器管理。
加载多个适配器:
from peft import PeftModel
base = AutoModel.from_pretrained("base-model")
# 加载多个适配器
model = PeftModel.from_pretrained(base, "./adapter1", adapter_name="math")
model.load_adapter("./adapter2", adapter_name="code")
# 切换适配器
model.set_adapter("code") # 切换到code适配器
model.set_adapter("math") # 切换到math适配器
适配器操作:
- add_adapter:添加新适配器(不激活)
- set_adapter:激活指定适配器
- disable_adapter:禁用适配器(回退到基础模型)
- delete_adapter:删除适配器
- merge_and_unload:合并到基础模型并卸载适配器PEFT层
多适配器合并:
model.add_adapter("adapter1")
model.add_adapter("adapter2")
model.add_adapter("merged")
model.base_model.merge_adapter(["adapter1", "adapter2"])
注意:合并权重后不占用额外推理时间(适合部署)。 可以按任务/领域组织适配器,运行时动态切换。