作者:Dwarkesh Patel
編譯:深潮 TechFlow
深潮導讀:過去六年,AI 模型能力突飛猛進,但進步究竟來自算法還是數據?這篇文章透過一組小規模對照實驗,得出一個反直覺的結論:數據改進帶來的算力效率提升是模型改進的 3 倍以上。對於關注 AI 基礎設施投資和前沿實驗室競爭的人來說,它揭示了一個被低估的驅動力:數據工程。
過去幾年,我們在 AI 領域看到的快速進步,有多少來自數據改進,有多少來自模型改進?這個問題的答案,對前沿實驗室的經濟模型和未來進步速度都有重大影響。
我們對此問題進行了相對小規模的調查,專注於 2019 年至 2025 年的預訓練。在這幾年中,每年都會發表一套新的開源模型方案,總結當年公開已知的演算法改進(例如架構、優化器、初始化、學習率調度、超參數等方面的改進)。同時,每年也會出現新的公開數據語料庫(由更大規模的爬取以及新的策展、提取、過濾技術產生)。
我們訓練了這些模型方案與數據語料庫的各種組合,以代表不同年份的水平,並在不同的訓練算力規模下進行(最高達 1e19 FLOPs)。
顯然,我們無法透過它們在某個固定數據集上的交叉熵損失來比較這些不同模型,因為我們正在改變它們所訓練的數據集。因此,我們改為根據最終能力來評估這些模型,衡量標準是 OLMES 評估(它彙總了 10 個相對簡單的基準,大部分為多項選擇問答)。遺憾的是,評估最終能力而非預訓練損失,會為我們的結果增加一些噪音,你會在下面的圖中看到這一點,不過我們嘗試透過多次隨機種子來獲得更清晰的邊界。
我們發現,從 2019 年到 2025 年,在 1e19 FLOPs 的算力預算下,3.24 倍以上的算力效率提升來自數據改進,而不是模型改進(數據為 12.0 倍,模型為 3.7 倍)。

下圖展示了在 3.16e18 FLOPs 算力下,我們訓練的模型相較於 2019 年數據與架構基線,在最終測試能力上的提升程度。

