PEFT 文件

提示詞調優(Prompt tuning)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

提示詞調優(Prompt tuning)

提示詞調優在輸入中添加了特定任務的提示詞,並且這些提示詞的引數獨立於預訓練模型引數進行更新,預訓練模型的引數則保持凍結。

論文摘要如下:

在這項工作中,我們探索了“提示詞調優”(prompt tuning),這是一種簡單而有效的機制,用於學習“軟提示詞”(soft prompts)來調整凍結的語言模型以執行特定的下游任務。與 GPT-3 使用的離散文字提示詞不同,軟提示詞是透過反向傳播學習的,並且可以進行調整以吸收來自任意數量的標記樣本的訊號。我們的端到端學習方法在很大程度上優於 GPT-3 的“少樣本”學習。更值得注意的是,透過在 T5 上進行模型大小的消融實驗,我們表明提示詞調優隨著模型規模的擴大而更具競爭力:當模型引數超過十億時,我們的方法“縮小了差距”,並達到了模型調優(其中所有模型權重都被調整)的強大效能。這一發現尤其重要,因為大型模型的共享和部署成本高昂,而為一個模型重用多個下游任務的能力可以減輕這種負擔。我們的方法可以看作是 Li 和 Liang(2021)最近提出的“字首調優”(prefix tuning)的簡化版,並且我們將其與其他類似方法進行了比較。最後,我們表明,與全模型調優相比,用軟提示詞調整凍結模型在領域遷移的魯棒性方面具有優勢。.

PromptTuningConfig

class peft.PromptTuningConfig

< >

( 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 num_virtual_tokens: int = None token_dim: int = None num_transformer_submodules: typing.Optional[int] = None num_attention_heads: typing.Optional[int] = None num_layers: typing.Optional[int] = None modules_to_save: typing.Optional[list[str]] = None prompt_tuning_init: typing.Union[peft.tuners.prompt_tuning.config.PromptTuningInit, str] = <PromptTuningInit.RANDOM: 'RANDOM'> prompt_tuning_init_text: typing.Optional[str] = None tokenizer_name_or_path: typing.Optional[str] = None tokenizer_kwargs: typing.Optional[dict] = None )

引數

  • prompt_tuning_init (Union[PromptTuningInit, str]) — 提示詞嵌入的初始化方法。
  • prompt_tuning_init_text (str, 可選) — 用於初始化提示詞嵌入的文字。僅在 `prompt_tuning_init` 為 `TEXT` 時使用。
  • tokenizer_name_or_path (str, 可選) — 分詞器的名稱或路徑。僅在 `prompt_tuning_init` 為 `TEXT` 時使用。
  • tokenizer_kwargs (dict, 可選) — 傳遞給 `AutoTokenizer.from_pretrained` 的關鍵字引數。僅在 `prompt_tuning_init` 為 `TEXT` 時使用。

這是用於儲存 PromptEmbedding 配置的配置類。

PromptEmbedding

class peft.PromptEmbedding

< >

( config word_embeddings )

引數

  • config (PromptTuningConfig) — 提示詞嵌入的配置。
  • word_embeddings (torch.nn.Module) — 基礎 Transformer 模型的詞嵌入層。

將虛擬詞元編碼為提示詞嵌入的模型。

屬性:

  • embedding (torch.nn.Embedding) — 提示詞嵌入的嵌入層。

示例

>>> from peft import PromptEmbedding, PromptTuningConfig

>>> config = PromptTuningConfig(
...     peft_type="PROMPT_TUNING",
...     task_type="SEQ_2_SEQ_LM",
...     num_virtual_tokens=20,
...     token_dim=768,
...     num_transformer_submodules=1,
...     num_attention_heads=12,
...     num_layers=12,
...     prompt_tuning_init="TEXT",
...     prompt_tuning_init_text="Predict if sentiment of this review is positive, negative or neutral",
...     tokenizer_name_or_path="t5-base",
... )

>>> # t5_model.shared is the word embeddings of the base model
>>> prompt_embedding = PromptEmbedding(config, t5_model.shared)

輸入形狀:(batch_size, total_virtual_tokens)

輸出形狀:(batch_size, total_virtual_tokens, token_dim)

< > 在 GitHub 上更新

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