PEFT 文件
Llama-Adapter
並獲得增強的文件體驗
開始使用
Llama-Adapter
Llama-Adapter 是一種專為將 Llama 轉換為指令遵循模型而設計的 PEFT 方法。Llama 模型被凍結,只學習一組附加在輸入指令詞元前的適應性提示。由於隨機初始化的模組插入模型中可能導致模型丟失部分現有知識,Llama-Adapter 使用零初始化的注意力和零門控來逐步將指令提示新增到模型中。
論文摘要如下:
我們提出了 LLaMA-Adapter,一種輕量級的適配方法,用於高效地將 LLaMA 微調為指令遵循模型。使用 52K 條自指令演示,LLaMA-Adapter 在凍結的 LLaMA 7B 模型上僅引入了 1.2M 個可學習引數,在 8 個 A100 GPU 上的微調成本不到一小時。具體來說,我們採用一組可學習的適配提示,並將它們前置到較高 Transformer 層的輸入文字詞元中。然後,提出了一種帶有零門控的零初始化注意力機制,它自適應地將新的指令性線索注入 LLaMA,同時有效地保留其預訓練知識。透過高效訓練,LLaMA-Adapter 生成高質量的響應,與完全微調了 7B 引數的 Alpaca 相當。此外,我們的方法可以簡單地擴充套件到多模態輸入,例如影像,用於影像條件的 LLaMA,它在 ScienceQA 上實現了卓越的推理能力。我們在 https://github.com/ZrrSkywalker/LLaMA-Adapter 釋出了我們的程式碼。.
AdaptionPromptConfig
class peft.AdaptionPromptConfig
< 原始碼 >( task_type: typing.Union[str, peft.utils.peft_types.TaskType, NoneType] = None peft_type: typing.Union[str, peft.utils.peft_types.PeftType, NoneType] = None auto_mapping: typing.Optional[dict] = None base_model_name_or_path: typing.Optional[str] = None revision: typing.Optional[str] = None inference_mode: bool = False target_modules: str = None adapter_len: int = None adapter_layers: int = None )
儲存 AdaptionPromptModel 的配置。
AdaptionPromptModel
實現 https://huggingface.co/papers/2303.16199 中描述的適配提示。
頂部的 L 個注意力模組被替換為 AdaptedAttention 模組,這些模組包裝了原始模組,但插入了帶有門控(用於零初始化)的可訓練提示。
關於多介面卡模式的說明
- 我們透過維護一個以介面卡名稱為索引的 AdaptedAttention 模組字典來儲存不同介面卡的狀態。
- 每次切換介面卡時,我們都會從模型中移除當前活動介面卡的模組,將它們儲存在字典中,並用新介面卡的模組替換它們。
- 為避免狀態重複和潛在的不一致,當前活動的介面卡總是從字典中移除。
- 停用介面卡也會導致模組從模型中移除。
新增一個具有給定名稱和配置的介面卡。
透過換出 AdaptedAttention 模組來停用介面卡層。
透過換入快取的 AdaptedAttention 模組來啟用介面卡層。
設定模型以使用具有給定名稱的介面卡。