PEFT 文件

Llama-Adapter

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

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

class peft.AdaptionPromptModel

< >

( model configs: dict adapter_name: str )

實現 https://huggingface.co/papers/2303.16199 中描述的適配提示。

頂部的 L 個注意力模組被替換為 AdaptedAttention 模組,這些模組包裝了原始模組,但插入了帶有門控(用於零初始化)的可訓練提示。

關於多介面卡模式的說明

  • 我們透過維護一個以介面卡名稱為索引的 AdaptedAttention 模組字典來儲存不同介面卡的狀態。
  • 每次切換介面卡時,我們都會從模型中移除當前活動介面卡的模組,將它們儲存在字典中,並用新介面卡的模組替換它們。
  • 為避免狀態重複和潛在的不一致,當前活動的介面卡總是從字典中移除。
  • 停用介面卡也會導致模組從模型中移除。

add_adapter

< >

( adapter_name: str config: AdaptionPromptConfig )

新增一個具有給定名稱和配置的介面卡。

disable_adapter_layers

< >

( )

透過換出 AdaptedAttention 模組來停用介面卡層。

enable_adapter_layers

< >

( )

透過換入快取的 AdaptedAttention 模組來啟用介面卡層。

set_adapter

< >

( adapter_name: str )

設定模型以使用具有給定名稱的介面卡。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.