継続的事前トレーニング (CPT) - Amazon SageMaker AI

継続的事前トレーニング (CPT)

継続的事前トレーニング (CPT) は、同じ教師なし目標 (マスク言語モデリングや因果言語モデリングなど) を使用して、新しいデータに対して事前トレーニング済み基盤モデルをさらにトレーニングするプロセスです。新しい分野や分散シフトに適応しながら、以前に学習した一般的な言語機能を保持します。

CPT には、アーキテクチャの変更や特定のダウンストリームタスクのためのファインチューニングは含まれません。代わりに、分野対応の方法でモデルの言語理解能力を拡張します。

以下のシナリオでは CPT を使用する必要があります。

  • ドメイン (医薬品や財務など) に固有の大規模なラベル付けされていないデータがある。

  • モデルでは、ドメイン固有のコンテンツを改善しながら、一般的な言語機能を保持する必要がある。

  • 広範なタスク固有のファインチューニングを実行せずに、特殊な領域でゼロショットと数ショットのパフォーマンスを向上させる必要がある。

データ形式の要件

CPT を実行するときは、次のデータセットの特性に従うことをお勧めします。

  • 多様性: 過学習を避けるため、データではターゲットドメイン内の幅広い表現をカバーする必要があります。

  • 表現: データには、推論中にモデルが直面する分散を反映する必要があります。

  • クリーンさ: データにノイズや冗長性があると、パフォーマンスが低下する可能性があります。重複排除とテキスト正規化により、モデルトレーニングが向上します。

  • スケール: データセットが大きいほど良いですが、特定のしきい値 (限られたデータで複数のエポックを実行するなど) を超えると、過学習のリスクが増加します。

トレーニングデータセットと検証データセットは、Converse 形式に従った JSONL ファイルである必要があります。各行には、必須フィールドと構造がある会話を表す JSON オブジェクトが含まれます。以下がその例です。

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

テキストエントリには、ターゲットドメインを表す、自然に流れる高品質のコンテンツを含める必要があります。

データセットの検証

CPT ジョブを送信する前にデータセットを検証するには、次の条件を確認します。

  • 各行に有効な JSON オブジェクトが含まれている。

  • 各オブジェクトに文字列データを含む「テキスト」フィールドがある。

  • 「テキスト」以外のフィールドが存在していない。

  • ファイルの拡張子が .jsonl になっている。

トレーニング時間

トレーニングに費やされる時間は、データセットのサイズ、使用するインスタンスの数、トレーニングされるモデルによって大きく異なります。トレーニング時間は直線的にスケールすることが予想されます。次の表は、さまざまなモデルのトレーニング時間の例を示したものです。

モデルタイプ

GBS

データセット内のサンプル数

P5 インスタンスの数

max_length

時間単位の概算トレーニング時間

Amazon Nova Micro

256

100,000

8

8,192

4

Amazon Nova Lite

256

100,000

16

8,192

4

Amazon Nova Pro

256

100,000

24

8,192

10

トレーニングデータセットと検証データセットは、Amazon Bedrock Converse オペレーション形式に従った JSONL ファイルである必要があります。各行には、必須フィールドと構造がある会話を表す JSON オブジェクトが含まれます。

CPT で調整できる Amazon Nova パラメータは次のとおりです。

  • 実行設定

    • name: トレーニングジョブのわかりやすい名前。AWS マネジメントコンソール でジョブを区別しやすくなります。

    • model_type: 使用する Amazon Nova モデルバリアント。使用できるオプションは、amazon.nova-micro-v1:0:128kamazon.nova-lite-v1:0:300k または amazon.nova-pro-v1:0:300k です。

    • model_name_or_path: トレーニングに使用するベースモデルへのパス。使用可能なオプションは、nova-micro/prodnova-lite/prodnova-pro/prod、またはトレーニング後のチェックポイントの S3 パス (s3://customer-escrow-bucket-unique_id/training_run_name) です。

    • replicas: 分散トレーニングに使用するコンピューティングインスタンスの数。使用可能な値は選択したモデルによって異なります。Amazon Nova Micro では、2 個、4 個、または 8 個のレプリカをサポートしています。Amazon Nova Lite では、4 個、8 個、16 個、または 32 個のレプリカをサポートしています。Amazon Nova Pro では、6 個、12 個、または 24 個のレプリカをサポートしています。

    • data_s3_path: トレーニングデータセットの S3 の場所。これは JSONL ファイルです。このファイルは、クラスターと同じ AWS アカウント およびリージョンに配置する必要があります。指定された S3 の場所は、同じアカウントとリージョンに存在している必要があります。

    • validation_data_s3_path: (オプション) 検証データセットの S3 の場所。これは JSONL ファイルです。このファイルは、クラスターと同じアカウントおよびリージョンに配置する必要があります。指定された S3 の場所は、同じアカウントとリージョンに存在している必要があります。

    • output_s3_path: マニフェストと TensorBoard ログが保存される S3 の場所。指定された S3 の場所は、すべて同じ AWS アカウントと AWS リージョンに存在している必要があります。

  • トレーニング設定

    • max_length: トークンの最大シーケンス長。これにより、トレーニングのコンテキストウィンドウのサイズが決まります。サポートされている最大値は、CPT で 8192 トークンです。

      シーケンスを長くすると、メモリ要件の増加を犠牲にしてトレーニング効率が向上します。max_length パラメータをデータディストリビューションに一致させることをお勧めします。

  • トレーナー設定

    • global_batch_size: すべてのデバイスとワーカーで 1 回の前方パスまたは後方パスで一緒に処理されたトレーニングサンプルの合計数。

      この値は、デバイスごとのバッチサイズとデバイスの数を乗算します。これは、トレーニングとスループットの安定性に影響します。メモリ内で快適に学習するバッチサイズから始めて、そこからスケールアップすることをお勧めします。ドメイン固有のデータの場合、大きなバッチでは勾配が滑らかになりすぎる可能性があります。

    • max_epochs: トレーニングデータセットの完全なパスの数。

      一般的に、データセットが大きいほど収束に必要なエポックが少なくなる一方、データセットが小さいほど収束に必要なエポックが多くなります。過学習を防ぐために、データのサイズに基づいてエポックの数を調整することをお勧めします。

  • モデル設定

    • hidden_dropout: 非表示状態の出力を削除する確率。この値を約 0.0~0.2 ずつ増やして、小さいデータセットのオーバーフィットを減らします。有効な値は 0~1 で、その範囲に限ります。

    • attention_dropout: 注意重みを削除する確率。このパラメータは一般化に役立ちます。有効な値は 0~1 で、その範囲に限ります。

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

CPT レシピ

CPT のレシピは以下のとおりです。

## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path: [S3_PATH_TO_TRAIN_DATASET] validation_data_s3_path: (OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET] output_s3_path: [S3_PATH_TO_STORE_MANIFEST] ## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs 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 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: 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 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 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
制限

CPT には次の制約事項があります。

  • マルチモーダルデータセットはサポートされていません。

  • 中間チェックポイントは評価のために保存されず、中間チェックポイントから再開することはできません。最後のチェックポイントのみが保存されます。

  • MLflow ログ記録はサポートされていません。