PEFT 文件
軟提示
並獲得增強的文件體驗
開始使用
軟提示
訓練大型預訓練語言模型非常耗時且計算密集。隨著模型規模的持續增長,人們對更高效的訓練方法越來越感興趣,例如*提示(prompting)*。提示透過包含描述任務甚至演示任務示例的文字提示,來為一個特定的下游任務啟動一個凍結的預訓練模型。透過提示,你可以避免為每個下游任務完整地訓練一個單獨的模型,而是使用同一個凍結的預訓練模型。這要容易得多,因為你可以將同一個模型用於幾個不同的任務,而且訓練和儲存一小組提示引數比訓練模型的所有引數要高效得多。
提示方法分為兩類:
- 硬提示是手動精心設計的文字提示,包含離散的輸入詞元;缺點是建立一個好的提示需要花費大量精力。
- 軟提示是與輸入嵌入連線的可學習張量,可以針對資料集進行最佳化;缺點是它們不具備人類可讀性,因為你沒有將這些“虛擬詞元”與真實單詞的嵌入相匹配。
本概念指南簡要概述了 🤗 PEFT 中包含的軟提示方法:提示調優(prompt tuning)、字首調優(prefix tuning)、P-tuning 和多工提示調優(multitask prompt tuning)。
提示調優

提示調優是為 T5 模型上的文字分類任務開發的,所有下游任務都被視為文字生成任務。例如,序列分類通常為一段文字序列分配一個單一的類別標籤。透過將其視為文字生成任務,構成類別標籤的詞元會被*生成*出來。提示作為一系列詞元被新增到輸入中。通常,模型引數是固定的,這意味著提示詞元也受模型引數的固定。
提示調優的關鍵思想是提示詞元擁有自己獨立更新的引數。這意味著你可以保持預訓練模型的引數凍結,只更新提示詞元嵌入的梯度。結果與訓練整個模型的傳統方法相當,並且隨著模型規模的增加,提示調優的效能也會提升。
請參閱因果語言模型的提示調優,瞭解如何使用提示調優訓練模型的分步指南。
字首調優

字首調優是為 GPT 模型上的自然語言生成 (NLG) 任務設計的。它與提示調優非常相似;字首調優也在輸入前新增一系列特定於任務的向量,這些向量可以被訓練和更新,同時保持預訓練模型其餘引數的凍結。
主要區別在於,字首引數被插入到模型的**所有**層中,而提示調優僅將提示引數新增到模型的輸入嵌入中。此外,字首引數由一個單獨的前饋網路 (FFN) 進行最佳化,而不是直接在軟提示上訓練,因為直接訓練會導致不穩定並損害效能。在更新軟提示後,該 FFN 會被丟棄。
結果,作者發現字首調優的效能與完全微調模型相當,儘管其引數數量少了 1000 倍,並且在低資料量的情況下表現更好。
請參閱條件生成的字首調優,瞭解如何使用字首調優訓練模型的分步指南。
P-tuning

P-tuning 專為自然語言理解 (NLU) 任務和所有語言模型設計。它是軟提示方法的另一個變體;P-tuning 也添加了一個可訓練的嵌入張量,可以透過最佳化找到更好的提示,並使用提示編碼器(一個雙向長短期記憶網路或 LSTM)來最佳化提示引數。然而,與字首調優不同的是:
- 提示詞元可以插入到輸入序列的任何位置,而不僅限於開頭。
- 提示詞元僅新增到輸入中,而不是新增到模型的每一層。
- 引入*錨點*詞元可以提高效能,因為它們能指示輸入序列中某個元件的特徵。
結果表明,P-tuning 比手動設計提示更高效,並使類 GPT 模型在 NLU 任務上能夠與類 BERT 模型競爭。
請參閱序列分類的 P-tuning,瞭解如何使用 P-tuning 訓練模型的分步指南。
多工提示調優

多工提示調優 (MPT) 從資料中為多種任務型別學習一個單一的提示,該提示可以為不同的目標任務共享。其他現有方法為每個任務學習一個單獨的軟提示,這些提示需要被檢索或聚合以適應目標任務。MPT 包括兩個階段:
- 源訓練 - 對於每個任務,其軟提示被分解為特定於任務的向量。這些特定於任務的向量相乘以形成另一個矩陣 W,然後使用哈達瑪積在 W 和一個共享的提示矩陣 P 之間生成一個特定於任務的提示矩陣。特定於任務的提示被提煉成一個在所有任務間共享的單一提示矩陣。這個提示透過多工訓練進行訓練。
- 目標適應 - 為了使單一提示適應目標任務,一個目標提示被初始化並表示為共享提示矩陣和特定於任務的低秩提示矩陣的哈達瑪積。

情境感知提示調優 (CPT)

情境感知提示調優 (CPT) 旨在透過僅最佳化上下文嵌入來增強少樣本分類。這種方法結合了上下文學習 (ICL)、提示調優 (PT) 和對抗性最佳化的思想,專注於使模型適應既引數高效又有效。在 CPT 中,只有特定的上下文詞元嵌入被最佳化,而模型的其餘部分保持凍結。為了防止過擬合和保持穩定性,CPT 使用受控擾動來將上下文嵌入的允許變化限制在預定義範圍內。此外,為了解決新近偏見現象——即上下文末尾的示例往往比早期的示例更受重視——CPT 應用了一個衰減損失因子。
請參閱示例,瞭解如何使用 CPT 訓練模型的分步指南。
< > 在 GitHub 上更新