隨著對預訓練大型語言模型( LLM )權重訪問需求的增加,圍繞 LLM 共享的環境正在發生變化。最近, Meta 發布了 開式預訓練Transformer ,一個具有 1750 億個參數的語言模型。 BigScience 計劃在幾個月內發布具有 1760 億個參數的多語言模型。
隨著越來越多的 LLM 可用,行業需要解決實際自然語言任務的技術。研究表明, 模型提示方法 可以從 LLM 中獲得良好的零拍和少拍性能,并有助于在各種下游自然語言處理( NLP )任務中產生高質量的結果。白皮書提出了一種解決方案,使經過預訓練的通用 LLM 在自然語言處理領域日益流行的新 預訓練、提示和預測 范式中切實有用。
然而,當您將提示方法應用于工業自然語言處理應用程序時,還需要考慮其他挑戰。對于任何下游 NLP 任務,必須收集標記數據,以指示語言模型如何生成預期結果。
盡管對于許多任務,有大量標記的英語數據,但很少有具有基準價值的非英語下游數據集。標記數據的稀缺性是業界在低資源語言環境中執行自然語言處理任務的首要挑戰。
此外,公司通常必須動態解決多個下游非線性規劃任務,這些任務可以隨著時間的推移而演變。在不忘記先前學習任務的情況下對新任務進行連續學習仍然是一個熱門的研究課題。一個好的、干凈的解決方案意味著更低的模型維護、更低的部署成本和快速的開發。
在本文中,我們將向您展示如何將 p-tuning (一種快速學習方法)適應于低資源的語言設置。我們使用在 NVIDIA NeMo 中實現的 improved version p-tuning ,它支持虛擬提示的連續多任務學習。特別是,我們將重點放在使我們的英語 p-tuning 工作流適應瑞典語。 Learn more 關于瑞典的一個財團計劃如何在北歐地區提供語言模型。
我們提出的工作流是通用的,可以很容易地為其他語言修改。
為什么選擇大型語言模型?
如 OpenAI 的 語言模型比例律研究 所示,語言模型的性能隨著語言模型大小的增加而提高。這導致了訓練越來越大的語言模型的競賽。
NVIDIA 最近培訓了一名 Megatron 圖靈 NLG 530B 該模型具有優越的零拍和少拍學習性能。為了訪問 LLM ,研究人員可以使用付費模型 API ,例如 OpenAI 提供的 API ,或者在本地部署公開發布的模型。
當您有一個能夠很好地理解語言的 LLM 時,您可以應用 即時學習方法 使該模型解決過多的非線性規劃下游任務。
快速學習和 p- 調優的簡要概述
與手動或自動選擇離散文本提示不同, prompt learning 使用虛擬提示嵌入,可以使用梯度下降進行優化。這些虛擬嵌入會從文本提示自動插入到離散令牌嵌入中。
在即時學習期間,整個 GPT 模型被凍結,并且在每個訓練步驟中僅更新這些虛擬令牌嵌入。提示學習過程會產生少量虛擬令牌嵌入,這些嵌入可以與文本提示相結合,以提高推理時的任務性能。
具體來說,在 p- 調諧中,使用一個小的長短時記憶( LSTM )模型作為提示編碼器。提示編碼器的輸入是任務名稱,輸出是特定于任務的虛擬令牌嵌入,與文本提示嵌入一起傳遞到 LLM 。
多任務連續學習解決方案
圖 2 顯示了 p-tuning 使用提示編碼器生成虛擬令牌嵌入。在 原始 p 調諧紙 中,提示編碼器只能用于一個任務。我們在我們的 NeMo 實現 因此,提示編碼器可以根據不同任務的名稱進行調整。
訓練提示編碼器時,它將任務名稱映射到一組虛擬令牌嵌入。這使您能夠構建一個嵌入表,該表存儲每個任務的任務名稱和虛擬令牌嵌入之間的映射。使用此嵌入表可以不斷學習新任務,避免災難性遺忘。例如,可以使用任務 A 和 B 啟動 p-tuning 。
訓練后,您可以將任務 A 和 B 的虛擬令牌嵌入保存在表中,并將其凍結。您可以使用另一個新的提示編碼器繼續訓練任務 C 。類似地,在訓練后,將任務 C 的虛擬令牌嵌入保存在提示表中。在推理過程中,該模型可以查找提示表,并為不同的任務使用正確的虛擬令牌嵌入。
除了持續學習能力外, p-tuning 的 modified version 還有幾個其他優點。首先,我們的實現引出了質量模型預測。今年早些時候,我們在 GTC 2022 年關于使用 P-tuning 可以顯著提高大型非線性規劃模型的性能 的會議上,展示了 p- 調優有助于實現下游非線性規劃任務的最先進精度。
其次, p- 調優只需要幾個標記的數據點就可以給出合理的結果。例如,對于 FIQA 情緒分析任務 ,它使用了 1000 個數據示例來實現 92% 的準確性。
第三,原始文件中描述的 p- 調優,在我們的具體實現中更是如此,是極其高效的參數。在 p- 調整期間,參數等于原始 GPT 模型參數的一小部分的 LSTM 被調整,而 GPT 模型權重保持不變。在訓練結束時,可以丟棄 LSTM 網絡,只需要保存虛擬提示本身。這意味著在推理過程中必須存儲和使用總計小于 GPT 模型大小約 0.01% 的參數,以實現與零次和少次推理相比顯著提高的任務性能。
第四, p-tuning 在訓練期間也更節省資源。凍結 GPT 模型意味著我們不必為這些模型參數存儲優化器狀態,也不必花時間更新 GPT 模型權重。這節省了大量 GPU 內存。
最后,虛擬提示令牌參數與 GPT 模型解耦。這使得能夠分發小型虛擬令牌參數文件,這些文件可以插入共享訪問 GPT 模型,而不需要共享更新的 GPT 模型權重,這是微調 GPT 模型時所需要的。
創建瑞典下游任務數據集
為了將 p-tuning 應用于非英語下游任務,我們在目標語言中標記了數據。由于有大量的英文標簽下游任務數據,我們使用機器翻譯模型將這些英文標簽數據翻譯成目標低資源語言。在這篇文章中,我們將英文數據翻譯成瑞典語。由于 p-tuning 的低標記數據要求,我們不需要翻譯很多標記數據點。
為了完全控制翻譯模型,我們選擇使用從頭開始訓練的內部翻譯模型。該模型采用英語到瑞典語/挪威語(一對多)的方向,使用 NeMo NMT 工具包。 訓練數據(平行語料庫)來自 Opus 。英語到瑞典語的翻譯質量由母語為英語和瑞典語的人手動評估。
我們還使用了其他翻譯模型來幫助檢查我們的翻譯模型的質量。我們翻譯了一些來自原始英語基準數據的隨機樣本,并手動檢查了其他模型翻譯與我們自己的模型翻譯的質量。我們使用了 deepL 、 谷歌翻譯 API 和 DeepTranslator 。
除了一些時鐘和時間系統錯誤外,整體翻譯質量足夠好,我們可以繼續將英語標記的數據轉換為瑞典語。隨著我們的 NeMo 非負矩陣變換英語 – 瑞典語翻譯模型的訓練和驗證完成,我們使用該模型翻譯了兩個英語基準數據集:
財務情緒分析 ( FIQA )
Assistant Benchmarking (助手)
為了方便起見,我們使用 svFIQA 和 svAssistant 來區分原始英語和翻譯后的瑞典基準數據集。
以下是分別從 FIQA 和 svFIQA 中隨機選取的培訓記錄示例:
英語:
{"taskname": "sentiment-task", "sentence": "Barclays PLC & Lloyds Banking Group PLC Are The 2 Banks I'd Buy Today. Sentiment for Lloyds ", "label": "positive"}
瑞典的:
{"taskname": "sentiment-task", "sentence": "Barclays PLC & Lloyds Banking Group PLC ?r de 2 banker jag skulle k?pa idag.. K?nslor f?r Lloyds", "label": "positiva"}
翻譯后的數據集應保留實際英語源數據的正確語法結構。因為情緒指的是兩家銀行,所以是復數。翻譯成瑞典語的地面實況標簽也應反映正確的瑞典語語法,即“ positiva ”。
為了完整性起見,我們還從 Assistant 和 svAssistant 中隨機選擇了一個示例:
英語:
{"taskname": "intent_and_slot", "utterance": "will you please get the coffee machine to make some coffee", "label": "\nIntent: iot_coffee\nSlots: device_type(coffee machine)"}
瑞典的:
{"taskname": "intent_and_slot", "utterance": "kommer du sn?lla f? kaffemaskinen f?r att g?ra lite kaffe", "label": "Intent: iot _ kaffe Slots: enhet _ typ (kaffemaskin)"}
GPT 模型
以下實驗中使用的瑞典 GPT-SW3 檢查點是瑞典 AI 和 NVIDIA 合作的結果。更具體地說, AI 瑞典的 GPT-SW3 檢查點具有 36 億個參數,使用威震天 LM 進行預訓練。該模型用于進行本文所述的瑞典多任務 p- 調整實驗。
多任務 p- 調諧實驗
為了模擬典型的企業客戶用例,我們設想了一個場景,其中用戶首先需要高精度地解決情感分析非線性規劃任務。隨后,隨著業務的發展,用戶需要繼續使用相同的模型解決虛擬助理任務,以降低成本。
我們在瑞典語的連續學習設置中運行了兩次 p-tuning 。我們將 svFIQA 數據集用于第一個自然語言處理任務。然后,我們將 svAssistant 數據集用于第二個 NLP 任務。
我們可以同時對這兩個任務進行 p-tuned 。然而,我們選擇連續進行兩輪 p 調整,以展示 NeMo 中的連續快速學習能力。
我們首先使用該 p-tuning 教程筆記本 的稍微修改版本,對 svFIQA 和 svAssistant 進行了一系列短期超參數調優實驗。在這些實驗中,我們確定了每個任務的最佳虛擬令牌數量和最佳虛擬令牌放置。
為了在文本提示中操作虛擬令牌的總數及其位置,我們在 p-tuning 模型的訓練配置文件中修改了以下sentiment任務模板。
"taskname": "sentiment", "prompt_template": "<|VIRTUAL_PROMPT_0|> {sentence} <|VIRTUAL_PROMPT_1|>sentiment:{label}", "total_virtual_tokens": 16, "virtual_token_splits": [10,6], "truncate_field": None, "answer_only_loss": True, "answer_field": "label",
此提示模板是特定于語言的。除了虛擬令牌的位置和使用的虛擬令牌的數量外,將每個提示模板中的單詞翻譯成目標語言也很重要。在這里,術語“情緒”(添加在最終虛擬提示令牌和標簽之間)應翻譯成瑞典語。
在我們的實驗中,我們使用了 10 倍交叉驗證來計算性能指標。在我們的超參數搜索過程中,我們對瑞典 GPT-SW3 模型進行了第一次 p- 調優,直到驗證損失在 10-20 個階段后趨于穩定。
在以這種方式進行了幾輪實驗后,我們決定對 svFIQA 數據集的所有 10 倍使用以下模板:
"taskname": "sentiment-task", "prompt_template": "<|VIRTUAL_PROMPT_0|> {sentence}:{label}", "total_virtual_tokens": 10, "virtual_token_splits": [10], "truncate_field": None, "answer_only_loss": True, "answer_field": "label",
術語“情緒”從提示模板中刪除,而是直接包含在提示的{sentence}
部分。這使我們能夠輕松地將“感悟”與英語句子的其余部分一起翻譯成瑞典語:
{"taskname": "sentiment-task", "sentence": "Barclays PLC & Lloyds Banking Group PLC ?r de 2 banker jag skulle k?pa idag.. K?nslor f?r Lloyds", "label": "positiva"}
在找到最佳訓練配置后,我們在 10 個 svFIQA 折疊中的每個折疊上對瑞典 GPT-SW3 模型進行了 p- 調優。我們評估了對應測試分割上每個折疊的 p- 調整檢查點。通過對 svAssistant 數據集重復相同的步驟,我們向 GPT-SW3 模型中添加了意向和時隙預測功能,這次恢復了在 svFIQA 上訓練的檢查點,并添加了意向和時隙任務。
后果
為了建立一個基線,并且由于在這種情況下沒有瑞典現有的基準,我們使用原始 AI 瑞典 GPT-SW3 模型的零、一和少數鏡頭學習性能作為基線。
可以看出,除了零炮外, svFIQA 上的少數炮學習性能為 42-52% 。可以理解,由于 GPT 模型接收到零標記示例,零炮的性能明顯較差。該模型生成的令牌很可能與給定任務無關。
考慮到情緒分析任務的二元性,在計算任務準確性之前,我們將單詞“ positive ”和“ negative ”的所有瑞典語法變體映射到相同的格式。
通過這種重映射機制,我們取得了相當好的結果: 82.65% 。 svFIQA 測試中的 p- 調諧性能在所有 10 倍中取平均值。
表 2 顯示了 svAssistant 數據集(意向和時隙分類)上第二輪 p 調整的結果。所有 10 倍的分數也取平均值。
接下來,我們進一步探討了這個問題, “ 在不降低性能的情況下,我們可以減少多少訓練數據總量? ”
對于 svFIQA 數據集,我們發現我們可以在每次訓練運行中只獲得十分之一的訓練數據,并且仍然保持可接受的性能。然而,從 5% 的訓練數據開始(只有 47 個訓練數據點),我們開始看到性能急劇下降,性能在 1% 左右變得不穩定(只有 9 個訓練數據點,平均 6 次訓練,每個訓練有 9 個隨機采樣的數據點)。
今后的工作
我們注意到,可以改進意向和時隙分類的結果。它們在很大程度上依賴于翻譯模型將非自然文本從英語翻譯為瑞典語的能力。在下面的示例中,英語意圖和時隙提示格式對于翻譯模型來說很難準確翻譯,從而影響了瑞典語翻譯的質量。
英文標簽為“意圖: alarm \ u set Slots : date ( sunday ), 時間(上午八點)” 。
當它被翻譯成瑞典語時,它變成了 “時間(上午八點)” 。
翻譯模型完全跳過了“意圖”和“槽:”這兩個詞。它還刪除了 intent 中alarm_set和插槽中date(sunday)的翻譯。
未來,我們將把源語言數據表述為自然語言,然后再將其翻譯成目標語言。我們還嘗試了一種預訓練的 mT5 模型,該模型可以完全跳過翻譯步驟。早期的結果是有希望的,所以請關注完整的結果。
最后,我們還計劃將快速學習方法與基本 GPT 模型的完全微調進行比較。這將使我們能夠比較兩種任務適應方法之間的權衡。
結論
在這篇文章中,我們展示了一種參數高效的解決方案,可以在低資源語言環境中解決多個自然語言處理任務。針對瑞典語,我們將英語情感分類和意圖/時隙分類數據集翻譯成瑞典語。然后,我們在這些數據集上對瑞典 GPT-SW3 模型進行了 p- 調優,與我們的幾個快照學習基線相比,取得了良好的性能。
我們表明,我們的方法可以幫助您訓練提示編碼器,只需將原始訓練數據的十分之一調整到模型原始參數的 0.1% 以下,同時仍能保持性能。
由于 LLM 在訓練過程中被凍結, p-tuning 需要更少的資源,整個訓練過程可以高效快速地完成,這使得任何人都可以訪問 LLM 。您可以帶上自己的數據,并根據自己的用例調整模型。
在我們的 NeMo p- 調諧實現中,我們還簡化了輕量級的連續學習。您可以使用我們的方法不斷學習和部署新任務,而不會降低以前添加的任務的性能。
關于作者
Virginia Adams 是一位深度學習應用科學家,與 NVIDIA 對話人工智能團隊( NeMo )合作開發自然語言處理應用程序。 2018 年,她獲得了麻省理工學院中文系計算機科學學士學位。她在深度學習領域有四年的專業經驗,目前正在斯坦福大學攻讀計算機科學碩士學位。在工作之外,你可以看到維吉尼亞在讀科幻小說,嘗試新的運動。
Zenodia Charpy 是高級深度學習解決方案架構師,專注于應用自然語言處理和深度學習技術來應對非英語和低資源語言的挑戰,例如瑞典語、丹麥語和挪威語。作為一名數據科學家,她在解決現實世界問題、構建端到端解決方案方面擁有八年的豐富經驗,她既是一名內部數據科學家,也是一名數據科學顧問。在空閑時間,她喜歡在森林里散步或跑步,做瑜伽。
Yi Dong 是 NVIDIA 的深度學習解決方案架構師,負責提供金融服務業人工智能解決方案。易建聯獲得了博士學位。來自約翰·霍普金斯大學醫學院,研究計算神經科學。易在計算機軟件工程、機器學習和金融領域擁有 10 年的工作經驗。易建聯喜歡閱讀深度學習的最新進展,并將其應用于解決財務問題。
審核編輯:郭婷
-
編碼器
+關注
關注
45文章
3646瀏覽量
134639 -
NVIDIA
+關注
關注
14文章
4994瀏覽量
103152 -
nlp
+關注
關注
1文章
489瀏覽量
22049
發布評論請先 登錄
相關推薦
評論