code window

顯示包含「自注意力」標籤的文章。顯示所有文章
顯示包含「自注意力」標籤的文章。顯示所有文章

2024年5月9日星期四

深層網路的異常低效率

摘要

Meta的FAIR實驗室研究了一個簡單的層剪枝策略,用於流行的開放權重預訓練大型語言模型(LLMs),發現在不同的問答基準上,性能幾乎沒有退化,直到移除很大一部分(高達一半)的層之後才出現退化。為了修剪這些模型,他們先根據不同層之間的相似度來確定要修剪的最佳層區塊;然後,為了 "修復" 損害,他們進行少量的微調。具體而言,他們使用參數高效微調(PEFT)方法,特別是量化和低秩適應器(QLoRA),這樣他們的每個實驗都可以在單個A100 GPU上執行。從實務的角度來看,這些結果表明層修剪方法可以補充其他PEFT策略,一方面進一步減少微調所需的計算資源,另一方面可以改善推論的記憶體和延遲。從科學的角度來看,這些LLMs對刪除層的魯棒性意味著,要麼目前的預訓練方法沒有正確地利用網路深層的參數,要麼淺層在儲存知識方面扮演關鍵角色。

論文參考: https://arxiv.org/pdf/2403.17887

1 介紹 

在過去幾年中,大型語言模型(LLMs)已經從單純的研究成果演變成有用的產品。這種演變在很大程度上可以歸因於用於訓練的資源規模的巨大增長。由於這些模型在訓練完成後可能會在推論模式下看到其總生命週期FLOP的大部分,因此LLM的預訓練不僅需要考慮高效(即計算最優)訓練,還需要推論感知。

那麼已經訓練過的模型呢?除了神經縮放定律所指出的訓練考量之外,還有許多後訓練技術可以用來降低LLMs的微調和推論成本和時間。特別是,量化可以通過減少模型權重的精度來減少模型的記憶體佔用,低秩適應器(LoRA)可以通過只更新模型參數的一小部分來降低微調和自定義的成本,或者修剪可以通過直接消除不必要的參數或連接來減少推論的記憶體佔用和時間。由於這三種策略或多或少是正交的,因此在資源受限的環境中,理想情況下我們希望能夠結合使用這三種後訓練效率技術。朝著這個方向,流行的QLoRA方法引入了一些創新,使得4位元量化的參數和LoRA微調可以一起工作。


基於這種組合,在這項工作中,他們使用開放權重LLMs研究了一種非常簡單的修剪策略。具體而言,他們開發了一種方法,該方法使用不同層之間的表示相似性來識別給定修剪分數的最佳修剪層;然後,在移除這些層之後,他們使用少量微調(使用QLoRA)來"修復"修剪引起的不匹配。他們的主要結果是,他們可以從模型中刪除大量最深層,而對下游性能的影響最小。例如,對於Llama-2-70B,在性能崩潰之前,他們可以消除大約一半的層。他們的策略概述和修剪Llama-2-70B的結果如圖1所示。


修剪不僅有助於減少推論的佔用,而且還有助於了解網路如何使用其參數:如果您可以移除網路的大部分區塊而對其性能影響最小,那麼這些區塊可能並不是很重要。具體而言,他們對刪除層的直覺來自考慮transformer架構的殘差結構。更詳細地說,最終層的輸出可以分解為所有模型層的輸出之和加上嵌入的輸入。如果這樣一個和具有大量獨立項,那麼刪除其中幾項應該不會顯著改變輸出。然而,由於這些項並非獨立——每一層都是下一層的輸入——因此,如果特定層的殘差貢獻很小,我們應該期望能夠刪除這些項。換句話說,如果每一層的輸出在層與層之間的變化不大。


與他們的層修剪一起,他們研究了不同分離下層表示之間的相似性,並廣泛發現,與淺層相比,更深層在質量上更類似於鄰近層(最後一層除外)。這表明了一個更簡單的修剪策略:從倒數第二層開始刪除層,並從深到淺繼續進行,直到刪除所需的層數。在這種情況下,他們發現,在用少量QLoRA微調修復損害之後,他們可以達到與更複雜的基於相似性的層修剪策略幾乎匹配的性能。這種方法的有效性證明了LLMs可能沒有正確利用網路深層中的參數。


總的來說,他們希望你帶走這三個要點:


• 模型的記憶體佔用和推論時間隨著移除的層數線性減少。這使得層修剪成為一個強大的工具,特別是如果模型的性能對刪除層具有魯棒性。

• 所有的效率方法——修剪、PEFT和量化——都可以有效地相互結合。因此,在這項工作中,每個實驗都在單個A100 GPU上執行,開源和學術界都可以輕鬆使用。

• 模型對移除深層的魯棒性、下游知識任務(如MMLU和BoolQ)性能的急劇轉變、以及自回歸損失相對於這些修剪分數的平滑行為,總體上表明淺層可能在儲存知識方面起著關鍵作用。

本文的結構如下。在§2中,他們首先對實際後訓練策略和激發他們工作的深度學習科學調查進行文獻回顧。然後,在§3中,他們直觀地解釋了他們的層修剪策略,並詳細解釋了他們的方法,而在§4中,他們迭代了所有的實驗結果。最後,在§5中,他們通過強調未來工作的方向來總結。具體的模型、微調、數據集和評估細節可以在附錄A中找到,評估消融實驗可以在附錄B中找到。


2 文獻回顧

在本節中,他們回顧了後訓練效率的實用策略,並討論了一些為他們的方法提供動機或洞見的科學研究:在§2.1中,他們首先回顧了修剪的歷史,然後討論了其在LLM中的現代應用;在§2.2中,他們將修剪與蒸餾進行對比,蒸餾是減少LLM參數數量的另一種策略;然後在§2.3中,他們討論了可以與他們的修剪策略結合使用的各種實用的高效微調和推理加速方法;最後在§2.4中,他們重點介紹了一些對LLM的一些深度相關統計特性的科學研究,這些研究與他們的結果相輔相成。


2.1 修剪

修剪是一種通過刪除不必要的參數(單個或成組)來減小已訓練的機器學習模型大小的方法。神經網路的修剪歷史悠久,最初的構想是,非結構化修剪技術通過根據預定義的標準刪除單個參數來稀疏化網路。例如,如果模型的某個參數的值非常小,那麼刪除它(即將其設置為零)可能對性能影響最小。受這一早期工作的啟發,現代研究人員開始探索這種非結構化修剪的不同標準,主要集中在計算機視覺模型上。具體而言開發了一種迭代修剪方法,用於交替修剪和微調網路,以達到更好的壓縮率和性能。

雖然這些模型變得更小了,但它們不一定更有效:通過根據標準刪除單個參數來稀疏化網路會導致不規則或偽隨機的稀疏模式,如果沒有專門為稀疏設計的硬體或庫,就很難加速。為此,開發了結構化修剪技術,以組的形式刪除不相關的參數,例如卷積網路中的特定通道或過濾器。隨著這增加了它們的實用相關性,研究人員開始在計算機視覺和預transformer NLP架構中探索結構化修剪。

隨著語言建模取得了前所未有的進展,最近的工作集中在將結構化修剪方法應用於Transformer。這些研究幾乎考慮了模型架構的每一個可能的組件來進行消除,方法包括丟棄注意力頭、丟棄層、修剪隱藏狀態、秩約簡大權重矩陣、用更小的密集矩陣替換稀疏權重矩陣、以及上述組的許多組合。

在先前也考慮transformer層丟棄的工作中,大多數研究BERT風格的模型,而他們考慮GPT風格的模型,這是用於大規模語言建模和生成的最常見模型。由於其雙向masked語言模型(MLM)目標,BERT風格的模型自然適合於理解任務,而GPT風格的模型由於其自回歸目標而更適合生成。雖然鑑於更強大的GPT風格模型,這種分歷已經受到質疑,但先前的工作發現BERT和GPT模型在單詞的層表示演變方面存在顯著的定性差異。總的來說,這表明層丟棄策略在兩個系列之間的行為會有所不同。

一項針對BERT風格預訓練模型的研究得出結論,最佳的層修剪策略是丟棄最後的層;這部分與他們的結果產生共鳴,儘管相比之下,他們發現(a)對於某些修剪尺寸,保留模型的最後幾層實際上是有益的,而且(b)對於所有修剪尺寸,保留最後一層是必不可少的。此外,雖然作者也研究了不同層之間表示的相似性(如同他們的方法),但他們實際上發現淺層表示之間的相似性高於深層表示,這與他們的結果非常不同。重要的是考慮的模型由幾億個參數組成,這比他們在工作中考慮的模型規模要小得多。也許正因為如此,儘管作者也對修剪後的模型進行了微調,但他們沒有觀察到我們在§4.1中報告的下游精度的急劇轉變。

相比之下,雖然確實考慮了GPT風格的模型,但方法論卻大不相同:(i)他們沒有先進行預訓練,然後使用固定的層丟棄策略,而是在修改後的預訓練過程中增量丟棄層; (ii)作者研究了他們自己的1B以下參數模型,而他們專注於常用和/或微調用於實際應用的現成可用的開放權重的大規模2.7B-70B參數模型系列。

最後,transformer中的層丟棄的系統方法也在wav2vec模型的背景下進行了研究,wav2vec模型是僅編碼器模型,將語音映射到嵌入,參數規模在億級。使用這些模型開發了一種基於層與下游指標相關性的層修剪算法。除了模型架構和領域之外,與他們工作的一個重要區別是考慮了非連續的修剪方案,例如丟棄交替層。他們對層修剪的直覺預測,這不應該同樣有效——至少對於僅解碼器語言模型而言——因為它會在每個移除的層塊處產生多個不匹配。 


2.2 模型蒸餾

另一種完全不同的減少已訓練機器學習模型大小的方法是模型蒸餾,其中知識從大的"教師"模型轉移到更小的"學生"模型通過訓練學生模型以模仿教師模型預測的分佈。其基本見解是,這可以將教師模型的非常通用的知識和能力轉化為更簡潔、壓縮和可能特定於技能的表示。

雖然是一種非常通用的技術,但在語言模型的設置中,蒸餾已經通過以下方式實現:(a)白盒方法,其中學生模型被訓練以模仿教師模型的logits或隱藏狀態;以及(b)黑盒方法,其中學生模型只能訪問教師模型生成的輸出token。後一種方法廣泛涵蓋了學生模型在某種程度上用教師模型增強的文本上訓練的情況,例如通過添加合成標籤、生成高質量的合成文本、提供思路推理(旨在增強學生模型的推理能力)或通過註釋指令來增強學生模型的指令跟隨能力。

與層修剪相比,這些蒸餾方法需要大量計算資源,因為它們依賴於大型教師模型處理大量數據。相比之下,他們基於相似性的修剪策略只需要計算預訓練語料庫的一小部分上不同層之間的相似性,而他們的第二個更簡單的修剪策略只使用修剪後的精簡模型。


2.3 高效微調和推理加速  

作為直接減小模型大小的補充,參數高效微調(PEFT)專注於降低將LLMs專門化到特定任務的成本。具體而言,低秩適應器(LoRA)通過凍結預訓練模型並引入少量額外可訓練權重來減少微調的內存和計算。他們使用其量化版本QLoRA來保持實驗的成本效益。可以與他們工作結合的其他PEFT方法是:在第一種方法中,LoRA矩陣的初始化被調整為量化方案;在第二種方法中,LoRA秩是根據不同LLM模塊自適應選擇的。

為了進一步提高效率,他們可以將層修剪後的模型與進一步加速推理的方法相結合:使用推測解碼,tokens從較小的草稿模型中快速生成,然後由主模型並行評估;使用Medusa,草稿模型被丟棄以換取額外的解碼頭,但最終實現了類似的效果。特別是,在推測解碼設置中,考慮高度壓縮的層修剪模型作為潛在的草稿模型會很有趣。


2.4 深度相關研究的廣度

最後,讓我們重點介紹一些研究LLMs深度相關特性的科學工作。一個相關方向考慮語言模型中知識和語言特性是如何編碼的。一方面分析了事實關聯的存儲和回憶:這些工作強調知識位於中間層或最終層,這對直接編輯或刪除模型的部分事實知識有影響。另一方面,嘗試執行此類編輯的證據表明,信息可能跨層非局部存儲。類似研究了推理過程中處理事實的方式,區分了注意力頭(用於屬性提取)和MLP塊(用於主題豐富)的作用:兩者都分佈在幾個層中。

接下來,在早期的"邏輯鏡頭"之後,發明了一種稱為"調諧鏡頭"的技術,通過使用可學習的仿射變換將中間表示轉換為token分佈來研究預測的軌跡。通過研究這種分佈的層到層動力學,作者注意到它傾向於收斂。這種收斂非常強烈地表明,更深的層可能是可修剪的,而他們必須訓練仿射探測器的事實可能與他們觀察到最後一層不能修剪有關。觀察到只要激活深度超過一半,就可以從在中間激活上訓練的線性探測器確定基礎文本中的地理特徵。

更抽象地發現,激活的稀疏性在網路前向傳遞的大約一半處發生轉變,從稀疏演變為密集。也許與此相關,研究了在微調過程中更新最多的模型權重,發現它們位於中間層。

總的來說,這些深入研究是對他們工作的補充,一方面,提供證據表明刪除LLM最深層不會顯著改變模型的性能,另一方面,表明在刪除大約一半LLM最深層後,性能會出現急劇的修剪轉變。


3 方法

在本節中,他們給出了為什麼他們認為層修剪有效的直覺(§3.1),然後詳細解釋了他們的方法(§3.2)。


3.1 直覺

他們對層丟棄的直覺來自將表示視為層索引的緩慢變化函數。具體而言,transformer的層到層表示演化由殘差迭代方程給出  


