トレーニング ワークロードには次の 2 種類があります。
- コンピューティング バウンド
- コンピューティングが制約を受けない
コンピューティング制約トレーニングは、利用可能なトレーニング データの量やその他の要因ではなく、トレーニングに費やせる時間によって制限されます。つまり、「最適な」トレーニング時間は、予算が許す限り「いつでも」できます。なんらかの方法でトレーニング期間を延長または効率化できる場合は、トレーニングの損失が低下します。(適切に調整すると、検証損失も減少します)。
コンピューティング能力に基づくトレーニングの高速化は、トレーニングの向上と同等です。とは言え、ワークロードがコンピューティング上限にあるからといって、トレーニング期間を延長または高速化することが、結果を向上させる唯一の方法になるわけではありません。
トレーニングがコンピューティング能力に限界がない場合は、好きなだけトレーニングを行うことができます。ただし、モデルのトレーニング時間を長くしても、あまり役に立たないか、過学習が発生する可能性があります。トレーニングがコンピューティング能力に限らない場合:
- トレーニングの損失をごく少量に抑えることによって、追加のトレーニングでトレーニングの損失をわずかに減らすこともできますが、検証の損失を有意に減らすことはできません。
- 特に学習率の減衰スケジュールはトレーニング予算と特に強い相互作用があるため、簡単に調整できます。一方、コンピューティングバウンドのトレーニングでトレーニングの損失を低くするには、完璧に調整された学習率の減衰スケジュールが必要になる場合があります。
特定のワークロードがコンピューティング バウンドかどうかに関係なく、勾配の分散(バッチ全体)が増加すると、通常トレーニングの進捗が遅くなり、特定の検証損失に到達するために必要なトレーニング ステップ数が増加する可能性があります。次のいずれかを行うと、高い勾配分散が発生する可能性があります。
- 小さいバッチサイズを使用する。
- データの拡張を追加する。
- 特定の種類の正則化(ドロップアウト正則化など)を追加します。
トレーニングがコンピューティング能力に制限されていない場合にトレーニングする期間を決定する
目標: トレーニング ステップを無駄にすることなく、モデルが最善の結果に到達するのに十分な時間トレーニングを行う。
主な目標は、不要なトレーニング ステップを浪費することなく、モデルが最善の結果を達成するのに十分な時間トレーニングを行うことです。判断に迷う場合は、トレーニングの時間を長めにします。評価指標(適合率、再現率、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% のトレーニングしか受けていない可能性があります。ただし、この上限の結論は、100% だけでなく、本番環境の長さの 20% でテストする場合には当てはまらない可能性があります。
トライアルごとのトレーニング ステップの上限を増やして複数回のサイクルをチューニングすることは、有効な方法です。ラウンドは何回でも実行できますが、通常は 1 ~ 3 ラウンドで行うのが最も簡単です。基本的には、処理に非常に短いトライアルを使用して、問題点をできるだけ理解するようにしてください。そのトレードオフは次のとおりです。
- 徹底的な調整。
- 最も時間がかかった最後のランとの関連性。
トライアルごとの時間制限に基づいて有用な分析情報が生成されたら、トレーニング時間を短縮し、調整を続行して、必要に応じて短いテスト期間から結論を再確認します。最初に、次の 2 つの調整方法をおすすめします。
- ラウンド 1: 適切なモデルとオプティマイザーのハイパーパラメータを見つけるために実行時間が短縮されます。
- ラウンド 2: 最終モデルを取得するために、適切なハイパーパラメータ ポイントで非常に長い期間が実行されることはほとんどありません。
ラウンド 1 とラウンド 2 の最大の疑問は、
学習率の減衰スケジュールを調整する方法
ラウンド間で学習率のスケジュールを調整するときに陥りやすい落とし穴の一つとして、学習率が小さすぎる追加のトレーニング ステップをすべて使用するというものがあります。
第 1 ラウンド: 多数の短いトレーニング
残念ながら、トレーニングの長さを大幅に増やすと、短いハイパーパラメータで不十分なハイパーパラメータが適切な選択肢になる保証はありません。ただし、一部のハイパーパラメータは、ラウンド 1 で役立つため、多くの場合、適切な選択肢に相関関係があります。短い実行時間で見つかったハイパーパラメータ値は、長いトレーニング実行に正常に転送されますか?詳しくわかりません。 これまでのところ、以下の確率で転送の確率を下げています。
- 可能性は高い。最初のトレーニングの不安定性は、少ないトレーニング ステップで最初の調整を行うことで解決できます。次のハイパーパラメータが転送される可能性が最も高いです。
- ウォームアップの長さ
- 初期化
- 移行の可能性が高い。通常は、モデル アーキテクチャの劇的な勝利は転送されますが、多くの反例が発生する可能性があります。
- 転送できます。次のハイパーパラメータが転送される場合があります。
- 最適化アルゴリズムとハイパーパラメータは「大まかに」転送されます。
- データの拡張。
- 正則化。トレーニング セットに完全には適合できない場合、モデルは、正則化がほとんど役立つ可能性のない領域が存在する可能性があります。
- 転送する可能性は低い。学習率のスケジュールが完全に転送される可能性は低くなります。Compute-Optimal Large Language モデルのトレーニングから、減衰のスケジュール転送が示唆されていますが、一般にはそうではないと確信しています。たとえば、少数のトレーニング ステップで sqrt 減衰を調整してから、多くのトレーニング ステップに拡張すると、トレーニングの大部分が過度に小さなステップで発生します。ほとんどのスケジュールでは、極端なトレーニング予算の上限で「十分」になる可能性がありますが、調整するとパフォーマンスが大幅に向上する可能性があります。確率的メタ最適化における短期的バイアスを理解するでは、学習率を選択する際の危険が神秘的に説明されています。
第 2 ラウンド: 実行数は減るが実行時間は長い
ラウンド 1 で最適なハイパーパラメータ構成を実行します。
推測: 🤖? 追加の手順を使用して、高い学習率でトレーニング期間を延長します。たとえば、線形スケジュールを使用している場合、ラウンド 1 から減衰の長さを一定に保ち、最初の定数 lr
の期間を延長します。コサイン減衰の場合は、第 1 ラウンドのベース を保持し、コンピューティング最適化大規模言語モデルのトレーニングの説明に従って max_train_steps
を拡張します。lr
次のすべてを含むチームでは、追加のトレーニングを行うことをおすすめします。
- 非常に成熟したモデリング
- パイプラインの調整
- 非常に長く費用のかかる本番環境トレーニングの実行
しかし、追加のトレーニング実行は非生産的な場合が多くあります。
ラウンド 1 からラウンド 2 に移行する方法については、すでに説明しました。 分析時間が重要ではなく、コンピューティング リソースの効率的な利用が優先事項である場合は、さまざまな調整サイクルでトレーニングの実行時間を指数関数的に増やす(つまり、調査を完了するまでの合計時間)ことを推奨します。
- 毎回、体系的に選択肢を選択し続けるようにします。
- ステップ I からステップ i+1 までの、時間の経過に伴って進むテストを使用して、新しいアイデアを徐々にリスクにさらすパイプラインを介して展開します。