作者:查爾斯·福斯特
在 Finetune,我們正在構建人工智慧解決方案,以應對教育科技中的一些最具挑戰性的問題,包括自動內容生成和基於 AI 的學習資源分類及推薦。因為我們的工具必須處理的主題範圍從 K-12 到勞動力發展,我們正在重金投資於可以讓我們擴大模型涵蓋範圍和深度的方法。這種方法的關鍵組成部分是靈活的訓練專門神經網絡的方法,適用於通用模型不足的領域。在這篇博文中,我想分享我們探索這些方法的一些旅程。
微調
神經語言模型的典型微調涉及同時優化所有可訓練參數,對於像 GPT-J 這樣的網絡,這可能會達到數十億。在這樣的規模下,微調和推理過程都不是小事,使得這些模型的廣泛部署變得困難。在我們自己的調查中,幾個關鍵問題似乎最引人注目:
- 僅僅運行這些 變壓器模型 已經面臨 GPU 記憶體(VRAM)的極限,而在微調期間,優化的參數數量與所需的額外記憶體量之間存在直接關係。
- 通過修改網絡中的所有參數,預訓練期間學到的信息流可能會受到干擾,導致遺忘和失去少量樣本能力。
- 為每個用例提供自定義的多千兆字節模型會產生無法接受的延遲和成本負擔。
這些綜合考慮促使我們探索來自最近文獻的其他方法來調整我們的神經語言模型。幸運的是,在過去的一年中,自然語言處理研究領域已經開發出一系列方法,以降低定制預訓練語言模型行為的成本。
提示調整
我們最初採用的方法稱為 提示調整 或 軟提示(Lester 等,2021)。在這種方法中,預訓練的網絡參數保持不變。相反,我們在輸入提示標記前添加少量可學習的嵌入向量(通常為 10 到 20),並在微調數據集上用通常的語言建模目標調整這些嵌入。這些嵌入不代表語言的標記;我們可以將它們視為一種密集的上下文存儲,網絡可以在進行序列標記預測時根據 注意機制 進行調整。
提示調整對模型只增加少量的運行時成本,因為軟提示的大小在千字節範圍內,可以並行通過網絡運行。這些特性使得它們對於服務許多並發用戶具有吸引力,正如最近在 AI 故事講述 中應用這項技術所顯示的那樣。然而,將軟提示集成到像 HuggingFace 的 變壓器 等流行框架中是複雜的,因為接口主要設計用於操作標記索引序列,而不是密集向量。此外,隨著在軟提示和生成之間添加更多上下文,我們開始看到軟提示上的調整強度和標記上下文之間的不平衡。在運行時靈活添加數百個標記的上下文對我們來說非常重要,因為這為項目創作過程提供了額外的細粒度可控性。如果我們想引導模型專注於教科書特定頁面的內容,或創作閱讀理解項目,或提供少量樣本示例,長格式的上下文化是重要的。
低秩適配器(LoRA)
後來我們轉向了一種稱為 LoRA 或 低秩適配器 的方法(Hu 等,2021)。這項技術是由微軟的研究人員在處理 GPT-3 大小的模型時開發的,並建立在早期適配器方法的基礎上。如果我們將變壓器視為在每個殘差層中逐步細化其標記潛在狀態,那麼適配器的概念就是在給定層中為這些潛在狀態添加一個小的、依賴於輸入的增量(初始化為無操作)。這種微小的推動能夠通過強調與任務相關的輸入部分來調節其下游行為。
低秩適配器是一種針對低秩子空間的適配器,這減少了我們需要訓練的新參數數量(從 D2 到 2 × D × r,其中 D 是以千為單位)。與軟提示一樣,我們保持網絡的原始參數不變,以保留它們在預訓練中所包含的知識,僅調整這些新的適配器參數。在我們的內部測試中,我們從 LoRA 中看到了良好的指標。除了使我們能夠在小硬體預算上調整大型模型外,插入適配器層的模型仍然保留了其原始的少量樣本能力,同時仍然適應目標領域。值得注意的是,將低秩適配器集成到其他框架中是簡單的,因為我們可以根據需要簡單地用線性 + 適配器層替換現有的線性層。
未來展望
為了讓大家了解我們在探索中看到的改進類型,以下我們分享了一小部分使用不同調整方法訓練的模型生成的項目。這些項目都是使用與護理服務交付相關的相同三個輸入提示生成的:第一個專注於優先考慮多個客戶的需求,第二個則是在團隊環境中採取行動。
項目 #1:一位護士正在評估一位預定接受門診手術的客戶。護士接下來會評估以下哪位患者? (A) 一位患有 1 型糖尿病的患者 (B) 一位患有急性胰腺炎的患者 (C) 一位需要靜脈抗生素治療的患者 (D) 一位患有克隆病的患者 項目 #2:一位客戶因充血性心力衰竭被送入醫院。客戶的母親拒絕治療。護士應該採取以下哪項行動? (A) 通知提供者該情況。 (B) 檢查患者的藥物清單。 (C) 檢查客戶的醫療記錄。 (D) 通知客戶的醫生客戶的情況。
項目 #3:一位護士正在評估兒科病房的一位患者。該客戶預定接受包括胸部 X 光檢查在內的診斷檢查。護士應該計劃接下來評估以下哪位患者? (A) 一位患有肺炎並出現發燒的兒童 (B) 一位有皮疹且對藥物無反應的兒童 (C) 一位發燒且體溫 >100.4 的兒童 (D) 一位發燒且有皮疹的兒童 項目 #4:一位腎功能衰竭的客戶在醫院內,並預定接受腎移植。該客戶堅信移植外科醫生不稱職。客戶拒絕允許另一家醫院的醫生進行移植。負責護士應該採取以下哪項行動? (A) 向客戶收集一份聲明,證明移植外科醫生是稱職的,並將其交給移植外科醫生。 (B) 要求客戶提供簽名聲明以支持她的主張。 (C) 聯繫移植外科醫生,了解為什麼客戶拒絕允許另一家醫院的外科醫生進行移植。 (D) 通知移植外科醫生客戶拒絕進行移植。
項目 #5:一位護士計劃將客戶分配到各個床邊站。護士應該將以下哪位客戶分配到離護士站最近的床邊站? (A) 一位懷疑診斷為肺栓塞且需要計算機斷層掃描(CT)的客戶 (B) 一位需要協助排便的客戶 (C) 一位有緊急指示需要胸部 X 光檢查的客戶 (D) 一位因咳嗽需要胸部 X 光檢查的客戶 項目 #6:一位 LPN 正在照顧一位有留置導尿管的客戶,並請求護士幫助她清潔導尿管。護士應該採取以下哪項行動? (A) 向客戶解釋,她需要提供清潔溶液,並需要獲得客戶對該程序的同意。 (B) 請求 LPN 提供幫助。 (C) 提供幫助客戶清潔導尿管。 (D) 向 LPN 保證護士會協助她。
我們可以觀察到,雖然基準模型中最好的項目大體上流利且邏輯上連貫,但它們往往受到約束不足(如 #1)或對護理領域的知識要求非常少(如 #3)。與基準項目相比,提示調整和低秩適配器模型的項目在其刺激、主幹和選項中包含了更多的細節。這些主題與該領域相關,要求在護理服務管理中具備 特定知識,而不僅僅依賴背景知識。此外,低秩適配器模型的項目具有更一致的形式。例如,這些項目始終將“客戶”與“患者”區分開來,這與評估中可能出現的語言相符(比較 #5 與 #1 和 #3)。它還成功地跟踪了情境中多個個體的引用(比較 #6 與 #4)。
對於領域覆蓋、風格一致性和邏輯連貫性的改進可以轉化為神經語言模型實用性的顯著提升。這僅僅是個開始:隨著技術的成熟,會發現更多方法來大規模創建定制、可控的自然語言模型。隨著這些方法的發現,我們將繼續將來自學術界、業界和獨立研究的最佳成果融入 Finetune 產品中。
衷心感謝 Nick Koprowicz、Jesse Hamer、Saad Khan 和 Ogden Morse 在本博文的開發中提供的友善和有幫助的反饋。
參考文獻
Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., … & Chen, W. (2021). Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685.
Lester, B., Al-Rfou, R., & Constant, N. (2021). The power of scale for parameter-efficient prompt tuning. arXiv preprint arXiv:2104.08691.