$$x^{(\ell+1)} = x^{(\ell)} + f(x^{(\ell)}, \theta^{(\ell)})$$


其中\((x^{(\ell)}, \theta^{(\ell)})\)分別是層\(\ell\)的多維輸入和參數向量,\(f(x, \theta)\)描述了一個多頭自注意力和MLP層塊的變換。像任何殘差網路一樣,如果我們展開這個迭代,我們看到經過\(L\)個總層後,輸出描述為所有層變換之和 


$$x^{(L)} = x^{(0)} + \sum_{\ell=0}^{L-1} f(x^{(\ell)}, \theta^{(\ell)})$$


如果和中的項很多\((L \gg 1)\)且獨立,例如,如果塊函數改為整體輸入的函數\(f(x^{(0)}, \theta^{(\ell)})\),那麼對和式(2)的任何特定貢獻都可能被忽略。

當然,它們根本不是獨立的:如果我們刪除層\(\ell - 1\),那麼我們現在必須將該層的舊輸入\(x^{(\ell-1)}\)連接到層\(\ell\)的塊函數中,如下所示:  


$$x^{(\ell+1)} = x^{(\ell-1)} + f(x^{(\ell-1)}, \theta^{(\ell)})$$


其中,為了清晰起見,儘管刪除了層,我們沒有對層或輸入重新標記。一般來說,原始輸入和新輸入之間的這種不匹配應該對網路造成很大損害。然而,如果在一些初始層之後,表示收斂到關於層索引的緩慢變化函數,


$$x^{(\ell)} \approx x^{(\ell-1)} + \epsilon$$


其中在某種適當意義上\(\epsilon \ll x^{(\ell)}\),那麼刪除特定層\(\ell\)(即,在從(1)到(3)的過程中進行替換\(x^{(\ell)} \to x^{(\ell-1)}\))應該只會將後續層\(x^{(\ell+1)}\)中的表示變化一小部分。類似地,要成功修剪層\(\ell\)之前的\(n\)層,即從\(\ell - n, \ldots, \ell - 1\)開始索引的那些層,我們希望修剪塊的輸入應該與修剪塊的輸出非常相似:


$$x^{(\ell)} \approx x^{(\ell-n)} + \epsilon$$


無論如何,任何層刪除都有級聯效應:由於在修剪後,\(x^{(\ell+1)}\)是由與之前不同的函數計算的,參見(1)與(3)的對比,並且由於\(x^{(\ell+1)}\)直接或間接地輸入到後續層\(\ell + 2, \ldots, L\),刪除淺層應該比刪除深層有更大的影響。

由此,他們有以下假設,他們將通過實驗來驗證:

(0) 我們應該能夠修剪殘差網路的層。

(1) 我們應該在修剪更深層方面獲得更大的成功。  

(2) 我們成功修剪的層塊應該具有與其輸入相似的輸出。


在下一小節§3.2中,他們將解釋修剪算法的細節,在接下來的§4中,他們將呈現支持(0)-(2)點的實驗證據。


3.2 層修剪算法

他們的主要層修剪算法非常簡單:

0. 選擇要修剪的層數\(n\)。

1. 計算層\(\ell\)的輸入\(x^{(\ell)}\)與層\(\ell+n\)的輸入\(x^{(\ell+n)}\)之間的角距離\(d(x^{(\ell)}, x^{(\ell+n)})\),參見下面的(7),在中性預訓練數據集或感興趣的下游任務的代表性數據集上。  

2. 找到使該距離最小化的層$\ell^*$:

$$\ell^*(n) \equiv \arg\min_{\ell} d(x^{(\ell)}, x^{(\ell+n)})$$

3. 丟棄層\(\ell^*\)到\(\ell^*+n-1\);將舊\(\ell^*\)的舊輸入連接到舊的\((\ell^*+n)\)層塊。

4. (可選)在中性預訓練數據集或感興趣的特定數據集上用少量微調來修復層\(\ell^*+n\)處的不匹配。

如果圖中的文字比列表中的文字對你更有幫助,那麼請注意,該算法也描述在圖1的(a)-(b)面板中。

詳細說明進一步說明第一步,單個長度為\(T\)的序列的角距離(7)由下式給出


$$d(x^{(\ell)}, x^{(\ell+n)}) \equiv \frac{1}{\pi} \arccos \left( \frac{x^{(\ell)T} \cdot x^{(\ell+n)T}}{\|x^{(\ell)T}\| \|x^{(\ell+n)T}\|} \right)$$


其中內積是在序列的最後token \(T\)處在模型的隱藏維度上進行的,\(| \cdot |\)表示\(L_2\)範數,而\(1/\pi\)是慣例。然後應該在足夠多的樣本上對這個距離求和,以獲得低波動估計,但總體而言應該非常小。 

詳細說明進一步說明最後一步的"可選性",他們發現,在問答基準上幾乎沒有性能下降,參見圖1(d)和§4.1中的其他,可以通過少量微調擴展到更大的修剪分數。根據資源限制和修剪模型的預期應用,這可能是不必要的。然而,修復過程確實對困惑度有顯著影響,參見圖1(d)和§4.2中的其他。

對於角距離測量和修復,如果最終目標是對下游任務進行監督微調(SFT),那麼在該數據集的樣本上評估距離,然後將修復過程與SFT結合起來可能會很有用。相反,為了獲得最大的通用性,最自然的做法是用近似模型最初預訓練時的統計數據的預訓練數據集來測量距離和修復。

最後,他們還研究了一種更簡單的修剪策略,該策略受到跨不同模型系列分析角距離的啟發:丟棄最深層(不包括LLM頭之前的最後一層),然後像之前一樣通過少量微調來(非可選地)修復損害。為了絕對清晰,這意味著如果我們從一個\(L\)層模型中修剪\(n\)層,那麼我們將刪除從\((L-n)\)到\((L-1)\)的層(包括兩端)。


4 結果

在本節中,他們展示了修剪策略在不同問答(QA)基準上的有效性,並強調了性能中一個穩健的修剪驅動轉變(§4.1),而相比之下,他們發現修復後修剪模型的自回歸困惑度在其轉變點處是連續的(§4.2);然後,在比較不同模型大小和系列之間的相似性統計後(§4.3),他們將主要的基於相似性的修剪策略與更簡單的移除最深層的策略進行對比(§4.4)。



對於實驗,他們修剪了從2.7B到70B參數的各種大規模LLMs,跨越32到80個未修剪層。具體而言,他們使用了Llama-2系列、Qwen系列、Mistral-7B和Phi-2中的模型。對於這些模型,他們使用QLoRA執行"修復"步驟:模型量化為4位精度,然後在Colossal Clean Crawled Corpus(C4)的164M或328M個token上進行微調,這是一個常見的預訓練數據集。因此,他們的每個實驗都在單個A100 GPU上執行。對於QA評估,他們使用了Massive Multitask Language Understanding(MMLU),這是一個常見的世界知識和問題解決基準,以及BoolQ,這是一個常見的是/否閱讀理解基準,其中答案必須從文本本身推斷出來。關於模型、修復過程、數據集選擇和評估細節的具體內容可以在附錄A中找到;不同超參數選擇的評估消融實驗可以在附錄B中找到。


4.1 QA基準的準確性 

他們的第一組結果如圖2所示,其中繪製了5-shot MMLU準確性與移除層的比例的關係:在左面板中,他們展示了Llama-2系列;在中間面板中,他們展示了Qwen系列的模型;在右面板中,他們展示了Mistral-7B和Phi-2。為了更好地比較具有不同總層數的模型,在這些圖中,他們選擇將x軸歸一化為移除層的比例(而不是移除層的絕對數量)。請注意,由於MMLU包含具有四個可能回答的多項選擇問題,隨機猜測的預期準確性為25%。


重要的是,他們觀察到穩健性能的特徵平坦區域,隨後是隨機準確性的急劇轉變,對於Llama-2系列中的模型,修剪分數約為45%-55%,對於Mistral 7B為35%,對於Phi-2為25%,對於Qwen系列的模型為20%。這意味著獲得模型最高分數所需的基本知識不會因大量層移除而丟失——即使這一比例可能相當大(!)——直到最終在特定於模型的臨界閾值處丟失該知識。比較有無修復的曲線,他們看到微調通過更好地保持未修剪的性能並將隨機猜測的相變推到稍大的修剪分數而提供了適度的改進。 


總的來說,他們看到層修剪對於更大和更深的模型(如Llama-2-13B和Llama-2-70B)更加穩健,他們假設這可能與以下事實有關:要麼較小的模型過度訓練,使參數冗餘度降低,要麼更深的模型在絕對意義上可以承受更多層的丟失。此外,Qwen系列很奇怪,他們將在§4.3中進一步詳細說明這一點。




4.2 下一個token預測的損失

在本節中,他們研究了層修剪對預訓練優化目標(即下一個token預測的交叉熵損失)的影響,當在C4驗證數據集的子集上評估時。為了在具有不同大小詞彙表\(V\)的模型之間進行公平比較,他們將損失歸一化為\(\log V\),這對應於以均勻概率隨機採樣token的損失。(有關更多詳細信息,請參閱附錄A.2。)

在圖3中,他們繪製了所有七個模型的歸一化C4驗證損失,在修復後(左面板)和修復前(右面板),作為移除層的比例的函數。在沒有修復的情況下,他們看到每個模型都有一個稍微尖銳的轉變到隨機猜測,大約在QA基準準確性也急劇轉變到隨機猜測的修剪分數處,這表明模型在這一點上已經無可救藥地受損,參見圖2。接下來,對比兩個圖的尺度,他們看到修復顯著恢復了所有模型接近未修剪水平的下一個token預測能力,損失隨著層丟棄緩慢線性增加。最突出的是——從科學角度來看——修復後的連續性通過我們之前發現QA基準有急劇轉變的修剪分數:這種解耦說明了一種使下游任務性能(如MMLU和BoolQ)與連續性能指標(如交叉熵損失)脫鉤(或創造不一致)的方法。


4.3 表示之間的角距離

鑑於角距離在他們的修剪策略中發揮的核心作用,讓我們花一小節來看看這七個模型的這些距離。對於這個分析,每個模型的角距離是在C4驗證集的10k個樣本上平均的。

回想一下之前的圖1(c):對於Llama-2-70B,它繪製了比較第\(\ell\)層和第\((\ell+n)\)層的角距離\(d(x^{(\ell)}, x^{(\ell+n)})\),跨所有初始索引\(\ell\)用於從\(n=1\)到\(n=64\)的塊大小;曲線的最小值\(\ell^*(n)\)給出了給定\(n\)的最佳修剪塊。一種更緊湊的顯示相同數據的方式如圖4的熱圖所示:每個方塊都用顏色表示層\(\ell\)和\(\ell+n\)之間的行歸一化角距離,跨所有可能的\(\ell\)和\(n\),直到總層數的很大一部分;給定塊大小的最佳修剪層\(\ell^*(n)\)對應於每行中的最小距離。 

跨模型,他們得出兩個廣泛的結論:(i)最小距離存在於更深的塊之間,這意味著更深的層通常彼此非常相似,可以更容易地丟棄; (ii)包括最後一層的最深塊的距離具有最大值或接近最大值,這意味著永遠不應該丟棄最後一層。雖然大體上是正確的,但也有一些例外。對於某些模型,例如Phi-2-2.7B,或者對於某些模型中最大的塊,例如Llama-2-7B,最後幾層似乎很重要。如前所述,Qwen系列有點不尋常:在這裡,他們看到淺層塊有一些奇怪的高相似性"島嶼";這可能解釋了圖2中更短的穩健性能區域。




4.4 一個更簡單的修剪策略

受最近結論的啟發,他們嘗試了一個非常簡單的啟發式修剪策略:

(1) 如果從一個\(L\)層模型中修剪\(n\)層,丟棄\((L-n)\)到\((L-1)\)層,以便刪除不包括最後一層的最深塊;  

(2) 然後像之前一樣通過少量微調來修復。

與主要的基於相似性的修剪策略相比,這個更簡單的啟發式算法的優勢在於從未要求從業者將未修剪模型加載到GPU上或進行推理。它還提供了一個有意義的消融實驗,用於優化要修剪的塊的重要性。



在圖5中,他們對比了兩種修剪策略,在修復前(左面板)和修復後(右面板),用於QA基準(MMLU/BoolQ,上/中面板)和自回歸損失(C4驗證,下面板)。一方面,如果不修復修剪造成的損害,簡單的啟發式方法表現非常糟糕:隨著修剪分數的增加,QA基準的準確性迅速下降到(接近)隨機,即使修剪量很小,損失也開始非常迅速地增加。另一方面,在修復後,兩種修剪策略在評估中的結果非常接近:對於QA基準,基於相似性的算法在相變發生之前稍微更好地保持了準確性,儘管簡單算法可能將相變推到稍大的修剪分數;對於損失,曲線幾乎重疊,儘管基於相似性的策略在所有修剪量下都稍微優於簡單策略。這些實驗有力地證明,後修剪微調的目的是修復修剪接口處的損害,而不是獲取額外的知識。

 

5 討論與未來方向 

隨著開放權重LLaMA系列的發布,開源機器學習社區圍繞著讓LLM人人可及的理念團結在一起。這催生了許多圍繞效率的創新,如LoRA和量化(與LoRA),使得大型(接近)最先進的70B模型可以只在單個80GB A100 GPU上進行微調。結合這些其他工具,他們的工作通過一種易於實現的層修剪技術實現了進一步的效率提升。

