ValueError: 名为 'default' 的适配器已加载。请使用唯一的适配器名称或禁用此适配器。
ValueError: An adapter with the name 'default' is already loaded. Use a unique adapter name or disable this adapter.
ID: huggingface/peft-adapter-name-collision
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| peft>=0.6.0 | active | — | — | — |
| transformers>=4.31.0 | active | — | — | — |
| torch>=1.13.0 | active | — | — | — |
根因分析
PEFT(参数高效微调)阻止加载同名适配器以避免权重冲突。当使用相同名称两次调用 `load_adapter` 或名为 'default' 的适配器已激活时,会发生此错误。
English
PEFT (Parameter-Efficient Fine-Tuning) prevents loading multiple adapters with the same name to avoid weight conflicts. This occurs when calling `load_adapter` twice with the same name or when an adapter named 'default' is already active.
官方文档
https://huggingface.co/docs/peft/main/en/developer_guides/multi_adapter解决方案
-
Use a unique name for each adapter load, such as including a timestamp or identifier. For example: `model.load_adapter(peft_model_id, adapter_name='my_adapter_v2')`.
-
Disable the current adapter before loading a new one with the same name using `model.disable_adapter()`.
无效尝试
常见但无效的做法:
-
30% 失败
Removing the adapter with `delete_adapter('default')` before loading a new one may cause errors if the adapter is currently active and the model has been trained with it.
-
50% 失败
Setting `adapter_name=None` in `load_adapter` does not auto-generate a unique name; it defaults to 'default' again.