
使用這些基本 REST API 最佳實踐構建出色的 API
上圖是強化學習中的一些例子,黑色點為實驗數據,紅色線為擬合的規模律,綠色點為驗證數據。可以看到,如果規模律的擬合效果好,就可以用來預測大規模模型的表現。除了上述單調的規模律,還有一些非單調的規模律,如下圖所示。Tranformer 的性能隨著模型的寬度增加先增加后減小最后再增加。
討論大語言模型規模律最重要的兩篇可以說是 OpenAI 的 [KMH+20] 和 DeepMind 的 Chinchilla[HBM+22] 了。我們將主要介紹這兩篇文章的結論。
在 [KMH+20] 中,作者認為模型增大 5 倍,數據量增大 8 倍。[HBM+22] 認為兩個因素導致了[KMH+20] 中的錯誤:
這里展式 [HBM+20] 中的一種論證,即繪制相同 下不同 與最優 的關系,從而得到最優配置。
另一方面,訓練損失隨著訓練步數呈現快速下降-線性-平坦三個階段的特點(見下圖 Llama 訓練圖)。由于訓練早期訓練損失的快速下降,臨界批量大小又隨損失冪律下降,可見臨界批量大小隨訓練步數下降的很快。我們用將 llama 的損失帶入計算,當訓練的非常前期損失就能下降到 2.2,臨界批量大小 4.7M,這與 llama 使用的 4M 批量大小吻合。這也解釋了為什么可以省略掉批量大小的調整。
如果損失能夠下降到 1.5,臨界批量大小就會增加到 30M,所以 llama 可以在訓練中進一步增加批量大小的使用。按此推斷,GPT-4 最終使用了 60M 的批量大小,對應的訓練損失可能為 1.3。
5. 模型的遷移泛化能力與在訓練數據集上的泛化能力正相關。
如右圖所示,在訓練數據集上的測試損失越低,則在其它數據集上的損失也越低(如訓練在 Wikipedia,測試在 WebText2)。右圖則顯示隨著參數量增大,模型的測試損失越低。且在不同數據集上的測試損失與在訓練集上的測試測試損失僅僅相差一個常數偏移。
6. 更大的模型收斂更快(更少的數據量達到相同的損失)
下圖中越亮的線代表更大的模型。左圖說明達到相同的測試損失,使用大模型需要見到的數據量更少。右圖中則是使用相同計算量的比較。兩條線的交點分割了使用大小模型的優劣:在交點左側應該使用小模型,在交點右側應該使用大模型。
圖中另外一個重要的觀察是,訓練后期損失下降的更慢。故與其訓練一個小模型到收斂,不如用相同的資源訓練一個不到收斂的大模型更加高效。
涌現現象指的是模型的某些性能隨著模型參數增加到一定規模突然不可預測的快速提升。這被認為是大模型能力的重要體現。這里我們研究的是指標性能與模型參數的關系,也是一種規模律。
[SMK23] 論文則指出,大部分所謂的涌現現象,都出現在兩種指標上:多選題的正確性,以及完全字符串匹配正確性。更換指標可以更好的對模型能力的規模性進行預測。
上文中我們已經知道,模型損失值隨模型參數指數下降(圖A),從而可以得到單個樣本預測的正確率指數上升(圖B)。如果將非線性指標“完全字符串匹配正確率”替換為“錯誤預測的 Token 數”,可以發現同樣的冪律分布。同理,將不連續的選擇正確率替換為連續的選擇正確率,也可以得到冪律分布。
筆者認為,這篇文章不應該看做對”涌現“重要性的否定。在現實世界、生活、市場中,我們關心的指標就是非線性,或者說非連續指標。這篇文章的意義在于,我們可以用連續指標更好的建模規模律,從而預測非連續指標的變化。同時,這也揭示了大模型中”量變產生質變“的背后機理,并不需要用“整體的復雜交互”進行解釋。
通過上文中的大模型參數經驗,我們很容易就發現大模型需要更小的學習率。[YHB+22] 在下左圖中展示了這點。其認為這是為了控制總方差在一定值(方差隨參數量以 增大)。對于這點筆者暫未找到詳細的理論解釋。[YHB+22] 中還提出了一種新的初始化和參數設置方法以保證不同規模的模型可以使用相同的學習率,這里不再展開。
[MRB+23] 探究了當數據有限時,如何訓練大模型。左圖中,當輪次小于 4 時,與使用新數據效果相當(GPT-4 中重復了文本兩次,代碼四次,與該結果印證)。當輪次大于 40 次時,則幾乎沒有提升。右圖中,用左圖的擬合結果可以計算得到,相比于 Chinchilla 的規模性,使用重復數據訓練時,應該用更多的數據(重復數)訓練較小的模型。
[XFZ+23] 進行了大量的實驗驗證了一系列觀點。下左圖中,作者在 Encoder-Decoder 模型上驗證了 Chinchilla 規模律同樣成立(即數據量與模型參數量應該同時增加)。右圖則顯示了使用出發數據訓練對性能沒有幫助。文中還嘗試了高質量數據、UL2 訓練目標、不同的正則化方法,最終發現除了 Dropout 之外對重復訓練都沒有幫助。
Chinchilla 規模律的出發點是給定計算量,通過分配參數量和數據量最小化損失值。換言之,給定要達到的損失值,最小化計算量。然而在實際中,訓練一個小模型能帶來計算量(代表訓練開銷)以外的收益:
故 [H23] 提出,在不大幅度增加訓練開銷的前提下,盡可能減小模型的參數量。具體而言,作者在 Chinchilla 規模律的基礎上,讓模型的參數量變為 ,進而計算出達到相同損失所需的數據量 。通過推導可得 與 無關,即無論訓練開銷多大, 與 的關系都是一致的。下圖展示了計算量的增加值 與 的關系。
其中,LLaMA-7B 就比 Chinchilla 中對應的最優解使用了更小的模型和更多的計算量(數據)。由于參數量減小到一定程度,需要的計算量會有急劇的上升,作者認為模型的大小不應該小于臨界模型大小。譬如當使用 30% 的參數量時,所需計算量會增加 100%。參數量不應該再繼續減小(否則計算量會上升很多)。
在 Llama-2 上我們也能看到類似的現象。根據 Chinchilla 規模性,2T 數據對應大約 50B 的參數量。所以對于 Llama-2-7b 來說,訓練了一個相對更小的模型。而對于 Llama-2-70b 來說,則不夠效率。
Werra 認為我們應該用更多的數據繼續訓練更小的模型。這其中的難點在于:
init: N(0, 0.02), weights before residual layer??
sch: warmup 10k, decay at
L2: lr
[ADV+23] Why do we need weight decay in modern deep learning?
[CGR+23] Broken neural scaling laws
[HBM+22] Training Compute-Optimal Large Language Models
[KMH+20] Scaling Laws for Neural Language Models
[SMK23] Are Emergent Abilities of Large Language Models a Mirage?
[YHB+22] Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer
[MRB+23] Scaling Data-Constrained Language Models
[XFZ+23] To Repeat or Not To Repeat: Insights from Scaling LLM under Token-Crisis
[H23]?Go smol or go home
文章轉自微信公眾號@算法進階