具體而言,發布版本的Llama-2-70B跨越140 GB內存,每個token消耗大約\(3 \times 10^{10}\) FLOP。通過4位量化和50%的層修剪分數,該模型佔用大約17.5 GB內存,每個token需要大約$1.5 \times 10^{10}$ FLOP:從16位bfloat量化到4位QLoRA精度將模型內存減少4倍,但FLOP基本保持不變,因為計算是以16位精度執行的;層修剪還將根據層修剪分數按比例減少內存和FLOP。這些內存和計算要求使得開放權重最先進模型能夠在消費級GPU上高效運行,甚至無需任何CPU卸載即可進行微調,且只有很小的性能權衡。

在工作結束時,他們留下了以下問題:

• 有哪些更好的層修剪策略?有哪些更好的修復方法?

• 為什麼修復消除了損失中的相變,但沒有消除QA準確性中的相變?

• 使用更全面的評估,不同任務的準確性是否會在不同深度下降?

• 相關地知識通常存儲在淺層或中間層,還是非局部化的?

• 預訓練細節是否會影響修剪能力,例如,基於縮放定律過度訓練或蒸餾的模型是否更難修剪?

• 我們如何使LLM更有效地利用其最深層中的參數? 

其中一些問題將受益於研究不同預訓練檢查點的層相似性和修剪;例如,QA準確性中的急劇相變和臨界深度是在什麼時候出現的,更多的訓練是否會導致更好地使用可修剪參數?其他問題表明需要探索不同的預訓練架構和目標,例如為了更好地利用更深層。通過更全面的評估,如果不同種類的任務在非常不同的深度下降,那麼這可能表明完成這些任務所需的知識存儲在不同的深度。使用修剪來系統地研究這些可解釋性問題將是非常有趣的。

參考文獻(略)

A 實驗細節

在這裡,他們解釋了模型和修復(§A.1)以及評估(§A.2)的各種細節。

A.1 模型和修復細節

本文中的所有模型都使用Hugging Face Trainer API進行微調。模型列表及其在Hugging Face上的路徑如下:



對於修復,他們使用了來自Hugging Face的Colossal Clean Crawled Corpus(C4)版本:data = load_dataset("c4", 'en')。他們如後面段落所述截斷了長樣本,並在可用時添加了特殊token。模型以全局批次大小16進行微調5000步:這對應於每個模型的總微調token為16 × 5000 × [max_seq_length]。他們使用了cosine退火的學習率調度,預熱100步。如果可能,則將峰值學習率設置為模型預訓練的峰值學習率;在實踐中,這意味著除Phi-2(在預訓練期間使用2e-4的峰值LR)、Llama-2-70B(使用3e-5的峰值LR,這是掃描得到的值)和Mistral-7B(使用3e-6的峰值LR,也是掃描得到的值)外,所有模型都使用3e-4的峰值LR進行訓練。所有7B參數或更小的模型都使用2048 token的最大序列長度進行訓練,而所有13B參數或更大的模型都使用4096 token的最大序列長度進行訓練。雖然他們意識到一些模型可能已經在更長的序列上進行了預訓練,例如Qwen-the-outlier,但他們決定在類似大小的模型中保持最大序列長度一致,以便在模型系列之間進行更公平的比較。

除了Hugging Face Trainer API之外,他們還在所有微調中使用了量化和低秩適應器(LoRA):

• 對於量化,他們使用bitsandbytes庫進行QLoRA將模型量化為4位。

• 對於LoRA,他們使用Hugging Face peft庫。他們將LoRA dropout設置為0.05,並將LoRA α保持等於LoRA秩,遵循。除了兩個例外(下面討論),模型都使用LoRA秩64進行訓練。

• 僅將LoRA應用於FFN模塊:

  1. 對於Llama-2和Mistral模型為["gate_proj", "down_proj", "up_proj"],
  2. 對於Phi-2為["fc1", "fc2"],  
  3. 對於Qwen模型為["w1", "w2", "c_proj"]。

這些超參數選擇中絕大多數都是標準的,可以在以前的工作中找到。為了絕對清晰,他們在下面列出了所有模型特定的架構和修復細節:


A.2 評估細節

他們執行了三個主要評估:MMLU的準確性、BoolQ的準確性和C4的損失。

對於MMLU準確性:

• 他們使用來自Hugging Face的cais/mmlu版本的資料集。  

• 他們遵循原始參考文獻中建議的格式,無需進一步的提示工程。

• 對於構建few-shot樣本,他們使用cais/mmlu中的dev集。 

• 對於實驗,他們使用0個few-shot樣本;他們的結果和分析對這種選擇是穩健的,參見圖7。

• 他們報告所有主題的平均準確性。


對於BoolQ準確性:

• 他們使用來自Hugging Face的hassansh/boolq_n_shot版本。

• 對於實驗,他們使用0個few-shot樣本。  

• 完整的BoolQ結果(從正文中截斷)如圖6所示:在左面板中,他們展示Llama-2系列,在中間面板中,他們展示Qwen系列的模型,在右面板中,他們展示Mistral-7B和Phi-2;他們還將沒有修復的實驗設為半透明,以更好地顯示完整的基於相似性的修剪方法的結果。重要的是,雖然他們在這裡看到修復比在圖2的MMLU中發揮了更重要的作用,但在修復後,我們仍然有一個特徵性的穩健性能平坦區域;如前所述,獲得模型最高分數所需的能力不會因大量層修剪而丟失,直到達到特定於模型的臨界閾值。


對於C4驗證損失:

• 他們使用來自Hugging Face的c4版本(即將被棄用,以支持allenai/c4)。

• 由於使用train split進行修復,因此他們在validation split上進行評估。

• 鑑於其大小,他們隨機採樣了60k個序列,並在所有模型中保持固定。

• 在圖3中,他們將損失標準化以便於不同模型系列之間的公平比較,這些模型使用不同的詞彙表大小:為了標準化,他們除以\(\log V\),其中\(V\)是每個模型的詞彙表大小(在§A.1的表格中列出)。這,\(\log V\),自然地設置了給定模型的尺度,對應於均勻採樣token的損失。



B 消融實驗

在這裡,他們詳細說明了各種超參數的消融實驗:提示(§B.1)、微調種子(§B.2)、LoRA秩(§B.3)。定性地說,本文的結果對任何這些參數的變化都非常穩健。

B.1 提示

眾所周知,改變QA評估的提示可以顯著影響結果。為了控制提示,他們在§3.2中描述的主要基於相似性的修剪應用於Llama-2-13B時,對MMLU準確性進行了消融:在圖7的左面板中,他們顯示了改變提示中few-shot樣本順序的結果,在同一圖的右面板中,他們顯示了改變few-shot樣本數量的結果。總的來說,我們看到層修剪方法對這些變化是穩健的。 

B.2 微調種子

在這裡,他們改變微調種子。對於所有實驗,他們使用以下代碼片段來確保可重複性:

SEED_VAL = 0 

transformers.enable_full_determinism(SEED_VAL)


由於從預訓練模型開始,微調種子不會影響初始化,但會影響進一步訓練的隨機方面,如數據順序。為了控制這一點,他們在§3.2中描述的主要基於相似性的修剪應用於Llama-2-13B時,對微調種子進行了消融:在圖8中,我們觀察到層修剪方法對種子選擇是穩健的。




B.3 LoRA秩

在這裡,他們改變用於修復的LoRA秩。不幸的是,他們的計算預算不允許他們在所有實驗配置中進行詳盡的掃描。作為替代,他們採用以下協議進行主要實驗:

• 從秩64開始,遵循QLoRA設置。

• 如果使用該秩進行修復會顯著損害性能(與不修復相比),則為該模型掃描LoRA秩,並根據MMLU準確性選擇性能最佳的LoRA秩用於其他評估。

該協議旨在最大化修復在所有評估中改善性能的機會。為簡單起見,他們使用簡單的修剪啟發式運行此秩選擇協議,Llama-2-70B除外。

在實踐中,這導致他們對每個模型使用秩64,Mistral-7B(秩4)、Llama-2-7B(秩2)和Llama-2-70B(秩8)除外。 (要以表格形式查看相同的信息,請參見§A.1中的第二個表格。)圖9顯示了支持Mistral-7B(左下面板)、Llama-2-7B(中下面板)和Llama-2-70B(右上面板)這些選擇的MMLU準確性掃描:總的來說,雖然LoRA秩對修復模型的定性行為沒有顯著影響,但降低LoRA秩通常會提高性能。在圖9的左上和中上面板中,我們顯示了使用基於相似性的修剪策略對Mistral-7B(上)和Llama-2-7B(中)進行相應的掃描:我們看到,對於這種修剪方法,兩個模型都更加穩健,儘管秩2仍然是Llama-2-7B的最佳表現秩。


LoRA秩下降對MMLU準確性的特徵性改善(即使對於極低的秩(!))值得解釋。一種可能性是,降低LoRA秩可以更好地正則化微調以防止過擬合。特別是,一些敏銳的讀者可能會對§A.1中關於峰值學習率的討論感到驚訝:模型使用預訓練中相同的峰值進行微調;一個"大"的LoRA秩64引入了一些額外的參數,可能會過擬合C4。這種過擬合肯定是有害的,因為我們考慮的模型的實際預訓練數據集(a)我們未知,(b)可能比C4的質量高得多。  

他們直接為Mistral-7B研究了這一點。在圖9的右下面板中,他們繪製了不同LoRA秩的C4驗證損失:我們看到,雖然降低LoRA秩通常會提高MMLU準確性(參見最左面板),但同時它會損害C4驗證損失。這支持了他們的過擬合假設。在未來資源更充足的情況下,通過考慮其他形式的正則化和學習率調整來改善修復過程將會很有趣。

這篇論文研究了一個非常有趣而且實用的問題:如何在不顯著影響性能的情況下修剪大型語言模型的層數,從而減少模型的記憶體佔用和推理延遲。作者提出了一種基於層間表示相似性的啟發式修剪策略,並通過在各種問答任務上的實驗證明了該方法的有效性。


我的閱讀筆記

我認為這項工作有以下幾點意義和啟示:

1. 實用價值。層修剪可以顯著減少模型部署的成本,尤其是在雲端推理等受限資源場景下。該方法與LoRA、量化等其他模型壓縮技術正交,可以協同使用。

2. 理論洞見。作者發現修剪後的模型在QA任務上存在突變點(phase transition),即準確率在某一修剪比例後驟降,而自回歸loss則是平滑變化。這表明QA任務可能主要依賴模型的淺層知識。此外,更深層之間的表示相似性更高,修剪也更魯棒。

3. 簡單有效。基於相似性的啟發式修剪策略已經很有效,而更簡單的從後往前修剪策略也能取得接近的效果。這種簡單性很有吸引力。

4. 擴展空間。在更大的模型、更長序列、更多任務上驗證層修剪效果,以及進一步優化修復方法,都是有趣的未來方向。此外層修剪也為分析知識在網路中的分佈提供了新思路。

不過這項工作也有一些局限性,比如只考慮了GPT類的decoder-only模型,在encoder-decoder模型上效果如何還有待研究。而且修剪比例較大時仍然需要一些微調,並非完全零樣本。

我認為這是一篇兼具實用性和啟發性的好工作,對於降低大模型部署成本和分析語言模型的知識特性都有重要價值。未來進一步擴展層修剪的適用性,并結合知識蒸餾等其他技術,有望進一步提升大模型的效率。

2024年5月2日星期四

基於自我對弈框架的偏好優化演算法SPPO

傳統的從人類反饋中進行強化學習(RLHF)的方法仰賴如Bradley-Terry模型等參數模型,但這樣的模型難以充分捕捉人類偏好中的非遞移性和非理性。最新的研究進展顯示,直接使用偏好機率可以更準確地反映人類偏好,從而實現更靈活、更精確的語言模型對齊。本文提出了一種基於自我對弈的語言模型對齊方法,將問題視為一個常數和的雙人博弈,目的在於找出納什均衡策略。稱為自我對弈偏好優化(SPPO),透過迭代策略更新來逼近納什均衡,並享有理論上的收斂保證。我們的方法可以有效地提高被選擇回應的對數似然,並降低被拒絕回應的對數似然,這是DPO和IPO等對稱成對損失函數無法輕易達成的。在實驗中,僅使用UltraFeedback資料集中的60k個提示(不含回應),不進行任何提示擴增,利用只有0.4B參數的預訓練偏好模型PairRM,SPPO可以通過微調Mistral-7B-Instruct-v0.2,在AlpacaEval 2.0上取得目前最先進的長度控制勝率28.53%,超越了GPT-4-Turbo。它在MT-Bench和Open LLM Leaderboard上也優於(迭代式)DPO和IPO。值得注意的是,SPPO的強大表現是在沒有來自GPT-4或其他更強大語言模型的額外外部監督(例如回應、偏好等)的情況下實現的。

背景

大語言模型(LLM)在生成文本、回答問題和編寫程式碼方面展現了卓越的能力。儘管有了這些進步,但這些模型在需要高度可靠性、安全性和倫理對齊的任務中仍面臨挑戰。為了應對這些挑戰,從人類反饋中進行強化學習(RLHF),也被稱為基於偏好的強化學習(PbRL),是一個很有前景的解決方案。

現有大多數RLHF方法都依賴於顯式或隱式的獎勵模型。以InstructGPT為例,首先建立一個參考策略,通常來自監督式預訓練或基於指示的(監督式)微調。然後通過基於人類偏好反饋資料訓練獎勵模型來獲得顯式獎勵函數,使用Bradley-Terry(BT)模型。隨後,使用近端策略優化(PPO)等強化學習演算法來微調參考LLM,最大化預期獎勵函數。獎勵模型為給定的回應y和提示x提供了一個「獎勵分數」r(y; x),反映了人類如何評價這些回應。最近,DPO等方法被引入,放棄了訓練單獨的獎勵模型,改為使用對數似然比來隱式表示獎勵分數,然後整合到相同的Bradley-Terry模型中直接優化LLM。儘管如此,兩步RLHF演算法和一步直接偏好從根本上都遵循獎勵最大化目標,並由BT模型等參數模型決定。 

