Llama架構比不上GPT2?神奇token提升10倍記憶?
一個 7B 規模的語言模型 LLM 能存儲多少人類知識?如何量化這一數值?訓練時間、模型架構的不同將如何影響這一數值?浮點數壓縮 quantization、混合專家模型 MoE、以及數據質量的差異 (百科知識 vs 網絡垃圾) 又將對 LLM 的知識容量產生何種影響?
近日,朱澤園 (Meta AI) 和李遠志 (MBZUAI) 的最新研究《語言模型物理學 Part 3.3:知識的 Scaling Laws》用海量實驗(50,000 條任務,總計 4,200,000 GPU 小時)總結了 12 條定律,為 LLM 在不同條件下的知識容量提供了較為精確的計量方法。
作者首先指出,通過開源模型在基準數據集 (benchmark) 上的表現來衡量 LLM 的 scaling law 是不現實的。例如,LlaMA-70B 在知識數據集上的表現比 LlaMA-7B 好 30%,這并不能說明模型擴大 10 倍僅僅能在容量上提高 30%。如果使用網絡數據訓練模型,我們也將很難估計其中包含的知識總量。
再舉個例子,我們比較 Mistral 和 Llama 模型的好壞之時,到底是他們的模型架構不同導致的區別,還是他們訓練數據的制備不同導致的?
綜合以上考量,作者采用了他們《語言模型物理學》系列論文的核心思路,即制造人工合成數據,通過控制數據中知識的數量和類型,來嚴格調控數據中的知識比特數 (bits)。同時,作者使用不同大小和架構的 LLM 在人工合成數據上進行訓練,并給出數學定理,來精確計算訓練好的模型從數據中學到了多少比特的知識。
- 論文地址:https://arxiv.org/pdf/2404.05405.pdf
- 論文標題:Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws
對于這項研究,有人表示這個方向似乎是合理的。我們可以使用非??茖W的方式對scaling law 進行分析。
也有人認為,這項研究將 scaling law 提升到了不同的層次。當然,對于從業者來說是一篇必讀論文。
研究概覽
作者研究了三種類型的合成數據:bioS、bioR、bioD。bioS 是使用英語模板編寫的人物傳記,bioR 是由 LlaMA2 模型協助撰寫的人物傳記(22GB 總量),bioD 則是一種虛擬但可以進一步控制細節的知識數據(譬如可以控制知識的長度、詞匯量等等細節)。作者重點研究了基于 GPT2、LlaMA、Mistral 的語言模型架構,其中 GPT2 采用了更新的 Rotary Position Embedding (RoPE) 技術。
左圖為訓練時間充足,右圖為訓練時間不足的 scaling laws
上圖 1 簡要概述了作者提出的前 5 條定律,其中左 / 右分別對應了「訓練時間充足」和 「訓練時間不足」兩種情況,分別對應了常見知識(如中國首都是北京)和較少出現的知識(如清華物理系成立于 1926 年)。
如果訓練時間充足,作者發現,不論使用何種模型架構,GPT2 或 LlaMA/Mistral,模型的存儲效率均可以達到 2bit/param—— 即平均每個模型參數可以存儲 2 比特的信息。這與模型的深度無關,僅與模型大小有關。換言之,一個 7B 大小的模型,如果訓練充足,可以存儲 14B 比特的知識,這超過了維基百科和所有英文教科書中人類知識的總和!
更令人驚訝的是,盡管傳統理論認為 transformer 模型中的知識主要存儲在 MLP 層,但作者的研究反駁了這一觀點,他們發現即便移除了所有 MLP 層,模型仍能達到 2bit/param 的存儲效率。
圖 2:訓練時間不足情況下的 scaling laws
然而,當我們觀察訓練時間不足的情況時,模型間的差異就顯現出來了。如上圖 2 所示,在這種情況下,GPT2 模型能比 LlaMA/Mistral 存儲超過 30% 的知識,這意味著幾年前的模型在某些方面超越了今天的模型。為什么會這樣?作者通過在 LlaMA 模型上進行架構調整,將模型與 GPT2 的每個差異進行增減,最終發現是 GatedMLP 導致了這 30% 的損失。
強調一下,GatedMLP 并不會導致模型的「最終」存儲率變化 —— 因為圖 1 告訴我們如果訓練充足它們就不會有差。但是,GatedMLP 會導致訓練不穩定,因此對同樣的知識,需要更長的訓練時間;換句話說,對于較少出現在訓練集里的知識,模型的存儲效率就會下降。
圖 3:quantization 和 MoE 對模型 scaling laws 的影響
作者的定律 8 和定律 9 分別研究了 quantization 和 MoE 對模型 scaling law 的影響,結論如上圖 3 所示。其中一個結果是,將訓練好的模型從 float32/16 壓縮到 int8,竟然對知識的存儲毫無影響,即便對已經達到 2bit/param 存儲極限的模型也是如此。
這意味著,LLM 可以達到「信息論極限」的 1/4—— 因為 int8 參數只有 8 比特,但平均每個參數可以存儲 2 比特的知識。作者指出,這是一個普遍法則(universal law),和知識的表現形式無關。
最引人注目的結果來自于作者的定律 10-12(見圖 4)。如果我們的 (預) 訓練數據中,有 1/8 來自高質量知識庫(如百度百科),7/8 來自低質量數據(如 common crawl 或論壇對話,甚至是完全隨機的垃圾數據)。
那么,低質量數據是否會影響 LLM 對高質量知識的吸收呢?結果令人驚訝,即使對高質量數據的訓練時間保持一致,低質量數據的「存在本身」,可能會讓模型對高質量知識的存儲量下降 20 倍!即便將高質量數據的訓練時間延長 3 倍,知識儲量仍會降低 3 倍。這就像是將金子丟進沙子里,高質量數據被嚴重浪費了。
有什么辦法修復呢?作者提出了一個簡單但極其有效的策略,只需給所有的 (預) 訓練數據加上自己的網站域名 token 即可。例如,將 Wiki 百科數據統統加上 wikipedia.org。模型不需要任何先驗知識來識別哪些網站上的知識是「金子」,而可以在預訓練過程中,自動發現高質量知識的網站,并自動為這些高質量數據騰出存儲空間。
作者提出了一個簡單的實驗來驗證:如果高質量數據都加上一個特殊 token(任何特殊 token 都行,模型不需要提前知道是哪個 token),那么模型的知識存儲量可以立即回升 10 倍,是不是很神奇?所以說對預訓練數據增加域名 token,是一個極其重要的數據制備操作。
圖 4:預訓練數據「知識質量不齊」情形下的 scaling laws,模型缺陷以及如何修復
結語
作者認為,通過合成數據,計算模型在訓練過程中獲得的知識總量的方法,可以為「評估模型架構、訓練方法和數據制備」提供了一套系統且精確的打分體系。這和傳統的 benchmark 比較完全不同,并且更可靠。他們希望這能幫助未來 LLM 的設計者做出更明智的決策。