Llama架構比不上GPT2?神奇token提升10倍記憶?

机器之心發表於2024-04-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

對於這項研究,有人表示這個方向似乎是合理的。我們可以使用非常科學的方式對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 的設計者做出更明智的決策。

相關文章