參數偏好模型如BT和Thurstone模型為人類偏好提供了合理的近似,但它們未能完全捕捉人類行為的複雜性。這些模型預設了不同選擇之間偏好的單調和遞移關係。然而,經驗證據表明並非如此。Tversky觀察到人類決策可以受到不同因素的影響,並表現出不一致性。這些觀察表明,人類偏好並不總是遵循單一的價值型層次結構,甚至可能看起來不理性。對於LLM,另一個有說服力的證據是Munos等人通過實證表明,直接預測成對偏好可以實現比通過基於BT的獎勵模型預測偏好更高的準確性。 

為解決人類偏好中的不一致性,研究人員提出直接使用偏好機率,並設計演算法,更靈活地表示排序或老虎機設置中的人類偏好。最近,一系列新興工作也提出在通用偏好P(y ≻ y′ |x)的情況下研究RLHF,其中y和y′是兩個不同的回應,x是提示。Munos等人將RLHF定式化為找到(Kullback–Leibler散度正則化的)雙人常數和博弈的納什均衡,其中每個玩家是輸出回應的LLM,旨在最大化其被對手偏好的機率。其中偏好P(y ≻ y′ |x)假設由外部來源給出,如人類標注者或強大的語言模型。他們提出使用在策略鏡像下降演算法近似納什均衡。最近,Swamy等人提出了相同(未正則化)雙人常數和博弈的自我對弈偏好優化(SPO)。他們的演算法旨在通過迭代微調基於上一次迭代的策略生成的數據的策略來識別小最大最優策略(即納什均衡策略)。與該研究的工作不同,他們專注於簡單機器人或遊戲任務中的馬可夫決策過程(MDP),並採用典型的策略優化算法,如PPO或SAC。目前尚不清楚他們的自我對弈框架如何應用於LLM對齊。 

以上提到的大多數工作都考慮從某個參考策略開始的單次優化過程。同樣的過程可以重複多輪,以自我對弈的方式進行。在每一輪中,由上一輪得到的策略生成新的資料;然後這些新資料用於訓練可以超越舊策略的新策略。這種自我對弈微調可以應用於有或沒有人類偏好資料的情況。具體研究表明迭代微調可以顯著改善表現。


論文要點

1. 提出一種基於自我對弈框架的偏好優化演算法SPPO,可以收斂到雙人常數和博弈的納什均衡,並且可以擴展到大規模高效微調大型語言模型。

2. 將SPPO與DPO、IPO等最新方法進行比較,顯示SPPO損失函數可以有效提高被選擇回應的似然,降低被拒絕回應的似然,這是DPO和IPO等對稱成對損失無法輕易做到的。實驗也證實SPPO在各種基準測試中優於迭代式DPO和IPO。  

3. 在實驗中,SPPO在3次迭代後顯著提升了基礎模型Mistral-7B-Instruct-v0.2,在AlpacaEval 2.0測試集上對GPT-4-Turbo的長度控制勝率提升超過11%。此外,SPPO在MT-Bench、Open LLM Leaderboard等不同任務上展現出強大的通才能力。值得注意的是,SPPO的強大表現僅使用了UltraFeedback資料集中60k個提示(無回應),未使用來自GPT-4或其他更強語言模型的外部監督。


研究方法

本文提出的自我對弈偏好優化(SPPO)算法源於以下理論框架:建立一個迭代框架,可以在時間平均意義上漸進收斂到最優策略。初始有一個基礎策略,通常來自某些監督式微調模型。在每一輪中,更新的策略是根據當前策略以乘性權重更新得到的。具體而言,如果一個回應相對於當前策略有更高的平均優勢,則它應該有更高的概率權重。從理論上證明,使用適當選擇的參數和足夠多的訓練步數,該方法的混合策略可以逼近納什均衡。 

作者接著提出SPPO演算法。在每一輪t中,算法首先根據當前策略πt為每個提示x生成K個回應。然後,偏好預測模型P被用於計算這K個回應之間的勝率。接下來,根據某些標準確定哪些回應應該保留在構建的數據集Dt中,並構建提示-回應-機率三元組。一個直接的設計選擇是將所有K個回應納入Dt,每個回應yi相對於πt的勝率bP(yi≻ πt|x)通過將yi與所有K個回應進行比較來估計,總共需要O(K2)次查詢。最後,算法將在數據集Dt上優化基於均方差的損失函數。

實驗中,作者比較了SPPO與DPO、IPO、KTO等方法。結果表明,SPPO損失函數可以有效提高被選擇回應的對數似然,並降低被拒絕回應的對數似然,而DPO和IPO等對稱成對損失無法輕易做到這一點。實驗還證實,SPPO在各種基準測試上優於迭代式DPO和IPO。

實驗設置方面,作者採用與Snorkel相同的設置,使用Mistral-7B-Instruct-v0.2作為基礎模型,Ultrafeedback作為提示來源。對比方法包括原始的Mistral-7B、Snorkel、DPO、IPO等。評估基準包括AlpacaEval 2.0、MT-Bench和Open LLM Leaderboard。作者還研究了估計勝率時使用不同批量大小的影響。

自我對弈偏好優化(SPPO)  

在本節介紹源於以下理論框架的自我對弈偏好優化(SPPO)演算法。

理論框架

已有知名的演算法可以近似求解常數和雙人博弈中的納什均衡。在本文中遵循Freund和Schapire(1999)的做法,建立一個迭代框架,可以在時間平均意義上漸進收斂到最優策略。從概念上求解雙人博弈的理論框架開始:

$$\pi_{t+1}(y|x) \propto \pi_t(y|x) \exp(\eta P(y \succ \pi_t|x)), \text{ 對於 } t = 1, 2, \ldots.\tag{4.1}$$

(4.1)式是一個迭代框架,依賴於每輪 \(t\) 中的乘性權重更新,並具有清晰的結構。最初,有一個基礎策略 \(\pi_1\),通常來自某個監督式微調模型。在每一輪中,更新的策略 \(\pi_{t+1}\) 是根據參考策略 \(\pi_t\),遵循乘性權重更新得到的。更具體地說,如果一個回應 \(y\) 相對於當前策略 \(\pi_t\) 具有更高的平均優勢,那麼它應該具有更高的機率權重。

(4.1)式可以寫成等價:

$$\pi_{t+1}(y|x) = \frac{\pi_t(y|x) \exp \big(\eta P(y \succ \pi_t|x)\big)}{Z_{\pi_t}(x)}, \tag{4.2}$$

其中 \(Z_{\pi_t}(x) = \sum_y \pi_t(y|x) \exp \big(\eta P(y \succ \pi_t|x)\big)\) 是正規化因子(又稱配分函數)。對於任意固定的 \(x\) 和 \(y\),理想的更新策略 \(\pi_{t+1}\) 應滿足以下方程:

$$\log\left(\frac{\pi_{t+1}(y|x)}{\pi_t(y|x)}\right) = \eta \cdot P(y \succ \pi_t|x) - \log Z_{\pi_t}(x). \tag{4.3}$$

與DPO或IPO中透過在 \(y\) 和 \(y'\) 之間微分(4.3)式來抵消 \(\log Z_{\pi_t}(x)\) 這個對數正規化因子的成對設計不同,選擇直接在 \(L_2\) 距離意義下近似(4.3)式:

\(\pi_{t+1} = \arg\min_\pi \mathbb{E}_{x \sim \mathcal{X}, y \sim \pi_t(\cdot|x)}\left[\left(\log\left(\frac{\pi(y|x)}{\pi_t(y|x)}\right) - \big(\eta P(y \succ \pi_t|x) - \log Z_{\pi_t}(x)\big)\right)^2\right]. \tag{4.4}\)

機率估計

優化目標(4.4)可以用有限樣本近似。選擇對每個提示 \(x\)抽取 \(K\) 個回應 \(y_1, y_2, \ldots, y_K \sim \pi_t(\cdot|x)\),並將經驗分布表示為 \(\hat{\pi}_t^K\)。有限樣本優化問題可以近似為

\(\pi_{t+1} = \arg\min_\pi \mathbb{E}_{x \sim \mathcal{X}, y \sim \pi_t(\cdot|x)}\left[\left(\log\left(\frac{\pi(y|x)}{\pi_t(y|x)}\right) - \big(\eta P(y \succ \hat{\pi}_t^K|x) - \log Z_{\hat{\pi}_t^K}(x)\big)\right)^2\right]. \tag{4.5}\)   

具體而言,\(P(y \succ \hat{\pi}_t^K|x) = \frac{1}{K}\sum_{k=1}^K P(y \succ y_k|x)\) 且 \(Z_{\hat{\pi}_t^K}(x) = \mathbb{E}_{y \sim \pi_t(\cdot|x)}[\exp (\eta P(y \succ \hat{\pi}_t^K|x))]\)。\(Z_{\hat{\pi}_t^K}(x)\) 被視為一個期望,可以進一步用 \(B\) 個新樣本估計,總共需要 \(O(KB)\) 次查詢偏好預測模型 \(P\)。(4.5)是一個高效可行的優化問題。非正式地說,當 \(K \to \infty\) 時,(4.5)將恢復(4.4)。對(4.4)的收斂性有以下保證:

定理4.1.  假設優化問題(4.4)是可實現的。將通過(4.4)獲得的策略表示為 \(\pi_t\),將混合策略表示為 \(\bar{\pi}_T = \frac{1}{T}\sum_{t=1}^T \pi_t\)。通過設置 \(\eta = \Theta(1/\sqrt{T})\),有

$$\max_\pi\big[P(\pi \succ \bar{\pi}_T)\big] - \min_\pi\big[P(\pi \prec \bar{\pi}_T)\big] = O(1/\sqrt{T}).$$

定理4.1刻畫了在時間期望 \(T\) 內平均策略朝向納什均衡收斂的速率,體現在對偶差距(duality gap)上。該證明基於Freund和Schapire(1999)中的定理1,略作修改。為了完整性,將證明包含在附錄A中。

另一方面,可以避免估計 \(\log Z_{\hat{\pi}_t^K}(x)\),只需在(4.5)中將其替換為 \(\eta/2\),從而得到一個更清晰的目標函數:

$$\pi_{t+1} = \arg\min_\pi \mathbb{E}_{x \sim \mathcal{X}, y \sim \pi_t(\cdot|x)}\left[\left(\log\left(\frac{\pi(y|x)}{\pi_t(y|x)}\right) - \eta\left(P(y \succ \hat{\pi}_t^K|x) - \frac{1}{2}\right)\right)^2\right]. \tag{4.6}$$

直觀地說,如果出現平局(即\(P(y \succ \hat{\pi}_t^K|x) = 1/2\)),希望模型在 \(y\) 處不更新權重。如果\(y\) 平均而言優於 \(\hat{\pi}_t^K\)(即 \(P(y \succ \hat{\pi}_t^K|x) > 1/2\)),那麼增加 \(y\)處的機率密度以利用 \(y\) 相對於 \(\hat{\pi}_t^K\) 的優勢。在實驗中,選擇最小化目標函數(4.6)。

SPPO演算法

基於上述理論框架,在演算法1中提出了自我對弈偏好優化(Self-Play Preference Optimization)演算法。在每一輪 \(t\) 中,演算法1首先根據 \(\pi_t(\cdot|x)\) 為每個提示 \(x\) 生成 \(K\) 個回應 \(y_1, y_2, \ldots, y_K\)(第3行)。然後,查詢偏好預測模型 \(P\) 以計算 \(K\) 個回應之間的勝率(第4行)。在第5行,可以應用某些標準來確定哪些回應應該保留在構建的資料集 \(D_t\) 中,並構造提示-回應-機率三元組 \((x, y, \hat{P}(y \succ \pi_t|x))\)。將在下節中討論設計選擇。一個直接的設計選擇是將所有 \(K\) 個回應納入 \(D_t\),並通過將 \(y_i\) 與所有 \(K\) 個回應進行比較來估計每個 \(\hat{P}(y_i \succ \pi_t|x)\)。總共將進行 \(O(K^2)\) 次查詢。然後,該演算法將在資料集 \(D_t\) 上優化(4.6)(第6行)。

與DPO、IPO和KTO的比較

在實踐中,利用包含超過2個回應的小批量來估計給定回應的勝率,而DPO和IPO損失函數僅關注一對回應。當只有一對回應 \(y_w\) 和 \(y_l\) 可用時,基於偏好三元組 \((x, y_w, y_l)\) 定義對稱的成對損失:

\(\ell_{\text{SPPO}}(x, y_w, y_l; \theta; \pi_{\text{ref}}) := \left(\log\left(\frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)}\right) - \eta\left(P(y_w \succ y_l|x) - \frac{1}{2}\right)\right)^2 + \left(\log\left(\frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right) - \eta\left(P(y_w \prec y_l|x) - \frac{1}{2}\right)\right)^2, \tag{4.8}\)

其中 \(P(y_w \succ y_l|x)\) 可以是 \([0,1]\) 範圍內的軟機率,也可以是指示 \(y_w \succ y_l\) 的硬標籤 \(1\)。

現在將SPPO損失與其他基準進行比較。為了便於比較,令

$$a = \beta \log\left(\frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)}\right), \quad b = \beta \log\left(\frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right), \quad c = \beta \text{KL}(\pi_\theta \parallel \pi_{\text{ref}}),$$

那麼我們有

$$\ell_{\text{DPO}}(y_w, y_l, x) = -\log \sigma(a-b), \tag{4.9}$$

$$\ell_{\text{IPO}}(y_w, y_l, x) = [(a-b)-1]^2, \tag{4.10}$$

