幾十萬人關注,一發表即被行業大佬評爲 " 這是很長時間以來最重要的論文 "。
哈佛、斯坦福、MIT 等團隊的一項研究表明:訓練的 token 越多,需要的精度就越高。
例如,Llama-3 在不同數據量下(圓形 8B、三角形 70B、星星 405B),随着數據集大小的增加,計算最優的精度也會增加。
換句話就是,對于大規模的訓練任務,低精度的量化可能不再足夠有效。
按照結論,對 Scaling Law 的遵循意味着我們需要保持更高精度,然而一直以來,人們通常會選擇量化(将連續值或多精度值轉換爲較低精度)來節省計算資源。
一旦結論成立,GPU 的設計和功能可能也需要相應調整,因爲傳統上,GPU 的性能提升部分依賴于對低精度計算的優化。
正如艾倫 AI 研究所科學家所指出的:
這是很長時間以來最重要的論文。它用強有力的證據表明,我們正在達到量化的極限。論文得出的結論對整個領域以及 GPU 的未來有着廣泛的影響。
與此同時,研究得出了兩個重要結論:
如果量化是在後訓練階段進行的,那麽更多的預訓練數據最終可能反而有害;
在高(BF16)和下一代(FP4)精度下進行預訓練可能都是次優的設計選擇;
這也引來 OpenAI 員工大贊特贊:
将非常酷地看到如何 SOTA 量化方案(mxfp,Pw ≠ Pkv ≠ Pa 等)推動前沿;在我看來,将一半的計算預算用于一次大規模運行以檢查模型是否适用于大模型是值得的。
提出 " 精度感知 "Scaling Laws
一上來,研究就指出,當前擴展的焦點主要放在了模型規模、數據量上,忽視了對精度的關注。
而事實上,随着模型進一步應用落地,低精度量化正在成爲新的範式。
深度學習正朝着更低精度的方向發展。
當前的前沿模型(如 Llama-3 系列)在 BF16 中進行訓練,并且大家都在努力将預訓練範式轉移到 FP8,甚至下一代硬件将支持 FP4;
因此,研究想要搞清:
精度、參數和數據之間的權衡是什麽?它們在預訓練和推理方面如何比較?
具體而言,團隊研究了在預訓練和後訓練 ,随着數據和參數的變化,精度對損失的影響如何變化。
同時,爲了精确測量相關變化,團隊專門提出了" 精度感知(precision-aware)"的 Scaling Laws,以預測和優化不同精度下的語言模型訓練和推理。
先說結論。下圖展示了兩個主要的實驗結果:
在較低精度下訓練模型(例如 INT3 和 INT4)會導緻較高的損失;
在推理時使用較低精度會導緻性能下降;
具體而言,左側圖表展示了在不同精度下訓練模型的效果。
其中縱軸表示最終的驗證損失(Val Loss),橫軸表示不同的模型規模(Model Size),從 30M 到 220M 參數。不同的顔色代表了不同的訓練精度,從 INT3 到 INT6,以及沒有後訓練量化(No PTQ)。
研究發現,在較低精度下訓練模型(例如 INT3 和 INT4)會導緻較高的損失,而随着精度的提高,損失會減少;同時,随着模型規模的增加,損失也會減少。
另外,右側圖表展示了在不同精度下進行推理時的模型性能。
其中橫軸表示了推理時的權重精度(Final Val Loss)。
結果顯示,在推理時使用較低精度(例如 INT3 和 INT4)會導緻性能下降,即損失的增加;而随着精度的提高,損失會逐漸減少,接近沒有進行後訓練量化的模型性能。
上述發現也解釋了爲什麽 Llama-3 難以量化?
要知道,Llama-3 發布後,它因 " 超 15T Token 數據上的超大規模預訓練 " 而聞名,不過人們後來發現,Llama-3 低比特量化性能下降顯著。
這可能正如研究提到的,模型在預訓練階段看到的數據越多,對量化的敏感性就越高。
與此同時,研究還發現了:
後訓練量化(PTQ,即訓練完成後對模型進行量化)引起的性能退化随着模型訓練數據量的增加而增加。
換句話說,在大量數據上訓練的模型,如果在推理時進行低精度的 PTQ,可能會導緻性能顯著下降。
接下來,團隊提出利用 " 精度感知 "Scaling Laws 來預測模型在不同精度下的性能,并指出:
在較低精度下進行訓練可以減少模型的 " 有效參數數量(effective parameter count)",從而預測在低精度下訓練和後訓練量化産生的額外損失。
其中包含兩個關鍵公式,它們構成了一個統一的理論框架,用于預測不同精度下訓練和推理的性能。
訓練後量化(PTQ)引起的損失退化預測公式:
考慮訓練精度的模型損失預測公式:
統一預訓練與後訓練的精度預測
BTW,研究最終将後訓練量化和預訓練量化的影響統一起來,以此實現:
預測在任何精度組合下的預訓練和後訓練損失
相關公式如下:
同時,爲了驗證預測的準确性,研究對超過 465 次預訓練運行的數據進行拟合,并在高達 1.7 億參數、訓練了高達 260 億個 token 的模型上進行了驗證。
并在過程中提出了以下幾點建議:
需要衡量精度與性能,在資源有限的情況下,可以考慮使用較低的精度來訓練更大的模型;
需要衡量精度與參數,在低精度下訓練時,可以考慮增加模型的規模(即參數數量),因爲研究表明這樣做可能是計算上最優的;
需要優化數據量,通過數據增強、選擇性數據采樣等技術提高數據使用率,并在預訓練時應避免使用過多的數據,特别是在模型需要後期量化的情況下。
不過,這項研究目前也存在一定局限性,比如作者自述使用了一個固定的模型架構來控制變量。
這意味着,相關結果可能不适用于經過架構調整的低精度訓練模型,因爲架構的變化可能會影響模型對精度變化的敏感性。
最後,有網友還想得更遠。提出一旦量化失敗,還有 3 條路可以考慮:
擴展數據中心
轉向更小的專業模型
知識蒸餾
你怎麽看?
論文:
https://arxiv.org/abs/2411.04330
參考鏈接:
[ 1 ] https://x.com/Tim_Dettmers/status/1856338240099221674
[ 2 ] https://x.com/Tanishq97836660/status/1856045600355352753