Chuyển đến nội dung chính

第5課:訓練とハイパーパラメータチューニング

SageMaker Training Jobs:インスタンスタイプ、Pipe Mode vs File Mode。 分散訓練:データ並列 vs モデル並列。 自動モデルチューニング(HPO):ベイズ vs ランダム vs グリッドサーチ。 コスト削減のためのSpot Instance Training。

SageMaker Training & Hyperparameter Tuning

SageMaker Training JobsとHPO:分散訓練、Spot Instances、HPO戦略

1. SageMaker Training Jobs

SageMaker Training Jobsはマネージドコンピュートインフラストラクチャ上でML訓練コードを実行します。訓練はエフェメラルインスタンス上で行われ、実行時間のみ課金されます。

Training Job Lifecycle:

  Submit Job ──→ Provision Instances ──→ Download Data
                                              ↓
                                       Run Training Code
                                              ↓
                                       Save Model to S3
                                              ↓
                                       Terminate Instances  

2. 訓練用インスタンスタイプ

インスタンスファミリーハードウェア最適な用途
ml.c5CPU最適化テーブルML、XGBoost、sklearn
ml.m5汎用CPU軽量訓練、データ処理
ml.p3V100 GPUディープラーニング訓練
ml.p4dA100 GPU(8基)大規模DL、分散訓練
ml.g4dnT4 GPU(コスト効率)小〜中規模DLモデル
ml.trn1AWS TrainiumLLM訓練、コスト最適化

3. 分散訓練

モデルまたはデータセットが1つのインスタンスに収まらない場合、複数インスタンスでの分散訓練が必要です。

戦略仕組み使用場面
データ並列各インスタンスにモデルのコピーがあり、データのサブセットで訓練、勾配を同期データセットが大きすぎるが、モデルは1つのGPUに収まる場合
モデル並列モデルをインスタンス間で分割、各インスタンスが一部を保持モデルが1つのGPUに収まらない場合(LLM)
Data Parallelism:

Instance 1 [Full Model] ──→ Train on data shard A ──→ ↓
Instance 2 [Full Model] ──→ Train on data shard B ──→ ↓  AllReduce
Instance 3 [Full Model] ──→ Train on data shard C ──→ ↓  (sync gradients)
                                                          ↓
                                              Updated Model Weights

Model Parallelism:

Instance 1 [Layers 1-4]  ──→ forward pass ──→
Instance 2 [Layers 5-8]  ──→ forward pass ──→
Instance 3 [Layers 9-12] ──→ forward pass ──→ output

試験のヒント: SageMakerはSageMaker Distributedライブラリを2つのモジュールで提供:(1) smdistributed.dataparallel — 最適化されたAllReduce;(2) smdistributed.modelparallel — 自動パイプライン並列。「大規模モデル訓練」→ モデル並列。

4. 自動モデルチューニング(HPO)

ハイパーパラメータ最適化(HPO)は異なる設定で複数の訓練ジョブを実行し、最適なハイパーパラメータを自動的に見つけます。

戦略仕組みトレードオフ
ランダムサーチ範囲からハイパーパラメータをランダムにサンプリング高速、良いベースライン
グリッドサーチすべての組み合わせを試行網羅的、高コスト、大きな探索空間には不向き
ベイズ最適化結果の確率モデル、次の最適な設定を提案効率的、過去の試行から学習 — SageMakerのデフォルト
Hyperbandパフォーマンスの低い試行を早期停止リソース効率が良い、高速

試験のヒント: SageMaker AMT(Automatic Model Tuning)はデフォルトでベイズ最適化を使用します。前回のジョブの結果を参照して次のハイパーパラメータセットを提案します — ブルートフォースではなくインテリジェントな探索です。

5. Spot Instance Training

SageMakerは訓練ジョブにEC2 Spot Instancesの使用をサポートし、オンデマンドと比較して最大90%のコスト削減を実現します。

機能詳細
MaxWaitTimeInSecondsSpotキャパシティを待つ最大時間
チェックポイント定期的にモデルをS3に保存 — 中断後に再開
use_spot_instances=TrueSageMaker Estimatorのパラメータ

試験のヒント: 「訓練コストを削減する」と問われた場合、正解は通常チェックポイント付きSpot Instancesです。チェックポイントはSpotインスタンスが終了された場合の進捗損失を防ぐために重要です。

6. バイアス-バリアンストレードオフ

問題症状原因解決策
高バイアス(未学習)訓練誤差が高い、テスト誤差も高いモデルが単純すぎるモデル複雑性の増加、特徴量追加、正則化の減少
高バリアンス(過学習)訓練誤差が低い、テスト誤差が高いモデルが複雑すぎるデータ追加、ドロップアウト、正則化、特徴量選択
バランス良好訓練誤差が低い、テスト誤差も低い(近い値)良いフィットモデルをデプロイ

7. 練習問題

Q1: ある企業が1つのGPUインスタンスに収まらない大規模ディープラーニングモデルを訓練しています。どのSageMaker分散訓練戦略を使用すべきですか?

  • A) データ並列
  • B) モデル並列 ✓
  • C) パイプライン並列のみ
  • D) バッチサイズの増加

解説:モデル並列はモデル自体を複数のGPUインスタンスに分割し、1つのGPUのメモリに収まらないモデルの訓練を可能にします。データ並列は各インスタンスに完全なモデルコピーを保持するため、モデル自体が大きすぎる場合は役に立ちません。

Q2: チームが500のハイパーパラメータチューニングジョブの実行コストを最小化したいと考えています。訓練は中断を許容できます。最もコスト効率の良いアプローチはどれですか?

  • A) より大きなインスタンスでジョブを高速に実行
  • B) チェックポイント有効化のSpot Instances ✓
  • C) ベイズ最適化の代わりにグリッドサーチを使用
  • D) エポック数を削減

解説:Spot Instancesはオンデマンド価格と比較して最大90%のコスト削減を実現できます。チェックポイントを有効にすると、中断されたジョブがS3に状態を保存し再開できるため、長時間のHPOジョブにSpot Instancesが実用的になります。

Q3: モデルが訓練データで95%のaccuracyを達成しましたが、テストセットでは62%です。これはどのような問題を示していますか?

  • A) 未学習 / 高バイアス
  • B) 過学習 / 高バリアンス ✓
  • C) データリーケージ
  • D) クラス不均衡

解説:訓練accuracy(95%)とテストaccuracy(62%)の大きなギャップは過学習(高バリアンス)の典型的な兆候です。モデルが訓練データを暗記したが汎化に失敗しています。解決策:データ追加、正則化(L1/L2、ドロップアウト)、モデル複雑性の削減。