$$\ell_{\text{KTO}}(y_w, y_l, x) = \sigma(-a+c) + \sigma(b-c) \text{ (simplified)}, \tag{4.11}$$ 

其中 \(\sigma(x) = \frac{e^x}{e^x+1}\),而SPPO損失可以寫成

$$\ell_{\text{SPPO}}(y_w, y_l, x) = (a - 1/2)^2 + (b + 1/2)^2.$$

可以看出,SPPO不僅推動 \(a\) 和 \(b\) 之間的差距為1,還試圖將 \(a\) 的值推近 \(1/2\),將 \(b\) 的值推近 \(-1/2\),使得 \(\pi_\theta(y_w|x) > \pi_{\text{ref}}(y_w|x)\) 且 \(\pi_\theta(y_l|x) < \pi_{\text{ref}}(y_l|x)\)。這一點特別重要:當有大量偏好對時,DPO和IPO可以確保策略收斂到目標策略,但當偏好對稀疏時(例如,每個提示只有一對),無法保證勝者 \(a\) 的估計獎勵會增加,輸者 \(b\) 的估計獎勵會減少。相反,只有勝者和輸者之間的獎勵差距(即 \(a-b\))會增加。Pal等人(2024)觀察到這種現象,即DPO只會使輸者的似然變小,但勝者的似然幾乎不變。

將 \(\beta \log\left(\frac{\pi_{t+1}(y|x)}{\pi_t(y|x)}\right)\) 直接擬合到 \(P(y \succ \pi_t|x) - 1/2\) 比IPO更直接,IPO試圖將 \(\beta \log\left(\frac{\pi_{t+1}(y_w|x)}{\pi_t(y_w|x)}\right) - \beta \log\left(\frac{\pi_{t+1}(y_l|x)}{\pi_t(y_l|x)}\right)\) 擬合到 \(P(y_w \succ \pi_t|x) - P(y_l \succ \pi_t|x)\)。此外,SPPO與KTO有相似之處。KTO損失通過最小化\(\sigma(-a+c)\) 推動 \(a\) 變大,通過最小化 \(\sigma(b-c)\) 推動 \(b\) 變小。相比之下,SPPO將 \(a\) 推到 \(1/2\),將 \(b\) 推到 \(-1/2\)。 

另一方面,該研究指出,雖然DPO和KTO可以擴展到迭代變體,但它們本質上不是迭代算法,也沒有可證明的保證能夠達到納什均衡。相比之下,SPPO和IPO在設計上能夠迭代求解納什均衡。SPPO優於IPO,因為其設計明確緩解了資料稀疏問題,如上所述。


實驗設置

基礎模型和資料集

該研究遵循Snorkel的實驗設置,該模型利用迭代DPO在AlpacaEval基準測試上達到最先進的性能。使用Mistral-7B-Instruct-v0.2作為基礎模型。Mistral-7B-Instruct-v0.2是Mistral-7B-v0.2模型的指令微調版本。還採用Ultrafeedback作為提示來源,其中包括來自不同資源的大約6萬個提示。在生成過程中,遵循Mistral-7B的標準聊天模板。為了避免微調期間的過擬合,將資料集分成三部分,每次迭代只使用一部分。訓練Snorkel-Mistral-PairRM-DPO模型(Snorkel)時也採用了這些設置。為了公平比較,遵循Snorkel中的拆分方式。

偏好模型

採用PairRM,這是一個高效的成對偏好模型,大小為0.4B。PairRM基於DeBERTA-V3,在高質量的人類偏好資料集上進行訓練。在Auto-J成對資料集等基準測試的結果表明,它優於大多數基於語言模型的獎勵模型,並與更大的獎勵模型(如UltraRM-13B)性能相當。為了在準確性和效率之間取得平衡,實驗遵循Snorkel,將PairRM作為排名模型。

