各トレーニング実行のステップ数を決定する

トレーニング ワークロードには次の 2 種類があります。

  • コンピューティング バウンド
  • コンピューティング バウンドではない

コンピューティング バウンドのトレーニングは、トレーニングに費やすことができる時間によって制限されます。トレーニング データやその他の要因によって制限されることはありません。つまり、最適なトレーニング時間は常に「可能な限り長く」なります。トレーニングをより長く、またはより効率的に行うことができれば、トレーニングの損失は減少します。(適切にチューニングすると、検証損失も減少します)。

コンピューティング バウンドのトレーニングを高速化することは、トレーニングを改善することと同じです。ただし、ワークロードがコンピューティング制限されているからといって、トレーニングを長くしたり速くしたりすることが結果を改善する唯一の方法であるとは限りません。

トレーニングがコンピューティング バウンドでない場合は、必要なだけトレーニングできます。ただし、モデルのトレーニング時間を長くしても、あまり効果がない場合や、過学習が発生する場合があります。トレーニングがコンピューティング バウンドでない場合:

  • トレーニングの損失が非常に小さくなるまでトレーニングできます。追加のトレーニングでトレーニングの損失がわずかに減少するものの、検証の損失は大幅に減少しない程度までトレーニングできます。
  • 特に学習率の減衰スケジュールを調整する場合に、より簡単に調整できます。これは、学習率の減衰スケジュールがトレーニング予算と特に強い相互作用があるためです。一方、コンピューティング バウンドのトレーニングでトレーニング損失を小さくするには、学習率の減衰スケジュールを完璧に調整する必要がある場合があります。

特定のワークロードがコンピューティング能力による制約を受けるかどうかに関係なく、勾配の分散(バッチ間)を増やす方法は、通常、トレーニングの進行を遅らせるため、特定の検証損失に達するために必要なトレーニング ステップ数が増える可能性があります。次のいずれかが原因で、勾配の分散が大きくなる可能性があります。

  • バッチサイズを小さくする。
  • データ拡張を追加します。
  • 正則化のタイプを追加する(ドロップアウト正則化など)。

トレーニングがコンピューティング バウンドでない場合にトレーニングする期間を決定する

目標: トレーニング ステップを無駄にすることなく、モデルが可能な限り最良の結果に到達するまで十分にトレーニングします。

主な目標は、不要なトレーニング ステップを無駄にすることなく、モデルが可能な限り最良の結果に達するまで十分にトレーニングすることです。判断に迷った場合は、長めにトレーニングしてください。評価指標(適合率、再現率、AUC、F1 など)は、トレーニングを長くしても劣化しないはずです。ただし、遡及的チェックポイント選択を適切に使用し、チェックポイントを十分に頻繁に設定していることが前提となります。

試験で max_train_steps の数を調整しないでください。代わりに、値を 1 つ選択し、すべてのトライアルで同じ値を使用します。これらのトライアルから、回顧的チェックポイント選択で見つかったトレーニング ステップをプロットして、max_train_steps の選択を絞り込みます。

たとえば、最適なステップが常にトレーニングの最初の 10% の間にある場合、ステップの最大数が大きすぎます。また、最適なステップがトレーニングの最後の 25% に一貫して含まれている場合は、トレーニングを長くして減衰スケジュールを再調整すると効果的です。最適なトレーニング ステップ数は、アーキテクチャやデータが変更されると(データ拡張の追加など)変化する可能性があります。次のセクションでは、一定の学習率を使用してトレーニング セットを「完全に適合」させるために必要なステップ数に基づいて、max_train_steps の初期候補値を選択する方法について説明します。

トレーニング プロセスが改善された場合(たとえば、最適化ツールのチューニングが改善された場合や、学習率スケジュールのチューニングが改善された場合など)、max_train_steps を減らすことができる可能性があります。

学習率スイープを使用して max_train_steps の初期候補を選択するアルゴリズム

学習率スイープ アルゴリズムを使用して、max_train_steps の初期候補を選択できます。次のアルゴリズムは、トレーニング セットに「完全に」適合できるだけでなく、一定の学習率スケジュールを使用して適合できることを前提としています。

  1. トレーニング セット全体を完全に適合させることが可能であれば、トレーニング セットを完全に適合させる構成(max_train_steps の値を含む)が存在する必要があります。このような構成を見つけて、その max_train_steps の値を開始点 N として使用します。
  2. データ拡張と正則化を行わずに、一定の学習率スイープ(学習率のグリッド検索)を実行します。各トライアルは N ステップでトレーニングされます。学習率スイープで最速のトライアルが完璧なトレーニング パフォーマンスに達するために必要なステップ数を、max_train_steps の初期値として使用します。

注: 検索空間が適切でないと、自己欺瞞につながる可能性があります。たとえば、スタディのすべての学習率が小さすぎる場合、max_train_steps の非常に大きな値が必要であると誤って結論付ける可能性があります。少なくとも、スタディの最適な学習率が検索スペースの境界にないことを確認します。

トレーニングがコンピューティング バウンドの場合にトレーニングする期間を決定する