我們發現,數據改進和模型改進帶來的收益大多是相互獨立的,彼此之間沒有交互作用(也就是說,實現某項模型改進的收益,不需要依賴某個特定的訓練數據集,反之亦然)。使用線性模型,OLMES 分數中 88% 的方差可以由模型改進和數據改進的加性效應來解釋。
討論
作為背景,讓我們簡要總結一下 2019 年到 2025 年,數據側和模型側分別發生了什麼變化。
在模型端,我們從 GPT-2 進展到 OLMo-2,包含優化器、位置編碼、歸一化、激活函數、初始化等方面的關鍵創新。
在數據側,我們於 2019 年從 OpenWebText 開始,它僅包含 Reddit 上獲得足夠點贊的鏈接網頁,經過去重和過濾後,最終僅約有 90 億個 token(這基本上就是 GPT-2 的訓練數據)。到 2025 年,像 UltraFineWeb 這樣的開源數據語料庫不僅規模大得多(通過對整個互聯網的爬取),還使用了複雜得多的過濾方法(例如訓練一個分類器,用來預測哪些數據實際上能提升模型性能)。
對我們結果的一種樸素解讀是:2019 到 2024 年(預訓練時代)AI 的大部分進步,其實只是更好的數據工程(提取、策展等),而那一時期所有的模型工作遠沒有那麼重要。
但這可能是對模型改進價值的錯誤看法。模型改進的主要貢獻未必在於算力效率,也就是以更少的 FLOPs 達到相同性能。相反,它首先讓更大規模的算力變得可用。隨著參數量、上下文長度、運行時長和叢集規模擴大,各種問題都容易出故障(梯度爆炸或消失、記憶體和頻寬耗盡、訓練變得不可能地慢)。模型研究的很大一部分內容,就是移除或推遲這些對擴展的限制。許多最重要的創新都屬於這一類,例如 MoE、稀疏注意力變體、穩定性創新(歸一化位置、初始化等)以及像 FlashAttention 這樣的系統與核心級優化。
我們在這裡研究的數據改進,對於更大的模型來說可能沒那麼重要。小模型(就像我們訓練的這類)從數據質量提升中獲益顯著,因為它們容量有限,所以你必須非常謹慎地決定要塞入什麼內容。而大模型擁有大量過剩容量,也許你只想盡可能多地往裡塞數據,即使大部分是垃圾,隨機梯度下降的魔力也會將信號從噪音中分離出來。如果你選擇激進過濾,就不得不進行數十輪 epoch,但實證結果往往比使用平均質量較低但規模更大的數據集更差。事實上,如果再考慮到前沿模型相對於 Chinchilla 最優標準最多過度訓練 100 倍,以盡量減少用於強化學習和部署的推理算力,那麼激進的數據策展危害就更大了。
一個類比可能是帆船與集裝箱船的區別:集裝箱船未必走得更快,但它能運載數千噸貨物(相當於數百個萬億 token 的預訓練數據),而且不會在波濤洶湧的海面上被掀翻(相當於在數十萬個 GPU 上穩定訓練)。
現在我們有了容量更大、更堅固的集裝箱船,就不必糾結於裝載什麼貨物了,我們可以把所有哪怕只是勉強有點用的東西都裝上去。而對於 2019 年那些又小又脆弱的帆船來說,你必須極其小心,只能攜帶最值錢的貨物。
但如果預訓練進步的本質,只是往這艘船裡裝更多貨物,那我們是不是快沒有貨物了?這是關於數據牆的問題,也是關於合成數據在多大程度上幫助我們越過這堵牆的問題。合成數據顯然已在各實驗室被廣泛使用,而我們完全尚未研究它是否能在不損害模型性能的前提下有效擴展數據語料庫。如果這類收益有限,那麼預訓練進步的主要驅動力將會停滯,因為我們不會生成更多的互聯網內容,而一個固定數據集能被策展的程度也是有限的。需要說明的是,我們目前没有任何積極理由認為真會如此。但考慮到數據對推動預訓練進步似乎如此重要,這似乎是一個關鍵問題,值得進一步研究。
Ryan Greenblatt 指出,許多歷史性的預訓練資料語料庫改進,看起來像是自動化研究人員可直接透過實證測試推動的進展,例如運行基於不同資料訓練的消融實驗,以觀察模型表現。因此,這與我們的結果完全一致:如果 AI 研發實現自動化,自 2019 年以來推動預訓練進步的資料進展可能會大幅加速。
我們想澄清一點:單獨觀察預訓練進步是加速還是放緩,並不是整體 AI 進步最重要的問題,因為過去兩年的許多收益來自強化學習。
未來研究方向
以下是一些我們認為會很酷、也很重要的未來研究方向和問題:
- 你可以在更大規模上開展這個實驗,看看數據或模型改進是否更依賴規模,從而在前沿領域產生更大影響。
- What is the marginal value of high-quality new data in pre-training and post-training, measured by final capability?
- 我們想大致了解合成數據的實際效果。一個值得研究的具體問題是:如果你有一小批高質量數據,通過合成數據生成來放大它,相比直接多輪訓練這批數據,效果能好多少?
- 你可以透過實驗室在數據經紀商、環境生產者等方面的支出與算力和研究人員支出的比例,推算數據的隱含價值。
我們想研究數據在推動 AI 進步中扮演了什麼角色。還有許多其他方法可以探討這個問題,其中一些可能比我們的方法更巧妙、更有資訊量。而且我們的實驗規模非常小。我們確實認為可能遺漏了一些東西,非常想知道其他人會如何研究這個問題,最好也能看到他們的結果!
特別感謝 Charlie O'Neill 的許多有益討論。
附錄:方法論


