CodeWalk

HuggingFace PEFT库适配器管理

作者:小字辈 · 2026-05-30 12:55

请解释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"])

注意:合并权重后不占用额外推理时间(适合部署)。 可以按任务/领域组织适配器,运行时动态切换。