SageMaker HyperPod での Nova 2.0 の継続的事前トレーニング (CPT)
Amazon Nova Lite 2.0 は、Nova Lite 1.0 よりも大規模で多様なデータセットでトレーニングされた推論モデルです。より大きなモデルであるにもかかわらず、Nova Lite 2.0 は Nova Lite 1.0 よりも高速な推論を行うと同時に、推論機能が強化され、より長いコンテキスト長を扱え、多言語パフォーマンスが改善されています。
Nova 2.0 Lite の CPT を使用すると、これらの高度な機能をドメイン固有のデータで拡張できるため、モデルの優れた推論と分析能力を維持しながら、専門分野に関する深い専門知識を開発できます。
CPT のサンプルレシピは以下のとおりです。このレシピなどは、GitHub の SageMaker HyperPod レシピ
# Note: # This recipe can run on p5.48xlarge # Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change model_name_or_path: "nova-lite-2/prod" # Base model path, do not change replicas: 8 # Number of compute instances for training, allowed values are 4, 8, 16, 32 data_s3_path: "" # Customer data paths validation_data_s3_path: "" # Customer validation data paths output_s3_path: "" # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training Jobs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-cpt-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-cpt-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: task_type: cpt max_length: 8192 # Maximum context window size (tokens) global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_steps: 10 # The number of training steps to run total val_check_interval: 10 # The number of steps between running validation. Integer count or float percentage limit_val_batches: 2 # Batches of the validation set to use each trigger model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 optim: optimizer: adam lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Beta1 for Adam optimizer adam_beta2: 0.95 # Beta2 for Adam optimizer sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr
SageMaker HyperPod で継続的事前トレーニングジョブを開始する
データの準備
CPT トレーニングデータを準備するためのデータ形式、サポートされている機能、制約、およびベストプラクティスについては、Amazon Nova 2 での CPT のデータの準備 を参照してください。
データのアップロード
トレーニングデータセットと検証データセットを S3 バケットにアップロードします。レシピの run ブロックでこれらの場所を指定します。
## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl" validation_data_s3_path: "s3://<bucket-name>/<validation-directory>/<validation-file>.jsonl"
注記
<bucket-name>、<training-directory>、<validation-directory>、<training-file>、<validation-file> を実際の S3 パスに置き換えます。
設定の定義
run ブロックの model_type フィールドと model_name_or_path フィールドを使用してベースモデルを定義します。
## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...
CPT チューニングパラメータ
CPT でファインチューニングできるパラメータは次のとおりです。
実行設定
-
name: トレーニングジョブのわかりやすい名前。AWS マネジメントコンソールでジョブを区別しやすくなります。
-
model_type: 使用する Amazon Nova モデルバリアント。
amazon.nova-2-lite-v1:0:256kのオプションを使用できます。 -
model_name_or_path: トレーニングに使用するベースモデルへのパス。使用可能なオプションは
nova-lite-2/prod、またはトレーニング後のチェックポイントの S3 パス (s3://customer-escrow-bucket-unique_id/training_run_name) です。 -
replicas: 分散トレーニングに使用するコンピューティングインスタンスの数。使用可能な値は選択したモデルによって異なります。Amazon Nova Lite 2.0 では、4 個、8 個、16 個、または 32 個のレプリカをサポートしています。
-
data_s3_path: トレーニングデータセットの S3 の場所。これは JSONL ファイルです。このファイルは、クラスターと同じ AWS アカウントおよびリージョンに配置する必要があります。指定された S3 の場所は、同じアカウントとリージョンに存在している必要があります。
-
validation_data_s3_path: (オプション) 検証データセットの S3 の場所。これは JSONL ファイルです。このファイルは、クラスターと同じアカウントおよびリージョンに配置する必要があります。指定された S3 の場所は、同じアカウントとリージョンに存在している必要があります。
-
output_s3_path: マニフェストと TensorBoard ログが保存される S3 の場所。指定された S3 の場所は、同じ AWS アカウントと AWS リージョンに存在している必要があります。
-
mlflow_tracking_uri: MLFlow ログ記録に使用する MLFlow アプリケーションの ARN
-
mlflow_experiment_name: MLFlow 実験名
-
mlflow_run_name: MLFlow 実行名
トレーニング設定
-
max_length: トークンの最大シーケンス長。これにより、トレーニングのコンテキストウィンドウのサイズが決まります。サポートされている最大値は、CPT で 8192 トークンです。
シーケンスを長くすると、メモリ要件の増加を犠牲にしてトレーニング効率が向上します。max_length パラメータをデータディストリビューションに一致させることをお勧めします。
-
global_batch_size: すべてのデバイスとワーカーで 1 回の前方パスまたは後方パスで一緒に処理されたトレーニングサンプルの合計数。
この値は、デバイスごとのバッチサイズとデバイスの数を乗算します。これは、トレーニングとスループットの安定性に影響します。メモリ内で快適に学習するバッチサイズから始めて、そこからスケールアップすることをお勧めします。ドメイン固有のデータの場合、大きなバッチでは勾配が滑らかになりすぎる可能性があります。
トレーナー設定
-
max_steps: 実行するトレーニングステップの数。各ステップでは、
global_batch_size個の要素でモデルをトレーニングします
モデル設定
-
hidden_dropout: 隠れ状態の出力をドロップする確率。この値を約 0.0~0.2 ずつ増やして、小さいデータセットのオーバーフィットを減らします。有効な値は 0~1 で、その範囲に限ります。
-
attention_dropout: アテンション重みをドロップする確率。このパラメータは一般化に役立ちます。有効な値は 0~1 で、その範囲に限ります。
オプティマイザー設定
-
lr: 最適化中のステップサイズを制御する学習率。パフォーマンスを向上させるには、1e-6-1e-4 の間の値をお勧めします。有効な値は 0~1 で、その範囲に限ります。
-
name: オプティマイザーアルゴリズム。現在は、
distributed_fused_adamのみがサポートされます。 -
weight_decay: L2 正則化の強度。値が大きいほど (0.01~0.1) 正則化が増加します。
-
warmup_steps: 学習率を徐々に増やすステップの数。これにより、トレーニングの安定性が向上します。有効な値は 1~20 で、その範囲に限ります。
-
min_lr: 減衰終了時の最小学習率。有効な値は 0~1 の範囲でその範囲に限られますが、学習率より小さくする必要があります。