筆記

想像一下,假設有位富有的朋友提供我們 10000 張 H100 GPU 一個月,要求我們訓練出一個頂尖的 open source language model,那我們下一步該做什麼?

假設已經準備好這兩件事,下一個重要的問題是「我們該運行『哪一個』模型來訓練?」

Scaling isn’t easy.

當我們要訓練大模型時,會面臨無數的超參數選擇。例如:模型該設計得較寬還是較深?需要配置多少個 attention heads?該使用哪種 activation function?

雖然可以直接模仿現有知名模型的架構,但這無助於推動技術前沿。如果我們身處前沿實驗室且目標是建立最好的模型,就不能只是盲目複製。我們必須了解這些模型架構與參數「最初是如何被最佳化出來的」。

因此,我們希望能有簡單、可以預測模型性能的法則,這個法則被稱為 Scaling Law。 其核心作法與思維轉變為:

image.png

Scaling laws, history and background

Scaling Law 並非近幾年橫空出世,早在 ML 的理論研究時期就有透過 sample complexity 推導出 error 的 upper bound。但這推導出的終究只是 upper bound ,而非實際觀測到的 error。

[Corinna et al 1993] 這篇論文可說是 scaling laws 的先驅之一,當時在大型資料庫訓練分類器的計算成本極高,因此論文提出一種預測方法,能在完全訓練之前先預測分類器的效能是否合適,以節省資源。他們提出的測試誤差公式,與現代 scaling law 的數學形式極為相似,並且他們也實作了「在小模型上擬合曲線,再外插預測」的做法。

[Banko and Brill ‘01] 研究了 NLP 系統,發現系統效能與資料量之間存在明確的對數線性(log-linear)關係。該研究指出,單純增加資料量就能帶來顯著的效能提升。這促使人們重新思考:**「我們應該把時間和金錢花在開發新演算法,還是單純去收集更多資料?」**這與現代 pre-training 依賴 big data 的思維不謀而合。

image.png

隨著時間推移,研究人員進一步探討這種效能增長是否真的具備規律 [Prasanth et al 2012]。他們開始測試不同的數學函數,試圖找出最能精準描述「資料量」與「下游任務效能」之間關聯的方程式。

image.png

image.png