PairRM將輸出一個"相對獎勵" \(s(y,y';x)\)$,反映 \(y\) 和 \(y'\) 之間的強度差異,即

$$P(y \succ y'|x) = \frac{\exp(s(y,y';x))}{1+\exp(s(y,y';x))}.$$

與基於Bradley-Terry的獎勵模型不同,PairRM只分配相對獎勵,不保證具有遞移性(即 \(s(y_1,y_2;x) + s(y_2,y_3;x) \neq s(y_1,y_3;x)\))。因此,它實際上對一般偏好進行建模。

回應生成和選擇

在每次迭代的生成階段,使用 \(\text{top }p=1.0\) 和 \(\text{temperature }1.0\) 從當前策略中抽樣。使用不同的隨機種子為每個提示獲得 \(K=5\) 個不同的回應。之前利用迭代DPO的工作為每個提示選擇2個回應以形成一對。為了公平比較,不將所有 \(K=5\) 個回應納入偏好數據,而是從中選擇兩個回應。遵循Snorkel,選擇具有最高和最低PairRM分數的回應作為贏家 \(y_w\)和輸家 \(y_l\),對於每個回應 \(y_i\),PairRM分數定義為:

$$s_{\text{PairRM}}(y_i;x) := \frac{1}{K}\sum_{k=1}^K s(y_i, y_k; x).$$

概率估計

然後,通過對所有抽樣回應的平均勝率來估計相對於分布的勝率,如(4.5)中所述:

$$\hat{P}(y_i \succ \pi_t|x_i) = \frac{1}{K}\sum_{k=1}^K P(y_i \succ y_k|x), \quad \forall i \in [K].$$

超參數調整

實驗在8個Nvidia A100 GPU上進行。對於SPPO,總共訓練了三次迭代。在每次迭代中,選擇在UltraFeedback的前2萬個提示的第一個epoch上訓練的模型進入下一次迭代。全局訓練批量大小設置為64,η設置為1e3。學習率計劃由以下超參數決定:learning rate=5.0e-7,總訓練epoch數=18,warmup ratio=0.1,線性計劃。每個模型的最佳超參數是通過在Ultrafeedback的hold-out子集上使用PairRM判斷的平均勝率作為指標來選擇的。有關使用PairRM作為判斷的勝率比較的更多詳情,請參閱圖3。

基準方法

評估以下基礎模型以及用於微調LLM的基準方法:

  • Mistral-7B-Instruct-v0.2:Mistral-7B-Instruct-v0.2是Mistral-7B-v0.2模型的指令微調版本。它是算法的起點。
  • Snorkel (Mistral-PairRM-DPO):直接評估在HuggingFace上傳的檢查點。該模型是通過三輪迭代DPO從Mistral-7B-Instruct-v0.2獲得的。  
  • (迭代)DPO:該研究也自己實現了迭代DPO算法。實驗設置和模型選擇方案與SPPO使用的一致,只是採用了(4.9)中定義的DPO損失函數。超參數經過優化,以最大化每次迭代時PairRM評估的平均勝率。Rosset等人的實際算法本質上與迭代DPO相同。
  • (迭代)IPO:該研究自己實現了迭代IPO算法。實驗設置和模型選擇方案與迭代DPO相同,只是損失函數是IPO損失(4.10)。為了公平比較,IPO的超參數也是通過在Ultrafeedback的hold-out子集上使用PairRM平均勝率評估來選擇的。
  • 自獎勵LM:Yuan等人提出將LLM本身作為偏好判斷來構建新的偏好對,並用DPO算法迭代微調LLM。使用Yuan等人報告的AlpacaEval 2.0勝率進行比較。自獎勵LM是從Llama 2 70B訓練得到的。

基準測試

使用AlpacaEval 2.0、MT-Bench和Open LLM Leaderboard作為評估基準。

  • AlpacaEval 2.0是一個基於LLM的自動評估基準。它採用AlpacaFarm作為由一般人類指令組成的提示集。模型回應和GPT-4-Turbo生成的參考回應被輸入到基於GPT-4-Turbo的標註器中進行判斷。我們遵循標準方法,報告相對於參考回應的勝率。  
  • MT-Bench是一個包含80個高質量多輪開放式問題的集合。問題涵蓋寫作、角色扮演、數學、編程等主題。生成的答案由GPT-4判斷,直接給出分數,無需成對比較。
  • Open LLM Leaderboard包含六個資料集,每個資料集都側重於語言模型評估的一個面。具體來說,評估規則包括數學問題求解、語言理解、人類謬誤模仿和推理。該研究遵循標準評估流程,使用上下文學習提示語言模型,並計算六個資料集的平均分數來衡量性能。


實驗結果 

在上述三個基準上評估模型。並基於預訓練的偏好模型PairRM比較模型。

使用GPT-4作為判斷 

在評估AI聊天機器人時,人工評估仍然是品質和準確性的基準。但由於在可擴展性和可重複性方面的局限性,該研究使用GPT-4先進能力作為自動評估工具的替代方法。在AlpacaEval 2.0和MT-Bench上進行基於GPT-4的自動評估,以衡量模型的聊天機器人能力。結果可以在表1(AlpacaEval 2.0)和圖2左(MT-Bench)中找到。在圖2右中提供了對MT-Bench結果的雷達圖分析。發現隨著迭代對齊迭代的進行,SPPO模型的性能持續提高。

表1(AlpacaEval 2.0)顯示了不同模型在805個提示上相對於GPT-4-Turbo基準的勝率。還包括一列表示長度控制勝率,以及每個模型的平均長度一列,以說明基於LLM的判斷傾向於偏好更長的序列輸出 —— 這個問題通俗地稱為"獎勵駭客"現象。

根據表格,SPPO Iter3的勝率最高,長度控制版本為28.52%,總體勝率為31.02%。與前幾次迭代相比,性能提升分別為7.69%(Mistral-7B-Instruct→Iter1)、2.10%(Iter1→Iter2)和1.64%(Iter2→Iter3),表明迭代之間的穩步改進,如圖1所示。此外,資料表明,與DPO和IPO的迭代變體相比,SPPO實現了更優越的性能。SPPO的長度控制勝率達到28.53%,優於Snorkel的DPO最佳勝率26.39%和IPO的勝率25.45%。值得注意的是,雖然DPO和IPO訓練傾向於顯著增加平均輸出長度 —— 分別為2736和2654 —— SPPO表現出更溫和的長度增加,從基礎模型的1676增加到第三次迭代的2163。表明與DPO和IPO相比,SPPO在提高性能的同時更有效地控制了輸出長度增加的趨勢。

最後使用PairRM獎勵模型呈現每個模型的16個最佳結果。發現在測試時使用偏好模型重新排序可以始終提高基礎模型(Mistral-7B-Instruct-v0.2)、DPO(Snorkel)和SPPO(Iter3)的性能,分別提高5.34%、3.57%和3.6%。值得注意的是,這表明儘管SPPO僅使用PairRM-0.4B作為唯一的外部監督來顯著增強模型對齊,但並未導致偏好模型的過度優化(Gao等人,2023)。未來的工作將探索進一步改進模型對齊的可能性,可能通過超出當前三次迭代的額外迭代(遵循Snorkel的方法)。

在表2中,將SPPO與AlpacaEval 2.0排行榜上的其他最先進AI聊天機器人進行了比較發現,SPPO模型優於許多在專有對齊數據上訓練的競爭模型(例如,Claude 2、Gemini Pro和Llama 3 8B Instruct)。通過測試時重新排序,SPPO Iter3(16個最佳)甚至可以與GPT-4 0613和Llama 3 70B Instruct競爭。



在圖2(左)中評估了SPPO在MT-Bench上的性能。可以看到,SPPO Iter3優於所有基準模型,達到7.59分的平均得分。雖然不確定為什麼前兩次迭代的MT-Bench性能下降,但SPPO在最後一次迭代的性能仍然優於基礎模型。由於長度控制的AlpacaEval 2.0與人工評估的Pearson相關性為98%,評估提示數量是MT-Bench的10倍, 因此它可能提供了比MT-Bench更可靠的評估。為了更深入地理解MT-Bench性能,在圖2(右)中繪製了按問題提示類別劃分的改進情況。SPPO Iter3在角色扮演、推理、數學和編程任務中顯示出顯著的收益。



Open LLM Leaderboard  

使用Huggingface Open LLM Leaderboard評估SPPO模型的能力。該排行榜包括6個不同的資料集,每個資料集都側重於LLM評估的一個方面:Arc、HellaSwag)、Winogrande、MMLU、TruthfulQA和GSM8k。模型使用零樣本或少樣本示例進行提示。



表3中的結果表明,SPPO可以提高基礎模型在Arc、TruthfulQA和GSM8k上的性能,並以66.75的平均分數達到最先進的性能。然而,這些改進在後續的對齊迭代中並未保持:DPO、IPO和SPPO的性能在第一次或第二次迭代後下降。這一局限性可能歸因於"對齊稅"現象,該現象表明,與人類偏好對齊(在我們的研究中由PairRM偏好模擬)可能不會提高,甚至會損害整體性能。通過對齊迭代提高語言模型能力仍然是未來研究的一個主題,合併高質量的SFT標註可能在這一努力中發揮重要作用。


使用PairRM作為判斷



由於SPPO確定了雙人常數和博弈中的馮·諾伊曼贏家,檢查了SPPO模型與其他基準之間的成對偏好。圖3描述了由PairRM測量的成對勝率觀察到,在所有算法(即DPO、IPO和SPPO)中,新的模型迭代都優於先前的迭代。例如,SPPO迭代3優於SPPO迭代2。SPPO和IPO在所有迭代中始終優於DPO。儘管SPPO在前兩次迭代中優於IPO,但IPO在最後一次迭代中的性能超過了SPPO。考慮到SPPO在由GPT-4評估或針對真實答案的標準基準測試中的優異表現(例如,AlpacaEval 2.0、MT-Bench和Open LLM Leaderboard),以及IPO傾向於產生更長的序列輸出(見表1中的Avg. Len),這是由於IPO利用了PairRM中偏好更長序列的長度偏差。相反,SPPO模型受益於乘性權重更新框架中更強大的正則化。

消融研究

研究了在估計勝率 \(P(y \succ \pi_t|x)\) 時小批量大小的影響。具體來說,對於每個提示,仍然生成5個回應,並根據PairRM分數選擇勝者 \(y_w\) 和輸者 \(y_l\)。在估計概率時,將批量大小變化為 \(K=2,3,5\)。對於 \(K=2\),我們僅使用2個樣本 \(y_w\) 和\(y_l\) 估計 \(P(y \succ \pi_t|x)\):

$$\hat{P}(y_w \succ \pi_t|x) = \frac{P(y_w \succ y_w|x) + P(y_w \succ y_l|x)}{2} = \frac{1/2 + P(y_w \succ y_l|x)}{2},$$

\(\hat{P}(y_l \succ \pi_t|x)\) 的估計方式類似。\(K=5\) 表示我們使用的原始設置。

該研究比較了AlpacaEval 2.0上的結果,如圖4所示。發現SPPO的性能對估計 \(P(y \succ \pi_t|x)\) 時的噪聲具有魯棒性。雖然 \(K=5\) 在第一次迭代中初始優於 \(K=2\),但在後續迭代中,它們的性能差異減小。此外,觀察到 \(K=2\) 表現出較小的增加輸出長度的傾向。

總結實驗結果:

  1. 在AlpacaEval 2.0上,SPPO Iter3在長度控制勝率和總勝率上都達到最高,分別為28.52%和31.02%。而且從Iter1到Iter3性能穩步提升。SPPO的長度控制勝率達到28.53%,優於DPO的26.39%和IPO的25.45%。值得注意的是,SPPO在提高性能的同時,輸出長度的增加也更加溫和。
  2. 在MT-Bench上,SPPO Iter3優於所有基準模型,平均得分達到7.59分。儘管前兩次迭代性能有所下降,但SPPO Iter3最終還是超越了基礎模型。  
  3. 在Open LLM Leaderboard上,SPPO可以提升基礎模型在多個數據集上的表現,達到目前最先進的平均得分66.75。但DPO、IPO和SPPO在後續迭代中性能都有所下降,這可能是因為與人類偏好對齊並不總是能提高整體性能。
  4. 使用PairRM作為評判,SPPO和IPO在所有迭代中都一致地優於DPO。雖然在最後一次迭代中IPO的性能超過了SPPO,但考慮到SPPO在GPT-4評估下的優異表現,以及IPO傾向於生成更長的輸出,我們認為這是由於IPO利用了PairRM中偏好更長序列的偏差。
  5. 消融實驗顯示,SPPO的性能對估計勝率時使用的批量大小的噪聲具有魯棒性。


結論

本研究提出了一種創新的自我對弈偏好優化(SPPO)方法來微調大型語言模型。該方法在雙人博弈中進行自我對弈,以偏好學習目標指導模型迭代優化,逼近納什均衡。實驗表明,SPPO在多個基準測試上顯著優於現有方法如DPO和IPO,更好地將語言模型與人類偏好對齊,避免了"長度偏差"等常見問題。這些結果凸顯了SPPO在提高生成式AI系統對齊性方面的潛力,為其在大型語言模型及其他領域的廣泛應用提供了有力證據。





附錄A 定理4.1的證明

定理4.1的證明。假設優化問題是可實現的,我們有確切的

\(\pi_{t+1}(y|x) \propto \pi_t(y|x) \exp(\eta P(y \succ \pi_t|x)), \text{ 對於 } t = 1, 2, \ldots. \tag{A.1}\)

為了證明指數權重更新可以導致最優策略,我們直接引用Freund和Schapire(1999)中定理1的重述版本:  

引理A.1(Freund和Schapire(1999)中的定理1,重述)。對於任意預言 \(P\) 和任意混合策略序列 \(\mu_1, \mu_2, \ldots, \mu_T\),由(A.1)產生的策略序列 \(\pi_1, \pi_2, \ldots, \pi_T\) 滿足:

$$\sum_{t=1}^T P(\pi_t \prec \mu_t) \leq \min_\pi \left(\frac{\eta}{1-e^{-\eta}} \sum_{t=1}^T P(\pi \prec \mu_t) + \frac{\text{KL}(\pi \parallel \pi_0)}{1-e^{-\eta}}\right).$$

通過設置 \(\mu_t = \pi_t\),我們有

$$\frac{T}{2} \leq \min_\pi \left(\frac{\eta T}{1-e^{-\eta}} P(\pi \prec \bar{\pi}_T) + \frac{\text{KL}(\pi \parallel \pi_0)}{1-e^{-\eta}}\right),$$  

其中LHS來自 \(P(\pi_t \prec \pi_t) = 1/2\),RHS來自 \(\frac{1}{T}\sum_{t=1}^T P(\pi \prec \pi_t) = P(\pi \prec \bar{\pi}_t)\)。現在重新整理項得到

$$\frac{1-e^{-\eta}}{2\eta} \leq \min_\pi\left(P(\pi \prec \bar{\pi}_T) + \frac{\text{KL}(\pi \parallel \pi_0)}{\eta T}\right).$$

我們可以天真地界定KL散度 \(\text{KL}(\pi \parallel \pi_0) \leq \lVert \log \pi_0(\cdot) \rVert_\infty\),這可以被視為一個(大)常數。

通過選擇 \(\eta = \frac{\lVert \log \pi_0(\cdot) \rVert_\infty}{\sqrt{T}}\),我們有

$$\frac{1}{2} - \sqrt{\frac{\lVert \log \pi_0(\cdot) \rVert_\infty}{4\sqrt{T}}} + O(T^{-1}) \leq \min_\pi\left[P(\pi \prec \bar{\pi}_T)\right] + \sqrt{\frac{\lVert \log \pi_0(\cdot) \rVert_\infty}{\sqrt{T}}},$$

其中LHS來自泰勒展開 \(\frac{1-e^{-\eta}}{2\eta} = \frac{1}{2} - \frac{\eta}{4} + o(\eta)\)。請注意,LHS的1/2已經是對稱雙人常數和博弈的值。這表明,對於適當選擇的 \(\eta\) 和 \(T\),混合策略 \(\bar{\pi}_T\) 接近於極小極大最優策略(納什均衡)。因此,最優性差距受以下限制

$$\max_\pi\big[P(\pi \succ \bar{\pi}_T)\big] - \min_\pi\big[P(\pi \prec \bar{\pi}_T)\big] = \max_\pi\big[1 - P(\pi \prec \bar{\pi}_T)\big] - \min_\pi\big[P(\pi \prec \bar{\pi}_T)\big]$$

$$= 2\left(\frac{1}{2} - \min_\pi\big[P(\pi \prec \bar{\pi}_T)\big]\right) = O\left(\frac{1}{\sqrt{T}}\right).$$


附錄B 不同迭代中的回應示例

表4:SPPO在不同迭代中微調模型的生成示例  


提示:  

你將首先得到一個任務的定義,然後是該任務的一些輸入。你得到了2個或更多個人之間的對話。對話將包括有關2個參與者之間關係的信息。最後,你將被要求提供這2個參與者關係的答案。在這個場景中,'0'將代表配偶關係,'1'將代表兄弟姐妹,'2'將代表孩子/父母關係。  

Speaker 1: I'll be right with you. Okay? Thanks, Wendy.  

Speaker 2: Oh my God! How cute is the on-call doctor?   

Speaker 3: Ooh, so cute, that I'm thinking about jamming this pen in my eye.  

Speaker 4: Dr. Burke will see you know.  

Speaker 2: Oh no-no-no, not Dr. Burke. Dr. Burke is out of town. The-the on-call doctor will see me now.   

Speaker 4: Dr. Richard Burke is out of town. Dr. Timothy Burke, his son, will see you now.  

Speaker 5: Ready? What is the relationship between Speaker 5 and Richard Burke?  

輸出:

Mistral-7B:  

根據對話,Richard Burke被確定為另一個角色的兒子,因此Speaker 5和Richard Burke之間的關係是父母和孩子。

迭代1:

Speaker 5和Richard Burke的關係是父親和孩子。根據對話,Dr. Timothy Burke是值班醫生,被確定為Dr. Richard Burke的兒子。

迭代2:

Speaker 5和Richard Burke的關係是父親和孩子。對話揭示,Dr. Timothy Burke是值班醫生,他被確定為Dr. Richard Burke的兒子。

迭代3:

Speaker 5是詢問關係的人,所以他們與Dr. Richard Burke沒有直接關係。對話中提供的信息揭示,Dr. Timothy Burke是值班醫生,是Dr. Richard Burke的兒子。

因此,答案是:Speaker 5和Dr. Richard Burke的關係是孩子(Dr. Timothy Burke)和父母。Speaker 5正在詢問這種關係,但他們本身並不是其中的一部分。指定的關係代碼(0表示夫妻,1表示兄弟姐妹,2表示孩子/父母)與這一描述一致:Speaker 5(0、1或2)和Dr. Richard Burke(2)是父母-孩子的關係。 

輸出:2(孩子/父母關係)

在這個場景中,Speaker 5的角色是確定她自己和Dr. Richard Burke之間的關係,但由於他們沒有關係(她是一個外部詢問者),正確答案只與對話中確定的關係有關:Dr. Richard Burke(父親)和Dr. Timothy Burke(兒子)。

表5:SPPO在不同迭代中微調模型的另一個生成示例。


提示:  

Q: Context: Roman Brady is a fictional character from the long running NBC soap opera, Days of Our Lives. The role was originated in 1981 by Wayne Northrop who played the role until 1984, was filled by Drake Hogestyn from 1986 – 1991, again by Northrop from 1991 – 1994, and is currently being portrayed by series veteran Josh Taylor, who stepped into the role in 1997.  

Question: who is roman brady on days of our lives? Let's give stream of consciousness below

Mistral-7B:

Roman Brady is a fictional character on the NBC soap opera "Days of Our Lives." He was first portrayed by Wayne Northrop from 1981 to 1984. Later, Drake Hogestyn took over the role from 1986 to 1991. Northrop returned to the role from 1991 to 1994. Since 1997, the character is being portrayed by Josh Taylor. Roman Brady is a significant character in the show's long-running storylines.

迭代1:

Roman Brady is a fictional character on the NBC soap opera "Days of Our Lives." He was first portrayed by Wayne Northrop from 1981 to 1984. Drake Hogestyn took over the role from 1986 to 1991. Northrop returned to play Roman again from 1991 to 1994. Since 1997, the character has been portrayed by Josh Taylor. 

So, in summary, Roman Brady is a long-standing character on "Days of Our Lives" who has been played by three different actors over the years: Wayne Northrop (1981-1984, 1991-1994), Drake Hogestyn (1986-1991), and currently by Josh Taylor (1997-present).

迭代2:  

Roman Brady is a fictional character on the NBC soap opera "Days of Our Lives." He was first portrayed by Wayne Northrop from 1981 to 1984. Drake Hogestyn took over the role from 1986 to 1991. Northrop returned to play Roman again from 1991 to 1994. Since 1997, the character has been portrayed by Josh Taylor. 

Overall, Roman Brady is a long-standing and complex figure in the show's history, with multiple actors bringing their unique interpretations to the role.

迭代3:

Roman Brady is a fictional character on the NBC soap opera "Days of Our Lives." He was originally played by Wayne Northrop from 1981 to 1984. Drake Hogestyn took over the role from 1986 to 1991. Northrop returned to portray Roman once more from 1991 to 1994. Since 1997, the character has been portrayed by Josh Taylor.

Roman Brady is a complex and prominent figure in the long-running daytime drama. Initially played by Northrop in the early 1980s, his tenure included involvement in various storylines, such as romantic relationships and business dealings. Hogestyn's portrayal during the late 1980s and early 1990s introduced new dimensions to the character. Northrop's second stint, from 1991 to 1994, further developed Roman's narrative. Since 1997, Josh Taylor has assumed the role, continuing to contribute to the evolving story of Roman Brady on "Days of Our Lives." Throughout these different portrayals, Roman has remained a central character, known for his intricate relationships, business ventures, and personal struggles.

參考文獻

https://arxiv.org/pdf/2405.00675

透過仔細研讀這篇論文,我對語言模型對齊及RLHF有了以下幾點見解:

  1. 人類偏好是複雜且非完全理性的,常見的參數化偏好模型如Bradley-Terry模型難以充分捕捉其特性。因此,直接利用偏好機率而非假設一個基礎效用函數,是更靈活也更準確的建模方式。這為RLHF的改進提供了新的思路。
  2. 將語言模型對齊視為一個雙人常數和博弈,目標是找到納什均衡策略,是一個巧妙的problem formulation。這不僅在概念上很自然,而且存在成熟的算法如multiplicative weight update可以用於求解,並享有理論收斂性保證。
  3. 論文提出的SPPO算法透過自我對弈的迭代更新過程來近似求解該博弈,並採用了各種技巧使其能擴展到大語言模型的高效訓練,如使用有限樣本估計勝率、避免估計歸一化常數等。這些技巧值得借鑑。
  4. SPPO的損失函數設計也很巧妙,不僅推動勝者和敗者回應的估計獎勵有差距,還試圖將勝者獎勵拉高、敗者獎勵降低,相比DPO和IPO損失更徹底,並在稀疏偏好數據上也能有效訓練。
  5. 大量實驗結果表明,SPPO在AlpacaEval、MT-Bench等基準測試上的表現優於DPO、IPO等方法,在多個任務上展現了很強的"generalist"能力,並且這種優勢在迭代更新中還能保持,很令人印象深刻。特別是SPPO無需借助GPT-4等強模型的外部監督數據,就達到了接近GPT-4的長度控制勝率,突顯了其潛力。
  6. 論文透過消融實驗還研究了樣本數對偏好估計及最終性能的影響。結果表明SPPO對樣本數並不敏感,即便只用2個樣本,也能取得不錯的效果。這進一步凸顯了SPPO的數據效率。
  7. 論文提到SPPO目前還有一些局限,如在Open LLM榜單上訓練久了反而會掉點,可能存在對齊稅的問題。作者認為納入高質量的監督微調數據可能有所幫助。這點出了一個重要問題,即對齊和能力之間可能存在某種tradeoff,如何更好地權衡值得深入研究。

這是一篇高質量的工作,無論是在算法設計、理論分析還是實驗評估方面都很紮實,可謂把RLHF的研究往前推進了一大步。不過,語言模型對齊仍然任重而道遠,完全對齊人類價值觀恐怕沒那麼容易。如何在對齊和能力之間取得更好的平衡,如何更高效地利用人類反饋數據,如何在更廣泛的真實場景中測試模型的性能,這些都是未來值得進一步探索的問題。期待這個方向能有更多優秀的後續工作湧現。

2024年5月1日星期三

Meta簡單而有效的語言模型訓練方法—多token預測

Meta提出了一種透過多token預測(Multi-token Prediction)來訓練更好、更快的大型語言模型的方法。這篇論文的重點如下:

  • 訓練語言模型同時預測多個未來的token,可以提高樣本效率(sample efficiency)。
  • 在推論階段,使用多token預測可以達到最高3倍的加速。


論文的主要貢獻包括:

  1. 提出了一種簡單的多token預測架構,在訓練時間和記憶體使用上沒有額外開銷。
  2. 實驗證明,這種訓練範式在大規模模型(最高達130億參數)上是有效的,平均可以解決大約15%以上的編程問題。
  3. 多token預測使得自我推測解碼(self-speculative decoding)成為可能,在各種批次大小下將模型的推論速度提高了最多3倍。

    https://arxiv.org/pdf/2404.19737

動機與目的

傳統的語言模型通常使用下一個token預測(next-token prediction)的方式進行訓練,即根據前面的token序列,預測下一個最可能出現的token。然而,這種訓練方式可能導致模型過度關注局部的模式,忽略了長程的依賴關係。為了解決這個問題,本文提出了多token預測(multi-token prediction)的訓練方法,同時預測未來的多個token,以提升語言模型的訓練效率和性能。



方法原理

模型架構

  • 語言模型使用一個共享的模型主體(shared model trunk),並在其上添加n個獨立的輸出頭(output head),分別預測未來的n個token。
  • 在訓練時,模型在每個位置同時預測未來的n個token,使用n個獨立的loss項。
  • 為了減少GPU記憶體用量,作者巧妙地調整了前向/反向傳播的順序。模型依序計算每個輸出頭的前向和反向傳播,同時累積主體的梯度,避免同時儲存所有n個龐大的logit向量。
  • 推論時,可以只用第一個輸出頭(也就是下一個token的預測),其餘輸出頭可選擇性地用於加速推論(稱為self-speculative decoding)。


訓練目標
在訓練時,模型在每個位置同時預測未來的\(n\)個token,使用\(n\)個獨立的cross-entropy loss項。假設輸入的token序列為\(x_1, x_2, ..., x_t,\)模型的訓練目標可以表示為:

$$L_n = - Σ_t log P(x_{t+1}, ..., x_{t+n} | x_1, ..., x_t)$$

其中,\(P(x_{t+1}, ..., x_{t+n} | x_1, ..., x_t)\)表示在給定前\(t\)個token的條件下,未來\(n\)個token的聯合概率分佈。將這個聯合概率分解為\(n\)個條件概率的乘積,可以得到:

\(L_n = - Σ_t [log P(x_{t+1} | x_1, ..., x_t) + log P(x_{t+2} | x_1, ..., x_t) + ... + log P(x_{t+n} | x_1, ..., x_t)]\)

每個條件概率\(P(x_{t+i} | x_1, ..., x_t)\)由一個獨立的輸出頭計算得到。


訓練技巧

為了減少GPU記憶體的使用量,作者巧妙地調整了前向/反向傳播的順序。模型依序計算每個輸出頭的前向和反向傳播,同時累積主體的梯度,避免同時儲存所有n個龐大的logit向量。這種技巧使得多token預測模型的訓練幾乎不增加額外的計算和存儲開銷。



推論過程

在推論階段,可以只使用第一個輸出頭(即下一個token的預測),其餘輸出頭可選擇性地用於加速推論。這種加速技術稱為self-speculative decoding,通過並行計算多個輸出頭的預測結果,可以提高推論的效率。


實驗結果

作者在多個編碼和自然語言任務上評估了多token預測模型的性能,並與傳統的下一個token預測模型進行了比較。


編碼任務

在HumanEval和MBPP兩個編碼資料集上,多token預測模型顯著優於基準模型,尤其在大模型(如13B參數)上提升更加明顯。4個token的預測在綜合表現上最佳,在HumanEval上pass@100提升了4.1%,在MBPP上pass@1提升了3.8%。此外,訓練多個epoch時,多token預測的優勢仍然存在。

自然語言任務

在自然語言任務上,多token預測也帶來了改進,特別是在需要生成較長文本的摘要和自然語言數學任務。在8個摘要資料集上,2個token的預測平均將ROUGE-L提升了0.51,4個token的預測平均提升了0.46。在GSM8K自然語言數學資料集上,2個token的預測模型顯著優於基準模型。

字元級訓練


為了驗證多token預測有助於學習更長程的依賴關係,作者進行了字元級(byte-level)的訓練實驗。結果表明,8個字元的多token預測模型在HumanEval上pass@1的表現比下一個字元預測模型高出20%,在MBPP上高出67%。這說明多token預測能夠捕捉更長距離的模式和依賴關係。

模型微調

使用預訓練的多token預測模型進行微調,也能在下游任務上取得優於基準模型的成果。在CodeContests資料集上,4個token預訓練的模型在pass@k上全面超過了下一個token預訓練的模型。



  • 在編碼(coding)任務上,多token預測模型在HumanEval和MBPP資料集上的表現顯著優於基準模型,尤其在大模型(如13B參數)上提升更加明顯。
  • 在自然語言任務上,多token預測也帶來了改進,特別是在需要生成較長文本的摘要和自然語言數學任務。
  • 多token預測有助於模型學習更長程的依賴關係。在字元級(byte-level)的訓練中,8個字元的多token預測大幅優於下一個字元預測。
  • 實驗顯示,4個token的預測在綜合表現上最佳。此外,訓練多個epoch時,多token預測的優勢仍然存在。
  • 使用訓練好的多token預測模型進行微調(如在CodeContests資料集上),也能取得優於基準模型的成果。

  • 額外的輸出頭可用於self-speculative decoding,在推論階段提供最高3倍的加速。


結論與討論

本文提出了一種簡單而有效的語言模型訓練方法——多token預測,通過同時預測未來的多個token,促進模型學習更長程的依賴關係。實驗結果表明,這種方法在編碼和自然語言任務上帶來了顯著的性能提升,尤其對大模型和較長文本的生成任務效果更佳。多token預測幾乎不增加訓練成本,卻能提高訓練和推論效率,值得進一步探索。



作者認為,這項工作為尋找更有效的語言模型訓練方法開闢了新的方向。未來的研究可以探索以下幾個方面:

  1. 在更大規模的數據集和模型上驗證多token預測的有效性。
  2. 研究最優的token預測數量n,以及如何自適應地選擇n。
  3. 設計更高效的多token預測架構,如使用單一的輸出頭來預測多個token。
  4. 將多token預測與其他輔助訓練目標結合,如掩碼語言建模(masked language modeling)。

多token預測是一種前景廣闊的語言模型訓練方法,有望幫助構建更強大、更連貫的語言模型,推動自然語言處理領域的發展。


以下是我對這項工作的一些想法:

多token預測利用了語言的長程依賴關係,通過同時預測多個未來的token,促使模型學習更全面、更連貫的表示。這種方法與人類語言學習的過程更為相似,因為我們在理解和生成語言時,也是基於對未來一段文本的預期,而不僅僅依賴於前一個詞。

該方法在編程任務上取得了顯著的性能提升,這可能是因為編程語言具有更強的結構性和邏輯性,多token預測更容易捕捉到其中的模式和依賴關係。在自然語言任務上的改進相對較小,可能是因為自然語言的不確定性和靈活性更高,單純增加預測的token數量效果有限,需要更細緻的建模方法。

多token預測在推論階段帶來的加速效果非常可觀,這對於實際應用中的延遲敏感場景(如實時對話、同步翻譯等)具有重要價值。不過,這種加速方法對模型性能的影響還需要進一步評估,確保生成質量不會顯著下降。

論文中的實驗主要集中在編程和自然語言文本上,未來可以考慮將多token預測應用於其他類型的序列數據,如時間序列、生物序列等,探索它在更廣泛領域的有效性。

多token預測作為一種輔助的訓練目標,與其他方法(如對比學習、知識蒸餾等)結合使用,可能會產生更好的協同效果。探索多種訓練策略的組合,有望進一步提升語言模型的性能和泛化能力。

我認為這項工作為改進大型語言模型的訓練和推理效率提供了一個簡單而有效的思路,具有廣闊的應用前景。未來可以在更大規模的資料集和模型上驗證這種方法的有效性,並探索與其他技術結合的可能性,推動語言模型的進一步發展。

2024年4月30日星期二

「Next token Prediction」還能再走多遠?

近年來大語言模型(Large Language Models, LLMs)在自然語言處理領域取得了顯著的突破。而支撐這些 LLMs 的核心技術之一,就是下一個 token 預測(Next Token Prediction, NTP)。

NTP 技術由「資訊理論之父」Claude Shannon在其著作《通信的數學原理》(A Mathematical Theory of Communication)中首次提出。其核心思想是,通過給定一個詞序列的上下文,讓模型預測下一個最可能出現的詞。這種預測能力使得語言模型能夠生成連貫、邏輯性強的文本,在機器翻譯、文本摘要、自動寫作等場景中發揮重要作用。

 Shannon在這篇劃時代的論文中,首次系統地定義了「資訊」這個概念,並給出了資訊的數學表示方法。他引入了「bit」(比特)作為資訊量的基本單位,提出了著名的「香農熵(Shannon entropy)」公式來計算一個隨機變數所包含的平均資訊量。這個公式後來被廣泛應用於各個領域,成為現代資訊論的核心概念之一。

香農熵的定義如下:

對於一個離散隨機變量 X,其概率分佈為 P(X=x_i) = p_i,i=1,2,...,n,則 X 的香農熵為:

H(X) = -∑[i=1 to n] p_i log p_i

其中,log 通常以 2 為底,這樣熵的單位為比特(bit)。如果以自然常數 e 為底,則熵的單位為納特(nat)。

香農熵的一些重要性質:

非負性:H(X) ≥ 0,即香農熵總是非負的。

當 X 的分佈是均勻分佈時,香農熵達到最大值 log n。這意味著均勻分佈具有最大的不確定性。

當 X 的分佈是確定性分佈(即某個事件的概率為 1,其他事件的概率為 0)時,香農熵達到最小值 0。這意味著確定性分佈沒有不確定性。

香農熵滿足一些重要的不等式,如均值不等式、次加性不等式等,這些性質在信息論的推導中非常有用。

在信息論和編碼理論中,香農熵被用來衡量信息源的平均信息量,或者說,傳輸一個符號所需的平均比特數。

此外,Shannon還在論文中提出了兩大定理:

香農第一定理(Shannon's Source Coding Theorem):給出了信源編碼的極限壓縮率,即信源熵。這意味著,當編碼長度趨於無窮時,每個編碼符號的平均長度不會小於信源的香農熵。

香農第二定理(Shannon's Channel Coding Theorem):論證了存在一種編碼方式,使得通過帶噪信道進行通信時,傳輸誤碼率可以任意接近零,只要資訊傳輸速率低於信道容量。信道容量公式為:

C = B log2(1 + S/N)

其中,C是信道容量(單位:bit/s),B是信道頻寬(單位:Hz),S/N是信噪比。

這兩大定理奠定了現代編碼理論的基礎,指明了可靠通信的理論極限,對現代通信技術的發展產生了深遠影響。

雖然Shannon的原始論文並沒有直接提及「下一個token預測」(Next Token Prediction, NTP)這個概念,但他的資訊理論思想無疑為 NTP 技術的發展提供了理論基石。NTP 的核心思路可以看作是對香農理論的延伸和應用——通過最小化預測下一個 token 的不確定性(即香農熵),來訓練語言模型生成連貫、高質量的文本。

OpenAI 首席科學家 Ilya Sutskever 更堅信,NTP 是通往 AGI(Artificial General Intelligence,通用人工智慧)的關鍵。他認為,token 預測的質量反映了模型對語言背後隱藏的語義和知識的理解程度,這不僅僅是統計,更是對世界本質的壓縮和表達。如果讓一個足夠強大的語言模型去預測一個睿智、博學且能力非凡的人會有怎樣的行為舉止,它很可能可以通過人類資料進行推理和外推,模擬出超越現實的假想情況。

事實上,OpenAI 的研究員 Jack Rae 在斯坦福的研討會上做了題為《Compression for AGI》的報告,詳細論證了「壓縮即智慧」的觀點。他認為,壓縮能力體現了模型對資料的泛化和抽象能力,而泛化能力正是智慧的基石。

NTP 技術的基本原理可以概括如下:

1. NTP 是因果語言模型的核心任務,目標是準確預測給定文本序列中下一個令牌(token),如單詞或字元。Token 預測過程基於自迴歸機制,即模型一次預測一個令牌,並以由左至右的順序進行。

2. 大多數 NTP 模型基於 Transformer 架構,尤其是其僅解碼器(Decoder-Only)變體。Transformer 透過自注意力(Self-Attention)機制,讓模型在生成每個新 token 時,都能考慮到之前所有 token 的上下文資訊,從而生成更加準確和連貫的文本。

3. 在進行下一個 token 預測之前,文本首先需要被切分成模型可理解的最小單位,即 token。這些 token 隨後被轉換為嵌入向量(embedding vector),以數值形式表示。為了讓模型理解 token 的順序,每個 token 的嵌入向量會與位置嵌入向量相加,使模型能夠捕捉序列中的位置資訊。

4. 大型語言模型通過在大規模文本資料集上進行預訓練來學習下一個 token 預測。這個過程是自監督的(self-supervised),意味著模型通過預測文本序列中的下一個 token 來自我訓練,無需外部標註的訓練資料。透過這種方式,模型學會了理解和生成自然語言。

傳統的機器人控制方法,如波士頓動力公司採用的運動控制算法、強化學習和行為克隆等,通常需要對環境和任務進行專門的建模和規劃。這種方法雖然在特定環境下表現出色,但泛化能力有限,難以應對複雜多變的真實世界。

而基於自回歸生成的 NTP(Next Token Prediction)技術,為機器人控制開闢了一條新的路徑。通過將感官運動資料序列化為類似於自然語言的 tokens,並訓練類似 GPT 的自回歸語言模型來預測下一個 token,機器人可以直接從大量歷史互動資料中學習到連貫、鮮活的行為模式,而無需對環境進行顯式建模或路徑規劃。


這種範式轉變的優勢在於,自回歸生成模型具有強大的泛化能力。通過從海量多樣的感官運動資料中學習,模型可以掌握環境和任務的隱含規律,並在新的情景下自主地採取合適的行動。就像 GPT 模型可以根據上下文生成連貫的自然語言一樣,基於 NTP 的機器人控制器可以根據當前的感知狀態和歷史行為,自主產生連貫、適宜的運動控制指令,而無需為每個場景專門設計路徑。

以柏克萊團隊的工作為例,他們將多個來源的機器人感官運動資料(如手動設計的控制器輸出、強化學習模型的決策序列、人類運動捕捉資料等)匯總成一個龐大的「軌跡語料庫」,並在此基礎上訓練類似 GPT 的自回歸運動控制模型。他們將仿人機器人的感覺運動軌跡視作類似於自然語言中的單詞序列,將感覺輸入(如傳感器資料)和運動輸出(如馬達指令)的輸入軌跡進行 token 化,組成軌跡的「單詞」和「句子」。

接著,研究者們訓練了一個通用的 Transformer 模型來自迴歸地預測移位的輸入序列。與語言模型不同的是,機器人資料是高維的,包含多個感官模態和動作。研究者通過將輸入軌跡進行標記化,然後訓練 Transformer 模型來預測這些標記,處理了這種多模態性。模型能夠預測完整的輸入序列,包括感官和動作標記。

更有趣的是,當軌跡資料不完整(即感覺或運動資訊缺失)時,模型可以通過預測存在的資訊,並用可學習的遮罩標記(learnable mask tokens)替換缺失的標記來從中學習。這使得模型能夠從不完美或缺失的資料中學習,提高其泛化能力,在面對真實世界的不完整資料時仍能有效運作。

研究者們還發現,使用更多軌跡進行訓練可以減少位置追蹤誤差,展現了 scaling 定律在機器人控制中同樣有效。此外,實驗顯示,更大的上下文視窗和模型參數規模能產生更好的策略和更低的追蹤誤差。

實驗表明,訓練後的模型可以在各種場景下自主產生連貫、合理的運動軌跡,展現出了良好的泛化能力。機器人無需再依賴專門的路徑規劃,即可自如地在複雜環境中行動。

自回歸生成模型在機器人控制領域的應用,為打造更加智能、自主、泛化的機器人系統開闢了一條充滿潛力的新路徑。隨著 NTP 等技術的不斷發展和完善,我們有望在未來看到更多具備「類人般常識」的通用機器人助手,它們能夠像人一樣自然地感知、思考和行動,為人類的生產生活提供更加智能、貼心的服務。這無疑將是人工智能發展史上又一個激動人心的里程碑。

雖然這些結果令人振奮,但 NTP 技術在機器人控制中的應用仍存在一些疑慮和局限性。一些學者質疑論文中對「觀測」和「行動」概念的定義是否清晰一致,以及具體實現細節是否完備。也有人指出,即使對於簡單的行走任務,也需要大量(如數萬條)軌跡資料,而這些資料在現實中難以收集。

此外,NTP 技術本身也存在一些固有的局限性。例如,在長序列中,每個步驟的小錯誤可能會指數級累積,導致整體準確性大幅下降;模型可能學習到錯誤的規劃策略,在需要前瞻性規劃的任務中表現不佳;快速和慢速兩種思考過程難以同時模擬;一些 token 可能天生難以學習,需要對未來有全局理解。

當然,基於 NTP 的機器人控制方法仍處於探索階段,還面臨著一些挑戰和局限性。例如,如何在訓練過程中更好地引入物理約束和安全保障?如何進一步提高感官運動資料的採集和處理效率?如何賦予模型更強的因果推理和長期規劃能力?這些都是亟待研究者進一步探索的問題。

最近,蘇黎世聯邦理工學院和谷歌研究院的學者在論文"The Pitfalls of Next-token Prediction"中全面總結了 NTP 技術在大型語言模型中的問題和局限性。他們指出,目前的爭議很大程度上源於沒有區分推理階段的自迴歸和訓練階段的 teacher-forcing 兩種 token 預測方式。如果不加以區分,在模型預測錯誤時,對複合誤差的分析往往會將問題導向至推理過程,誤以為是模型執行方面的問題。

https://arxiv.org/pdf/2403.06963.pdf

論文還透過實驗指出了 NTP 技術目前存在的幾個主要問題:

1. 在自迴歸推理中,即使每步錯誤率很小,錯誤也可能在長序列中指數級累積,導致整體準確性顯著下降。

2. NTP 模型可能在需要前瞻性規劃的任務中表現不佳,難以有效學習如何制定和執行長期計畫。

3. Teacher-forcing 訓練可能無法學習到準確的下一個 token 預測器,因為模型可能會利用輸入中洩露的答案前綴來生成未來的詞,而非從問題本身推導出答案。

4. Teacher-forcing 訓練可能誘導模型使用「Clever Hans 作弊」策略。

5. Teacher-forcing 訓練可能導致早期答案詞難以學習,因為模型在訓練過程中失去了關於完整答案的監督。

6. 即使在簡單的路徑查找任務中,Transformer 和 Mamba 架構的模型也可能失敗,令人質疑 NTP 是否能泛化到更複雜或不同類型的任務。

NTP 技術雖然強大,但仍存在一些固有的局限性。在機器人控制領域,它能否真正走通還有待進一步的研究和驗證。未來,我們或許還需要探索其他潛在的技術路線,如多模態大模型、具身大模型、自然模態世界模型等,來實現通用人形機器人的智慧控制。這需要學界和業界的共同努力。

2024年4月29日星期一

擴張注意力: 改良的注意力機制

 擴張注意力技術(Dilated Attention)可以將Transformer模型的上下文窗口擴展到10億個token。

擴張注意力是一種改良的注意力機制。它讓模型可以關注輸入序列中更遠的部分,且計算成本不會大幅增加。這個概念借鑑了卷積神經網路中的擴張卷積。 

在標準的Transformer模型中,自注意力機制讓輸入序列中的每個token都能關注其他所有token,導致計算複雜度為O(N^2),其中N是序列長度。

當嘗試擴展到非常長的序列(例如10億個token)時,由於計算和記憶體的限制,平方複雜度變得不可行。

擴張注意力引入了一個擴張因子,它改變了token相互關注的模式。其理念是讓token以越來越大的距離關注其他token,跳過中間的token。

擴張注意力的運作方式

1. 擴張因子: 這是一個超參數,決定了被關注的token之間的距離。例如,擴張因子為2意味著每個token關注序列中間隔一個的其他token。

2. 多層結構: 通過堆疊具有不同擴張因子的多個層,模型可以從各種距離收集信息,創建更全面的表示。

3. 稀疏連接: 這導致注意力矩陣中的稀疏連接,將複雜度從O(N^2)降低到更易處理的程度,例如O(N log N)甚至是線性複雜度,具體取決於擴張模式。

擴張注意力如何實現10億token的上下文

1. 記憶效率: 擴張注意力大大減少了記憶體需求,允許處理更長的序列。

2. 計算效率: 通過降低複雜度,它使得在合理的計算時間內處理更大的序列成為可能。

3. 保持長距離依賴: 儘管降低了複雜度,擴張注意力仍然允許捕捉文本中的長距離依賴關係,這對許多NLP任務至關重要。

與HuggingFace或其他框架整合

在流行的深度學習框架中實現擴張注意力通常需要定制注意力層。您可能需要修改現有的注意力機制以納入擴張因子、更新遮罩,並確保正確處理反向傳播。

總之,擴張注意力表示著將基於注意力的模型擴展到處理極長序列的重要一步。通過引入擴張因子並利用稀疏連接,它使得處理高達10億個token的上下文成為可能,在大幅降低計算要求的同時保持了注意力的本質。

擴張注意力與稀疏注意力的區別

擴張注意力和稀疏注意力都是降低Transformer中注意力機制計算複雜度的機制,但它們通過不同的方式實現這一目標。讓我們探討一下兩者的區別:

稀疏注意力選擇性地只關注序列中的一部分token,創建一個許多條目為零的稀疏矩陣。

稀疏模式可以是固定的或學習的,它定義了哪些token關注哪些其他token。常見的模式包括帶狀、滑動窗口或其他預定義的結構。(滑動窗口是Swinformer使用的變體)

根據稀疏模式的不同,稀疏注意力可能無法確定地捕捉長距離依賴。

1.相似性: 兩者都旨在降低計算複雜度,並允許模型處理更長的序列。

2.區別:

- 模式: 擴張使用規則的跳躍模式,而稀疏可以使用各種模式,包括學習的模式。

- 靈活性**: 稀疏注意力在定義注意力模式方面提供了更大的靈活性,而擴張注意力具有更剛性、規則的結構。

-覆蓋範圍: 由於規則的跳躍,擴張注意力可能會錯過一些更精細的局部細節,而稀疏注意力捕捉依賴關係的能力取決於所使用的特定模式。

- 實現複雜度: 稀疏注意力通常需要專門的算法和硬件來進行高效的稀疏矩陣乘法,而擴張注意力可以用標準的稠密矩陣運算來實現。

總之,儘管這兩種機制實現了相似的目標,但它們採用了不同的策略、權衡和最適合的應用。擴張注意力提供了一種實現長距離依賴的直接方式,但會損失一些粒度,而稀疏注意力可以允許更複雜和特定於任務的注意力模式,但通常代價是更大的實現複雜度。


為什麼語言Transformer需要從視覺Transformer引入擴張?

LONGNET中的擴張注意力

- 應用: 專為序列建模設計,將Transformer擴展到極長序列(如10億個token)。

- 概念: 隨著距離的增長,關注區域呈指數擴張,使模型能夠捕捉序列中的長距離依賴關係。

- 複雜度: 同時保持線性複雜度,使模型能夠處理極長的序列而不犧牲性能。

- 整合: 可作為Transformer模型中標準注意力的直接替代,可應用於一般語言任務。

視覺Transformer與語言Transformer在任務特性和序列長度上有所不同,這導致它們在注意力機制的設計上採取了不同的方法。以下是視覺Transformer的擴張注意力在語言Transformer中的應用動機:

1. 序列長度的差異:

   - 視覺Transformer通常處理較短的序列,如圖像分塊後的序列。

   - 語言Transformer需要處理更長的序列,如整篇文章或對話。

2. 捕捉長距離依賴的需求:

   - 在圖像任務中,相鄰片段間的局部關係通常足以捕捉關鍵信息。

   - 在語言任務中,捕捉詞語或句子之間的長距離語義依賴至關重要。

3. 計算效率的考量:

   - 視覺Transformer的序列較短,採用稠密注意力計算代價相對較小。

   - 語言Transformer面臨更長序列,需要更高效的注意力機制來控制計算成本。

4. 跨領域知識借鑑:

   - 擴張注意力最初在視覺任務中展現出優越性能,吸引了NLP研究者的興趣。

   - 將擴張注意力引入語言Transformer,有望在保持計算效率的同時提升模型性能。

儘管視覺和語言任務在序列特性上有所不同,但它們在注意力機制設計上有著共通的目標:捕捉關鍵的依賴關係,同時兼顧計算效率。語言Transformer借鑑並改進了視覺Transformer的擴張注意力,以更好地滿足語言任務的特定需求。這種跨領域的知識融合和創新,推動了Transformer架構在不同任務上的進一步發展和應用。

人工智慧技術的發展常常需要跨領域的思想碰撞和借鑑。視覺和語言雖然是不同的領域,但它們在底層的模型架構和算法設計上往往有許多共通之處。擴張注意力從視覺Transformer到語言Transformer的演進過程,正是這種跨領域融合創新的一個絕佳例證。

SambaNova SN40L: 利用Dataflow和專家組合(COE)來克服AI記憶牆的大模型

摘要 GPT-4等整體式大型語言模型(LLM)為現代生成AI應用鋪路。然而,大規模訓練、服務及維護整體式LLM仍然極其昂貴和充滿挑戰。現代AI加速器計算能力與記憶體比例的不成比例增長已經造成了記憶體壁障,需要新的方法來部署AI。最近的研究顯示,許多小型專家模型的組合,每個模型參數...