例を確認し、損失が何を表すかを確認する
まず、変換済みの入力とそのターゲットをいくつか表示してください。分割、パディング、マスク、そして損失関数に実際に渡されるラベルを確認します。生成では、入力に指示が含まれていても、応答と同じ目的に寄与すべきとは限りません。分類では、番号とクラスの対応がずれていると、損失は計算できても誤ったタスクを学習してしまいます。
ごく小さなサブセットを切り出して、メカニズムを確認します。一般化を主張するためではありません。そのループはこれらの例を学習し、有限の値を返し、正しい識別子を取り戻せるでしょうか。失敗するなら、長時間のレンタルで診断が解決することはありません。その後、学習・検証・テストは、リークを避ける単位で分離してください。会話、患者、元文書、期間など、プロジェクトに応じて選びます。
各フェーズでゲートを通過させましょう
パイロットはキャンペーンのすべての操作を通過させる必要があります。オプティマイザの状態を最初に確保するステップは、以降のステップと異なる場合があります。より長いシーケンスでの評価が最大のピークを生むこともあります。チェックポイント保存やエクスポートにもメモリと時間が必要なことがあります。したがって、重みの読み込みだけで判断しないでください。
フェーズごとに1行を保ち、入力パラメータ、メモリカウンタ、測定時間、判定を記録します。PyTorchでは、割り当てられたテンソルとアロケータがリザーブしたメモリのカウンタは別々であり、合計できません。各GPUを同じ測定制限で記録します。メモリの記録は、ベースライン、同期、絶対ピークの詳細を提供します。
| フェーズ | 確認 | チェックが失敗した場合 |
|---|---|---|
| データ | 識別子、ターゲット、長さ、マスク | データセットまたは変換を修正する |
| 順伝播と損失 | 期待される次元、有限の損失 | 縮小したバッチと値を確認する |
| 逆伝播 | 期待される勾配、有限の値 | グラフ、精度、正規化を確認する |
| 更新 | 対象パラメータが変更され、ステップがカウントされる | オプティマイザと累積を確認する |
| 検証 | 評価モード、完全な出力 | 設定をトレーニング用と分離する |
| 再開 | 進行状況と状態が復元される | シリーズの前にチェックポイントを修正する |
技術的な出典: PyTorch — カウンタとメモリ管理
更新ごとのサンプル数を数える
マイクロバッチは1回のパスで処理されます。アキュムレーションは、更新前に複数のパスを結合します。単一GPUの例では、マイクロバッチあたり2例と8回のアキュムレーションで、完全な更新あたり16例になります。3,200例を1回走査し、不完全なバッチがなければ、これは200回の更新に相当します。これらの計算は、所要時間や品質を予測するものではありません。
更新回数を固定してバッチを変えると、学習されるサンプル数が変わる可能性があります。エポック数を固定すると、更新回数が変わる可能性があります。比較で維持すべき量を選び、もう一方の量を記録してください。複数のデータレプリカがある場合、カウントにはその数が含まれます。モデル並列は、実効バッチを自動的に乗算しません。最終バッチや長さの異なるシーケンスには、一貫した正規化が必要です。
技術的な出典: PyTorch — 累積と混合精度
実験の問いを失わずにメモリを変更する
パイロットがメモリを超過する場合、原因となるフェーズと入力を特定します。マイクロバッチを減らすとアクティベーションを減らせる場合があります。最大長を小さくすると、タスクに不可欠な部分が削除される可能性があります。累積だけでは、重みやオプティマイザの状態は解放されません。切り詰め後に収まるケースを、期待される出力が変わっているのに同じ実験として提示しないでください。
アクティベーションのチェックポインティングは、中間結果をより少なく保持し、逆伝播中に再計算します。ループ内でメモリと所要時間を比較してください。混合精度は、一部の演算の形式を選びます。勾配スケーリングの設定とその更新のタイミングは、実効バッチと一致させる必要があります。これらの変更をバリアントとして記録し、品質目標を維持しているか確認してください。
例:3つの学習率を比較する
0.0001の対照群と、説明用の2つのバリアント0.00005と0.0002を用意します。これらの値はあなたのモデルへの推奨値ではありません。計画を書くためのものです。この簡略化したケースでは、アーキテクチャ、データ、実効バッチ、200更新分の予算を同一に保ちます。試行前に検証頻度と停止条件を定義します。
損失曲線、検証ポイント、分析に必要な予測を保存します。バリアントが発散した場合でも、その行は結果に残します。別のバッチでの再実行には新しい識別子を付け、失敗を黙って置き換えません。品質差が小さい場合、シードに関する手法が、最良のものだけを選ばずに複数の試行を比較する方法を説明します。
学習を再開し、出力を読み直す
重みの保存は一部の推論用途に使えますが、学習の再開には関連する状態と進行状況も復元する必要があります。PyTorchのガイドは特にモデルとオプティマイザを区別しています。新しいプロセスで早い段階に、あなたのループに必要な要素とともに再開をテストし、その後ステップ、学習率、データの継続性を確認します。
終了時には、評価用の成果物を再読み込みし、対照入力を再実行します。モデルまたはアダプタ、設定、リビジョン、生のメトリクス、手順をアーカイブします。内容を確認するためだけに出所不明のファイルを読み込まないでください。出所とあなたの環境のデシリアライズ規則が分かっている成果物を使用します。
技術的な出典: PyTorch — 重みと再開用チェックポイント
パイロットから適切なレンタルへ移行する
あなたの選定シートには、GPUごとのメモリ、最大次元、精度、マイクロバッチ、累積、分散戦略、期待される結果をまとめます。十分なメモリのある構成は、ソフトウェアスタックを確認した後にのみ採用されます。注文時のPyTorch優先は希望する準備内容を表すものであり、あなたのモデルやそのすべての拡張機能を保証するものではありません。
次に、優先度の高いバリアントを3日、7日、または30日のプランにまとめ、評価とエクスポートの時間を確保します。どの期間も特定の学習タイプを強制しません。記録には決定と入力した観察を残せますが、あなたのバックアップはファイルを保持します。成功したキャンペーンは、対照群が最良の選択であり続けた場合でも、再読可能な結論を生み出します。
実用的な質問
フォワードパスのみでサイジングできますか?
いいえ。学習キャンペーンはバックワードパス、更新、検証、保存もカバーする必要があります。ピークは別のフェーズやより長い入力で発生することがあります。
同じ実効バッチで同じ結果が保証されますか?
いいえ。同じカウントでも同じ数値演算、バッチ統計、学習軌跡が保証されるわけではありません。実装、正規化、品質を採用したプロトコルで確認してください。
なぜ発散した学習を残すのですか?
それは設定の限界を示しており、リソースを消費しています。その識別子、停止理由、パラメータがあれば、同じ試行を繰り返したり、好都合な結果だけを提示したりすることを防げます。