継続的事前トレーニング (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 Management Console。

    • 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/prod、、nova-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 ログ記録はサポートされていません。