トレーニング損失が無限に改善し続ける場合もあります。その場合は、忍耐力と計算リソースが制限要因になります。しかし、できる限り長くトレーニングすべきでしょうか?必ずしもそうとは限りません。次の点を考慮してください。

  • より多くの短いテストを実行し、最も長い「本番環境の長さ」の実行をリリース予定のモデル用に予約することで、より効果的にチューニングできる可能性があります。
  • 試行のトレーニング時間が許容範囲に近づくにつれて、チューニング テストは潜在的なリリース候補との関連性が高くなりますが、完了できるテストの数は少なくなります。
  • 本番環境の長さの約 10% のトレーニングだけで、多くの質問に回答できる可能性があります。ただし、この時点での結論は、本番環境の長さの 20% のテストには適用されない可能性があります。100% のテストにはなおさらです。

トライアルあたりのトレーニング ステップの制限を増やしながら、複数のラウンドでチューニングを行うのが賢明なアプローチです。ラウンド数は任意ですが、通常は 1 ~ 3 ラウンドが最も実用的です。基本的には、次のトレードオフを行いながら、非常に短いターンアラウンド時間でトライアルを実施して、問題についてできるだけ多くの情報を取得します。

  • チューニングの徹底度。
  • 最終的な最長走行距離との関連性。

特定のトライアルあたりの時間制限で有用な分析情報が生成されたら、トレーニング時間を増やしてチューニングを続行し、必要に応じて短い実行での結論を再確認します。出発点として、2 回のチューニングをおすすめします。

  • ラウンド 1: 実行時間を短縮して、適切なモデルとオプティマイザーのハイパーパラメータを見つけます。
  • ラウンド 2: 最終モデルを取得するために、良好なハイパーパラメータ ポイントで実行時間が長い実行を少数行います。

ラウンド 1 からラウンド 2 に進むにあたって最も大きな疑問は次のとおりです。

学習率減衰スケジュールの調整方法。

ラウンド間で学習率スケジュールを調整する際の一般的な落とし穴は、学習率が小さすぎる追加のトレーニング ステップをすべて使用することです。

第 1 ラウンド: 短いトレーニング実行を多数行う

残念ながら、短く不完全なトレーニングで見つかった適切なハイパーパラメータが、トレーニングの長さを大幅に増やした場合にも適切な選択肢であるとは限りません。ただし、一部のハイパーパラメータでは、適切な選択肢は、ラウンド 1 が有用になるのに十分な相関関係があることがよくあります。短い実行で見つかったハイパーパラメータ値のうち、長いトレーニング実行に正常に転送されるのはどれですか?不明。さらなる調査が必要。しかし、これまでのところ、転送される可能性が高い順に次のような疑念があります。

  • 転送される可能性が非常に高い。トレーニングの初期の不安定さは、トレーニング ステップ数を減らして最初のチューニング ラウンドで解決できます。次のハイパーパラメータは転送される可能性が最も高いものです。
    • ウォームアップの長さ
    • 初期化
  • 移行の可能性が高い。モデル アーキテクチャの劇的な改善は通常転移しますが、多くの反例が存在する可能性があります。
  • 移行される可能性があります。次のハイパーパラメータは転送される可能性があります。
    • 最適化アルゴリズムとハイパーパラメータは「緩やかに」転送されます。
    • データ拡張。
    • 正則化。トレーニング セットを完全に適合させることができない場合、モデルは正則化がほとんど役に立たないレジームにある可能性があります。
  • 転送の可能性は低い。学習率のスケジュールが完全に転送される可能性は低い。Training Compute-Optimal Large Language Models では、減衰スケジュールの転送も提案されていますが、一般的には当てはまらないと考えています。たとえば、少数のトレーニング ステップで sqrt 減衰を調整してから、多数のステップに拡張すると、トレーニングの大部分が過度に小さなステップで行われることになります。極端なトレーニング予算の範囲内であれば、ほとんどのスケジュールで「十分」な結果が得られる可能性がありますが、チューニングを行うと、パフォーマンスが大幅に向上する可能性があります。Understanding Short-Horizon Bias in Stochastic Meta-Optimization では、近視眼的に学習率を選択することの危険性について説明しています。

ラウンド 2: 実行回数は少ないが、実行時間が長い

ラウンド 1 の最適なハイパーパラメータ構成を実行します。

推測: 🤖 追加のステップを使用して、高い学習率でトレーニングを行う期間を延長します。たとえば、線形スケジュールを使用している場合は、減衰の長さをラウンド 1 から固定し、開始時の一定の lr の期間を延長します。コサイン減衰の場合、ラウンド 1 のベース lr を保持し、コンピューティングに最適な大規模言語モデルのトレーニングで説明されているように max_train_steps を拡張します。

次の条件をすべて満たすチームには、追加のトレーニング ラウンドが有効な場合があります。

  • 非常に成熟したモデリング
  • パイプラインのチューニング
  • 本番環境でのトレーニング実行に時間がかかり、費用もかかる

ただし、追加のトレーニング実行は非効率なことがよくあります。

第 1 ラウンドから第 2 ラウンドへの移行方法については、すでに説明しました。分析時間を気にせず、コンピューティング リソースの効率的な使用を最優先事項とする場合は、チューニングのさまざまなラウンドでトレーニング実行の長さ(したがって、スタディを完了するまでのエンドツーエンドの時間)を指数関数的に増やすことをおすすめします。

  • 各ラウンドで、選択肢が引き続き良い結果をもたらすことを体系的に確認します。
  • 新しいアイデアをパイプラインに投入し、ステップ i からステップ i+1 に進むにつれて実行期間が長くなるテストを使用して、リスクを段階的に軽減します。