不同資料集有不同的Scaling law?而你可用一個壓縮演算法來預測它
机器之心發表於2024-06-03
一般而言,訓練神經網路耗費的計算量越大,其效能就越好。在擴大計算規模時,必須要做個決定:是增多模型引數量還是提升資料集大小 —— 必須在固定的計算預算下權衡此兩項因素。Scaling law 告訴我們:只要能適當地分配引數和資料,就能在固定計算預算下實現效能最大化。之前已有不少研究探索過神經語言模型的 Scaling law,而這些研究通常得出的結論是引數和訓練 token 數應當一比一地擴充套件。但是,之前的語言模型 Scaling law 研究都是基於在散亂的網路文字上訓練的 Transformer 得到的。這是一種非常特定的資料分佈,因此我們自然會問:基於這樣的網路文字資料集得到的 Scaling law 是否可以泛化到其它分佈?此外,人們普遍認為,訓練資料混合的秘訣在於能讓前沿探索的產業界實驗室能持續產出當前最佳的 LLM。考慮到提升資料質量能顯著提升語言模型的效能,而強化學習的 Scaling law 也會隨博弈難度而縮放,也許我們可以假設:當前的語言模型 Scaling law(即 Chinchilla)只是針對網路文字資料的具體案例,其背後還有一個基於訓練資料屬性的更廣義的 Scaling law。那麼,神經 Scaling law 對訓練用的 token 序列資料集的哪些性質敏感呢?換句話說,如果我們想要準確預測如何以最佳方式為訓練過程分配計算量,我們該觀測資料的哪些屬性?另外,Scaling law 的資料依賴性質僅僅是個理論問題,還是說對真實世界資料集也很重要?為了探究這些問題,AI 資料公司 Reworkd 的研究者 Rohan Pandey 做了一番調查,得到了這些問題的答案;另外他還提出了一種壓縮演算法 gzip,可預測資料複雜性對擴充套件性質的影響。- 論文標題:gzip Predicts Data-dependent Scaling Laws
- 論文連結:https://arxiv.org/pdf/2405.16684
他的研究方法是:在可以直觀控制複雜度的文字資料設定下,以資訊理論方法理解 Scaling law 的資料依賴性的原因。他最終找到的設定名為機率式上下文無關語法(PCFG,最早由喬姆斯基於 1956 年提出)。該設定相對自然(可以建模自然語言、程式碼等),句法複雜度可控,遵循一些已被很好理解的資訊理論原理。實驗中,透過調整 PCFG 的句法性質,他生成了 6 個具有不同複雜度的資料集。對於每個資料集,他又訓練了 6 個不同大小的語言模型(引數量從 4.4M 到 1.4B),並記錄了這些語言模型在 6 種不同訓練步數(100K 到 100M token)下的結果。然後,他為每個資料集都擬合了一個 Scaling law,發現 Scaling law 的引數會隨句法複雜度而有意義地變化。遵循之前有關形式語法的熵的研究,對於複雜度度量,他使用的是資料集中每個 token 序列的可壓縮率(compressibility)中值,這能透過 gzip 輕鬆計算出來。結果發現,隨著訓練資料的可壓縮率降低(更加複雜),Scaling law 的計算最優邊界也會逐漸從引數量偏向資料大小。然後,他測量了真實世界的程式碼和自然語言資料集的可壓縮率,結果發現前者的可壓縮率更大,因此可預測其服從不同的 Scaling law。機率式上下文無關語法(PCFG)是計算語言學的一種基礎工具,可用於建模自然語言的句法。PCFG 是對標準的上下文無關語法(CFG)的擴充套件,即在生成規則中關聯了機率,從而能以一種可量化的方式表徵語言的模糊性和可變性。這些語法會生成樹,其中每個節點都表示一個句法類別,每條邊則表示用於生成句子的生成規則。在根據 PCFG 生成句子時,會以機率方式取樣應用生成規則的序列,直到該樹的所有葉節點都是端點(實際的詞彙 token)。我們可以控制 PCFG 的句法性質,以自然方式調節文字資料集的複雜度。具體來說,PCFG 建立函式可接收的引數包括:端點的數量、非端點的資料、生成規則右側的最大長度、任何非端點允許的生成規則的最大數量(如果這個值為 1,則給定的非端點將始終得到同樣的右側)。直觀而言,以上每個值的增長都會導致句法複雜度增大。為了基於以上引數建立 PCFG,對於每個端點,都隨機選取其生成數量(RHS 選項)、這些生成的每個長度,透過從端點和非端點隨機取樣來例項化生成規則,併為其分配一個機率(根據非端點的總 RHS 選項而進行了歸一化)。然後,收集所有為全部非端點生成的生成規則,並使用基於 NLTK 構建的 PCFG 軟體包例項化一個語法。再使用該語法(在給定約束下隨機建立的)來機率式地取樣句子,以構建 token 序列資料集。為了後面更容易比較在不同語法(生成不同平均長度的句子)上的訓練情況,他決定將句子取樣到同等 token 數量的文件中。持續基於語法取樣句子,直到填滿上下文長度,如有溢位,則直接截斷句子。句子由僅為整數的端點構成,因此可以被視為語言模型的 token ID;再使用未被使用的整數 0(可有效對應於自然語言中的句號)將句子連線起來。澄清一下,這裡不是生成「看起來」像自然語言的字串再進行 token 化 ——PCFG 是直接生成 token ID 本身的序列。現在,可以根據 6 組初始語法約束生成 6 個有不同複雜度的 token 序列資料集了。為了估計生成資料集以及真實資料集的複雜度,Rohan Pandey 選擇使用一種壓縮演算法 gzip。gzip 的一個優點是已有很好的理論研究基礎,它們表明:可壓縮率(compressibility)與熵成反比,而熵與句法複雜度成正比。具體來說,針對資料集中 1000 個 token 構成的每個 token 序列,使用 gzip 並計算壓縮後資料與原始資料的大小(位元組數)之比。然後,計算可壓縮率的中值和標準差,確認有更高句法複雜度的語法會得到更難壓縮的資料集。可以觀察到,隨著非端點(語法類別)、端點(token)、右側選項和右側長度的增長,gzip 壓縮率也會增長,即變得更難壓縮。圖 1 繪出了這些資料集以及自然語言和程式碼資料的情況。可以看到,在複雜度方面,某些 PCFG 資料集與程式碼資料相近(易於壓縮的部分),而另一些則與自然語言相近。為了確定資料集的 Scaling law,該研究者在不同大小的資料子集(100K、1M、5M、20M、50M、100M token)上訓練了幾個不同大小(引數量為 4.2M、8.8M、20.3M、59.0M、275.3M、1.4B)的模型,表 6 給出了其架構詳情;然後他在所得損失結果上進行冪律擬合。大多數實驗都是在 4 臺有 80 GB VRAM 的英偉達 A100 上完成的,使用了 PyTorch FSDP。如圖 2 所示,如果一個資料集更容易壓縮(可壓縮率越低),模型的收斂速度就越快。這符合我們的直觀認識。儘管這表明我們需要更多計算量去建模更復雜的資料集,但我們還是需要更多證據才能確定計算最優邊界是否會直接根據資料複雜度而變化。為了確立 Scaling law 對資料複雜度的非平凡的敏感性,需要計算每個資料集的 Scaling law 並調查其擬合引數。根據 gzip 可壓縮率計算資料敏感的 Scaling lawHoffmann et al. 在 2022 年提出的 Scaling law 函式形式是將訓練損失作為模型和資料大小的函式:其中 N 是模型的引數量,D 是訓練資料集的 token 數量。他們宣稱 E 是「自然文字的熵」且 Scaling law「與資料集無關」。但是,當 Rohan Pandey 在 PCFG 資料集上擬合訓練結果與該函式時,卻發現每個資料集的 Scaling law 大不相同,見表 2。該 Scaling law 可為引數量得到一個計算最優邊界(由 Kaplan et al. [2020] 和 Hoffmann et al. [2022])推導得出,可簡化為:圖 3 繪出了 Chinchilla 的計算最優邊界以及每個 PCFG 資料集擬合得到的 Scaling law。可以看到,隨著資料越來越難壓縮,擬合得到的 Scaling law 的邊界逐漸變得偏向於資料,在 0.23 < gzip 可壓縮率 < 0.45 區間中某個點時越過 Chinchilla 的一比一邊界。為了根據資料集的可壓縮率預測 Scaling law 引數,可在每個資料集的擬合 Scaling law 引數上進行簡單的線性迴歸擬合。之前我們提到,針對資料集 D,計算可壓縮率 H 的方法是:先計算每個元素 d 壓縮後位元量與原始位元量的比值,然後再計算所有元素的平均值。一旦從 H 擬合出預測每個引數(E, A, B, α, β)的線,就可以將每個引數重新定義成可壓縮率的一個函式:其中 m_x 和 n_x 是擬合後線性迴歸的引數。表 3 給出了這些擬合後的值(以及迴歸的 p 值),圖 4 則是這些線性迴歸的視覺化結果。它們幾乎都是單調遞減的,只是速率不同,而在 H 約 0.27 的位置,α 和 β 相交。需要指出,E(原本設定為常數的「自然語言的熵」)是唯一一個會隨 H 增大的引數(但不明顯)。現在就可以將 (1) 式重新引數化為可壓縮率 H 的函式:但是,由於這裡的實驗規模相當小,並且主要集中於 PCFG 資料集,因此 Pandey 又對該函式進行了擴充套件 —— 調整 Chinchilla 後得到了資料依賴型的 Scaling law:其中 ε 是對訓練資料的 gzip 壓縮率的調整權重,加 ' 的引數是 Chinchilla 常量。上面的實驗並沒有解決這一可能性:這個可壓縮率度量混雜了某個底層的句法屬性(如詞彙庫大小)。為了解決這一問題,圖 5 給出了另外的結果。可以看到,當維持詞彙庫大小穩定不變並改變其它句法性質(表 4)時,gzip 可壓縮率依然可以預測 Scaling law 的引數變化情況(相關性甚至強於增加詞彙量的設定)。圖 6 則是實證中找到的反例,這表明當句法性質變化範圍很大(表 5)但這些資料集的最終 gzip 可壓縮率一樣時,Scaling law 引數並不會有顯著變化。儘管在這個同等詞彙案例中並未觀察到圖 4 中那樣的相交行為,但 α 的斜率依然比 β 陡(A 也比 B 陡),這說明隨著 gzip 可壓縮率增大,有同樣的偏向資料的現象。因此,可以說這些結果表明:Scaling law 依賴於訓練資料,而 gzip 可壓縮率可以很好地預測資料複雜度對擴充套件性質的影響。