訓練工作負載分為兩種類型:
- 有限運算
- 不受運算限制
運算限制訓練的訓練時間限制取決於訓練時間,而非您擁有的訓練資料數量或其他因素。換句話說,「最佳」訓練時間一律會「只要能夠負擔」。如果可以有效訓練更長或有效率的訓練,訓練損失就會下降。(透過適當微調,驗證損失也應減少)。
加快運算限制的訓練速度相當於改善訓練作業。但這意味著,因為工作負載有限,不代表訓練功能在更短或更快的情況下才會改善結果。
如果訓練未受運算限制,您可視需要無限進行訓練。但是,訓練模型的所需時間可能較長,甚至可能會導致過度配適。未受運算限制的訓練:
- 您可以訓練極少的訓練損失,而額外的訓練可能會稍微減少訓練損失,而不會降低驗證損失。
- 因為您可以更輕易地調整學習率,特別是調整學習率衰減時間表,因為這類訓練與訓練預算的互動程度特別高。相反地,如果進行運算受限訓練的訓練損失較低,則可能需要將學習衰減時間表調整至最佳狀態。
無論指定工作負載是否受到運算限制,只要增加訓練變數變異數 (批次處理),通常就會減緩訓練進度,因而可能會增加達到特定驗證損失所需的訓練步驟數量。下列任何情況都會造成高漸層變化:
- 使用較小的批次大小。
- 新增資料擴充。
- 新增某些類型的正規化 (例如棄置正規化)。
決定訓練時不受運算限制的訓練時間
您的目標:訓練模型夠長,足以讓預算達到最佳結果,無須浪費訓練步驟。
您的主要目標是確保訓練時間足夠,以獲得最佳結果,而且無須浪費不必要的訓練步驟。如有疑慮,請延長訓練時間。假設在正確使用檢查點的選擇項目,且頻繁地頻繁地進行檢查,您的評估指標 (例如精確度、喚回度、AUC 或 F1) 進行訓練時不應降低效能。
請勿在研究中調整「max_train_steps
」的號碼。請改為選取所有測試的值,並使用相同的值。在這些測試中,請規劃懷舊檢查點選擇的訓練步驟,以便修正 max_train_steps
。
舉例來說,如果最佳步驟一律是前 10% 的訓練,那麼步數步驟上限就太高。或者,如果在最後 25% 的訓練中,最佳做法還是持續進行,或許可以享有更長的訓練時間,並微調衰減時程。架構或資料變更時 (例如新增資料擴增),理想訓練步驟的數量可能會改變。下一節將說明如何根據常數學習率「完成」訓練集所需的步驟數量,為 max_train_steps
選擇初始候選值。
如果訓練程序以某種方式改善,例如:經過最佳化的最佳化器或更適性的學習時間表,就可以降低 max_train_steps
。
運用學習率清除功能,為 max_train_steps 選擇初始候選的演算法
您可以利用學習率清除演算法,為 max_train_steps
選擇初始候選項目。以下演算法會假設應用程式「不」符合訓練集,並使用固定的學習率時間表來實現。
- 如果可以完全符合整個訓練集,則必須存在一些符合訓練集的設定 (
max_train_steps
值)。尋找任何這類設定,並以max_train_steps
的值做為起點N
。 - 不進行資料擴增作業的快速學習率 (即格狀搜尋學習率) 且無須經過正規化,且每次測試都會針對
N
步驟進行訓練。為了達到完美的訓練成效,在學習率調查中,最快的試用步驟數應該是您應立即推論max_train_steps
。
注意:不當的聊天室空間可能會導致自行判斷。例如,如果研究中的所有學習率都太小,您可能會誤認為 max_train_steps
非常龐大。至少,檢查研究的最佳學習率不在搜尋空間的邊界內。
決定訓練的訓練時間會受到運算限制
在某些情況下,訓練損失會無限期持續改善,因此您的耐力和運算資源會成為限制因素。但是只要能負擔足夠的經費,訓練時間就會有多長?不一定。請把握以下幾項重點:
- 您可以藉由執行更短的簡短實驗來保留,針對要推出的模型保留最長的「實際工作環境長度」執行,以更有效率的方式進行調整。
- 由於試用期的訓練時間接近您的上限,調整後的實驗將會符合潛在的上市候選性,但您可以減少部分。
- 您回答的問題可能較少,但僅訓練約 10% 的實際工作環境長度。不過,在這段時間內做出的結論可能不適用於實驗階段 20% 的實驗,因此當然,請維持 100% 的特性。
在每一回合中不斷增加,或提高每次試用的訓練步驟上限是可行的做法。你可以視需要執行任意回合,但一般而言,1-3 回合最實際。基本上,嘗試以極短的處理時間快速試用,盡可能瞭解問題,並遵循下列做法:
- 微調力度。
- 與最終最長的執行作業有關。
每次電池續航力限制都產生實用的深入分析資訊後,請增加訓練時間並持續調整,然後在短時間內反覆檢查結論。首先,我們建議有兩個音訊微調:
- 第 1 回合:系統會執行較短的持續時間,找出合適的模型和最佳化工具超參數。
- 第 2 回合:極為長時間的良好超參數點會執行最終模型,以取得最終模型。
第 1 回合 (第 2 回合) 最常見的問題是:
如何調整學習率衰減時間表。
調整回合課程的學習時間表時,會發生一個常見錯誤,就是運用所有額外的訓練步驟,但訓練率太小。
第 1 回合:短道短訓練
遺憾的是,即使訓練數量大幅增加,也不保證會在短不完整的訓練中找到良好的超參數,仍是不錯的選擇。不過,在某些超參數中,理想的選擇通常是第 1 回合的足夠相關資料。在較短的執行作業中,找到哪些超參數值會成功延長訓練時間?我們不知道,需要進行更多研究。 但根據目前所知的知識,以下是降低移轉的可能性:
- 很有可能轉移。使用較小的訓練步驟,就能在第一輪微調作業中及早訓練不穩定。下列超參數是轉移的最佳可能時機:
- 暖身長度
- 初始化
- 可能會轉移模型架構的搶手作業通常能移轉,但許多計數器範例很有可能。
- 可能會轉移。下列超參數可能會移轉:
- 最佳化演算法和超參數會「隨意」轉移。
- 資料擴充。
- 正規化。如果無法完全符合訓練集,則模型可能屬於正規化的狀態,而正規化不太可能有人幫忙處理這些事務。
- 無法轉移學習頻率時間表可能無法完美轉移。訓練 Compute-Optimal 大型語言模型建議,即使是衰退排程也可以轉移,但我們認為這通常是一般的。例如,在少量的訓練步驟中微調 qqadec 值,然後延伸到較大的數字,會導致大多數的訓練幾乎是少量的步驟。在極限訓練預算的限制下,大部分的時間表都可能會「夠好」,不過如果進行調整,成效可能會顯著提升。瞭解 Stochastic Meta 最佳化中的 Short-Horizon 偏誤。這種行為描述了嘗試以不自然的方式挑選學習率的危險。
第 2 回合:跑步次數較少,但持續時間較長
執行第 1 回合的最佳超參數設定。
推測:🤖? 使用額外步驟,以高學習率延長訓練的週期。舉例來說,如果是使用線性時間表,則請保留從第 1 回合的衰變期限,然後延長常數 lr
的期間。針對餘數衰減,請將基本 lr
從第 1 回合發布,並如訓練運算最佳化大型語言模型中所述,來擴充 max_train_steps
。
如果團隊符合下列條件,則較能接受其他訓練回合:
- 成熟模型
- 調整管道
- 長時間執行昂貴的實際工作環境訓練
不過,其他訓練的執行次數通常不會產生正式內容。
我們已經知道如何從第 1 輪到第 2 輪。 如果您不在意分析時間,而且有效利用運算資源是非常重要的,則建議您將訓練執行作業的數量大幅增加,直到開始演練時,結束計算的端對端時間如下:
- 在每個階段,系統能確保你提供的選項會持續提供良好的結果。
- 透過逐漸增加的實驗逐步從步驟 1 移至步驟 1+1,從這些管道逐步捨棄新點子。