今日最熱論文:Scaling Law后繼乏力,量化也不管用,AI大佬齊刷刷附議
幾十萬人關注,一發表即被行業大佬評為“這是很長時間以來最重要的論文”。
哈佛、斯坦福、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。