PEFT 文件
混合介面卡型別
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
混合介面卡型別
通常情況下,在 🤗 PEFT 中無法混合使用不同型別的介面卡。你可以用兩個不同的 LoRA 介面卡(它們可以有不同的配置選項)建立一個 PEFT 模型,但不能將 LoRA 和 LoHa 介面卡結合起來。然而,使用 PeftMixedModel,只要介面卡型別相容,就可以實現這一點。允許混合介面卡型別的主要目的是為了推理時組合已訓練好的介面卡。雖然可以訓練一個混合介面卡模型,但這未經測試,不推薦使用。
要將不同型別的介面卡載入到 PEFT 模型中,請使用 PeftMixedModel 而不是 PeftModel
from peft import PeftMixedModel
base_model = ... # load the base model, e.g. from transformers
# load first adapter, which will be called "default"
peft_model = PeftMixedModel.from_pretrained(base_model, <path_to_adapter1>)
peft_model.load_adapter(<path_to_adapter2>, adapter_name="other")
peft_model.set_adapter(["default", "other"])
必須使用 set_adapter() 方法來啟用兩個介面卡,否則只有第一個介面卡會被啟用。你可以透過重複呼叫 add_adapter() 來繼續新增更多介面卡。
PeftMixedModel 不支援儲存和載入混合介面卡。介面卡應該已經是訓練好的,每次載入模型時都需要執行一個指令碼。
提示
- 並非所有介面卡型別都可以組合。請參閱
peft.tuners.mixed.COMPATIBLE_TUNER_TYPES
檢視相容型別列表。如果你嘗試組合不相容的介面卡型別,將會引發錯誤。 - 可以混合多個相同型別的介面卡,這對於組合具有非常不同配置的介面卡很有用。
- 如果你想組合許多不同的介面卡,效能最高的方式是連續新增相同型別的介面卡。例如,按 LoRA1、LoRA2、LoHa1、LoHa2 的順序新增,而不是 LoRA1、LoHa1、LoRA2、LoHa2。雖然順序可能會影響輸出,但沒有本質上*最佳*的順序,所以最好選擇最快的一種。