View a markdown version of this page

SageMaker HyperPod での Nova 2.0 の継続的事前トレーニング (CPT) - Amazon Nova

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 の範囲でその範囲に限られますが、学習率より小さくする必要があります。