我們在不同數據語料上從零開始預訓練這些模型配方,使用不同的算力預算,並設置多個獨立種子6。我們的算力預算為:1e17、3.16e17、1e18、3.16e18 和 1e19 FLOP。算力計算慣例為使用名義算力 C = 6ND(N 為非嵌入參數量,D 為數據 token 數)。
在每個算力預算下,我們調整參數量,從而調整訓練的 token 數,以確定每種訓練配方與語料組合的算力最優配比。我們使用語料上的留出損失來確定這個算力最優點。然後我們可以得到每種組合下游性能的算力擴展曲線,並從中最終提取算力乘數。
我們在所有運行中強制使用共享分詞器和上下文長度:GPT-2 BPE(tiktoken,50257 詞表)和 T=2048,batch = 262144 token。
我們訓練運行的最終能力高度依賴超參數。顯然,不可能遍歷所有可能的超參數組合,超參數調優確實是一門精細藝術!我們盡量對此進行控制,並將峰值學習率視為最主要的关键超參數。
某些算法版本確實提供了峰值學習率應調整至何值的規範,作為其他相關變量(如模型大小、數據預算、批大小等)的函數。這些為我們判斷最優學習率提供了良好的先驗。
我們首先在 5 個錨點上掃描學習率:3 種不同模型大小和 2 種不同 D/N 比率。我們確定這些錨點的最優學習率,並擬合最優學習率參數形式。
對於除 OLMo-2 之外的所有模型配方,我們擬合一個共同的指數 a 和 b,以及一個模型特定的 lr₀。對於 OLMo-2,我們使用該模型配方所規定的最優學習率。我們這樣處理 OLMo-2 的原因是 Ai2 發布了小模型階梯作為配方的一部分,其中規定了我們所研究規模下的最優超參數。我們還在 3.16e18 FLOP 的算力最優點驗證了我們的生產學習率處於或接近最優。
主要技術結果


解釋圖表中的一些異常
我們觀察到,在模型和數據兩個維度上,算力效率隨時間普遍提升,這符合預期。我們觀察到的一些異常值:
- NeoX 在 1e19 時的表現不如 GPT-2(儘管在 1e17 到 3.16e18 範圍內表現更好)。這可能源於 OLMES 評估中的噪聲。我們還注意到,在 FineWeb-Edu 語料的留出預訓練損失上,NeoX 的表現優於 GPT-2。
- The Piles 的表現似乎遠遜於 OpenWebText。這並不奇怪,因為 The Pile 的主要改進在於數據語料的多樣性,而非過濾。它包含一個精心策劃的 22 個數據源混合,涵蓋 PubMed 和 arXiv 論文、GitHub 代碼、法律意見、專利和議會記錄。對於這些 token 中的許多來說,向 OLMES(英語網絡散文多選題)的跨領域遷移可能很小,因此導致算力效率較低。我們注意到,由於規模更大,我們預期 The Pile 在更大規模下最終會優於(規模確實很小的)OpenWebText。
- 還值得注意的是,NeoX 和 Pile 的算力乘數是通過外推獲得的,這引入了額外的潛在誤差。
如何計算算力乘數及其誤差線
- 算力擴展曲線上的每個點均來自多個獨立種子訓練運行。該處的誤差線為 OLMES 評估在這些種子上的標準差。
- 考慮在某個算力水平下的某個給定參考性能水平的參考模型或數據語料。
- 我們隨後通過在候選模型或語料的算力擴展曲線上,找到首次達到該參考性能水平的最左側點,來計算算力乘數。參考所需算力與候選所需算力之比,即為候選的算力乘數。
- 算力乘數的誤差線來自整個估計流程的參數自助法,為 1 個標準差區間。
- 我們確實想強調,我們預期模型配方算力乘數的實際不確定性高於誤差線所示。這是因為我們進行的超參數調優範圍有限,而最終能力或保留損失可能對峰值學習率、批次大小等的精確選擇相當敏感。
同樣重要的是要注意,我們的消融實驗由於多種原因無法完全捕捉算力效率提升的全部範圍。事實上,從 2019 年到 2025 年,我們觀察到模型端的年同比算力效率提升為 1.24 倍 [1.19, 1.29],數據端為 1.51 倍 [1.45, 1.57]。聯合測量時,我們觀察到年同比算力效率提升為 1.57 倍 [1.49, 1.65]7。這確實遠低於 Anson Ho 等人年同比 3 倍的平均估計,原因如下:
- 許多收益可能依賴規模,或在較長上下文中尤為重要,而我們的操作規模太小,無法體現許多收益。例如,OLMo-2 的層範數和 QK 范數,NeoX 中的並行注意力加 MLP 塊。
- 推理效率優化(例如 LLama-3 的 GQA,這是一種 KV 緩存優化)在我們的研究中不會體現為算力乘數。我們也沒有研究分詞器的改進。
- 我們獲得的算力乘數對我們每年選擇的模型配方或數據語料相當敏感。我們選擇了我们认为具有代表性的模型配方或數據語料,但並非窮盡性地證明這些是每年最佳的。
- 我們關注的是相對於 OLMES 基準(結合了 10 種相對簡單的任務類型)的算力乘數,而非達到某個困惑度指標的算力乘數。如果我們查看其他基準(例如編碼或問題求解專用基準),數字也會大不相同,這些基準可能會獎勵截然不同的數據工程方法。
我們還想指出,我們並未研究其他數據側的改進,例如從新來源收集更多高質量數據、人類專家生成的數據、合成數據生成方法等。我們研究的大多數語料均來自同一 Common Crawl 的策展(子集),而非擴展可用數據集合。這明顯是在消耗有限存量,此杠杆所能推動的程度是有限的。
收益與模型配方及資料集的獨立性
我們進行了以下調查,以確定模型配方與數據集收益之間的獨立程度。我們分析了在 3.16e18 FLOPs 下的 OLMES 分數網格。對 OLMES 分數進行線性回歸,模型為 OLMES 分數 = 均值 + 模型效應 + 數據效應,得到 R 平方為 0.88。這意味著 OLMES 分數中 88% 的變異可由模型與數據改進的加性效應解釋,僅約 12% 的變異來自交互項或高階項,以及評估噪聲。這表明複雜的模型與數據交互(即某種模型改進依賴於特定數據工程,或反之)相對較小。

Anson Ho 等人估算軟體效率的改進(在預訓練中)為每年 3 倍(95% 置信區間:1.5 倍到 64 倍)。正如 Ho 在這篇部落格中提到的,“大多數軟體進步實際上可能來自資料品質的改進”,以及“來自少數幾個與規模相關的演算法變化的擴展”。
我們使用 C = 6ND 這一約定來計算算力。
2019 年的模型配方是 GPT-2,2025 年的模型配方是 OLMo-2。2019 年的數據集是 OpenWebText,2025 年的數據集是 UltraFineWeb。
我們在 Pile 上訓練 GPT3 時遇到了一些不穩定問題(梯度尖峰)。
這些包括:優化器改進、預熱加衰減調度、用 RoPE 替代學習絕對位置、RMSNorm 加 SwiGLU 門控 MLP、Norm 重排、QK-norm、Z-loss 正則化以及更乾淨的初始化。
對於算力擴展圖,我們每個使用至少 3 個種子。對於在 3.16e18 預算下的模型配方和數據集組合的 7x7 網格,我們每個只使用了 1 個種子。
1.57 倍的同比乘數是根據從 2019 年模型與語料到 2025 年模型與語料的聯合改進計算而得,而非模型端 1.24 倍改進與數據端 1.51 倍改進的乘積。
