

# 事前トレーニングと中間トレーニングの継続
<a name="nova-forge-cpt"></a>

**注記**  
詳細なドキュメントは、サブスクライブ後に提供されます。

Nova Forge CPT は、中間チェックポイントへのアクセスや Nova の事前トレーニングコーパスとのデータミキシングなど、標準 CPT を超える高度な機能を提供します。これらの機能により、ドメイン適応が効率化され、モデルの一般的な機能の保持が向上します。

## 中間チェックポイントとは何か/なぜそれが必要か
<a name="nova-forge-cpt-checkpoints"></a>

中間チェックポイントは、モデルが最終的な本番環境対応状態に達する前に、事前トレーニングのさまざまなステージで保存された Amazon Nova モデルのスナップショットです。モデル開発中、Amazon Nova は、一定の学習率による初期事前トレーニング、学習率のランプダウン、コンテキスト拡張トレーニング、指示追従型の最後の調整と安全トレーニングという複数のトレーニングフェーズを経ます。CPT の場合、中間チェックポイントは、可塑性が高く、ドメイン適応を受容できるため、最終的な Prod チェックポイントよりも望ましいことがよくあります。Prod チェックポイントは、指示追従型の広範な調整と安全トレーニングを経ています。これにより、一般的な会話用途に合わせてモデルを最適化できますが、CPT 中に新しいドメイン固有のパターンを学習することに抵抗する可能性があります。対照的に、部分的および完全に事前トレーニングされたテキストのみのチェックポイントは、モデルの事前トレーニング特性を保持します。特定の動作に大きく誘導されていないため、ドメイン適応の開始点がより効率的になります。大規模な CPT (10B トークン超) を実行する場合、中間チェックポイントから開始すると、通常、収束が速くなり、トレーニングの安定性が向上し、ドメイン知識の取得がより効果的になります。ただし、小規模な CPT (10B トークン未満) の場合、または指示追従型機能を保持する必要がある場合は、モデルの会話能力を維持しながらドメイン適応を可能にするため、Prod チェックポイントの方が適切である可能性があります。

CPT には複数の中間チェックポイントが必要です。これは、モデルが新しいドメイン知識をどの程度効率的に吸収できるかに影響する、さまざまなレベルのモデル可塑性を提供するためです。最終的な Prod チェックポイントは、指示追従型の広範な調整と安全トレーニングを受けており、一般的な会話用途向けに最適化されていますが、新しいドメイン固有のパターンの学習には耐性があります。つまり、事後トレーニングによって強化されています。対照的に、以前のチェックポイントは、モデルの事前トレーニングの特性を保持し、特定の動作に大きく誘導されていないため、可塑性が高く、ドメイン適応を受容できます。

最適なトレーニング効率を実現するために、複数の中間チェックポイントが用意されています。

## どのようなチェックポイントを利用できるか
<a name="nova-forge-cpt-available"></a>

**Nova 2.0**  
Amazon Nova Lite 2.0 チェックポイントは 3 つあります。
+ 事前トレーニング済み - [`nova-lite-2/pretraining-text-RD`]: これは、Amazon Nova 事前トレーニングの一定の学習率およびランプダウンステージの後のチェックポイントで、モデルは数兆のトークンでトレーニングされます。
+ 中間トレーニング済み - [`nova-lite-2/pretraining-text-CE`]: このチェックポイントでは、事前トレーニングよりも控えめな学習率で中間量の非構造化データを導入し、壊滅的な忘却を回避しながらドメイン固有の知識を吸収できます。
+ 事後トレーニング済み - [`nova-lite-2/prod`]: これは、事前トレーニングと事後トレーニングのすべてのステップを経たモデルの完全に調整された最終チェックポイントです。

次の表では、事前トレーニングと中間トレーニングのさまざまな条件について詳しく説明しています。


| データタイプ | 実行 | 使用チェックポイント | 
| --- |--- |--- |
| 大規模な非構造化 raw ドメインデータ (ドキュメント、ログ、記事、コードなど) | 継続的な事前トレーニング | 事前トレーニング済み | 
| 大規模な非構造化 raw ドメインデータ (ドキュメント、ログ、記事、コードなど) | 中間トレーニング | 事前トレーニング済み | 
| 少量の非構造化 raw データ。構造化推論トレース/CoT データ | 中間トレーニング | 中間トレーニング済み | 
| 構造化デモンストレーション (高品質の入出力ペア、厳選されたタスク手順、マルチターン対話) | フルファインチューニング | 中間トレーニング済み | 
| 構造化デモンストレーション (高品質の入出力ペア、厳選されたタスク手順、マルチターン対話) | パラメータ効率の高いファインチューニング | 事後トレーニング済み | 

## どのチェックポイントを使用するか
<a name="nova-forge-cpt-which"></a>

部分的に事前トレーニングされたテキストのみ、および完全に事前トレーニングされたテキストのみのチェックポイントは、通常、より速く収束し、ドメイン適応のためのトレーニングステップが少なくなります。ただし、インストラクションチューニングがないため、有用なタスクを実行して指示に従うには、事後トレーニングのステップを実行する必要があります。GA チェックポイントは、適応するためにより多くのステップが必要になる場合がありますが、小規模な実験のためのより安全な出発点を提供し、CPT トレーニング後も事後トレーニング機能の一部を維持します。

一般に、大規模なトレーニングデータセット (10B トークン超) では、モデルのナレッジベースが大幅に変更されるため、より効率的で安定したトレーニングを行うために、部分的に事前トレーニングされたテキストのみ、または完全に事前トレーニングされたテキストのみのチェックポイントから開始します。小規模なデータセット (10B トークン未満) では、GA チェックポイントを使用して、ドメインに適応しながら指示追従型機能を維持します。

## Nova 2.0 でデータミキシングを使用する方法
<a name="nova-forge-cpt-mixing"></a>

新しいドメインデータで CPT を実行する場合、新しいデータと、モデルの事前トレーニングステージで以前に使用されたデータの一部を混合することが非常に有益です。古いデータと新しいドメインデータを混合させると、次の 2 つの問題が解決します。
+ 忘却の制御: モデルの既存のスキルと知識を維持することで、壊滅的な忘却を防止します。データミキシングがない場合、狭いドメインデータでのみトレーニングすると、モデルは一般的な機能を上書きしてしまいます。例えば、法的文書に基づいてのみトレーニングされたモデルは、コーディングや数学を行う機能を失う可能性があります。一般的なドメインデータセットを混合させると、新しいドメインを取得しながら、これらの一般的なスキルが維持されます。
+ 最適化の安定性: モデルの内部表現を固定することで、トレーニングの安定性を維持します。CPT 中、モデルの学習された機能は変更され、データミキシングは、この適応をスムーズに導くさまざまなソースからの勾配を提供します。そうしないと、狭い分布でのトレーニングにより勾配が不安定になり、モデルの表現が急激に変化して、トレーニングの発散、損失の急増、既存の機能の崩壊につながる可能性があります。これは安定性と可塑性のトレードオフです。モデルは、新しいドメインの知識を学習するのに十分な可塑性がある一方で、既にわかっていることを壊さないほど安定している必要があります。

**Nova CPT データミキシング機能**  
Amazon Nova の事前トレーニングデータとチェックポイントへのアクセスは、Amazon Nova CPT カスタマイズの中核となるサービスの一つです。Amazon Nova CPT カスタマイズにより、ドメインデータを Amazon Nova の事前トレーニングコーパスと簡単に混合させることができます。さらに、特定の Amazon Nova データカテゴリ (コード、数学、推論など) のサンプリング比率を変更し、ドメインデータを補完するようにその割合を制御できます。これにより、モデルを特定のドメインに適応させながら、ユースケースに沿った機能を強化できます。

**最適な混合比率の特定**  
Amazon Nova データとドメインデータの最適な比率は、データセットのドメイン、複雑さ、サイズ、品質、一般的な機能を維持することの重要性によって異なります。この比率は、実験を通じて見つけ出す必要があります。混合する Amazon Nova データの量を決定するための実験フレームワークは次のとおりです。

ドメインデータの代表的なサブセット (5B トークンなど) を選択し、すべての実験実行でこの定数を維持します。

混合する Amazon Nova データの量のみ変化する、小規模な CPT 実験を実行します。
+ 混合なし: 100% ドメイン → 5B ドメインのみ (合計 5B)
+ 軽度の混合: 90% ドメイン → 5B ドメイン \+ 約 0.56B Amazon Nova (合計約 5.56B)
+ 中程度の混合: 70% ドメイン → 5B ドメイン \+ 約 2.14B Amazon Nova (合計約 7.14B)
+ 重度の混合: 50% ドメイン → 5B ドメイン \+ 5B Amazon Nova (合計 10B)

ドメインおよび一般的なドメインベンチマークで各チェックポイントを評価します。また、開始チェックポイント (トレーニング前の Amazon Nova チェックポイント) も評価します。
+ カスタマードメインのパフォーマンスは、実行間でほぼ一定に保たれていますか。各実行で同じ数のドメイントークンを見ているため、通常は一定のはずです。混合が増えることでドメインのパフォーマンスが向上する場合、Amazon Nova データは有用な正則化を提供します。
+ 混合が増加するにつれて、一般的なベンチマークスコアは向上しますか。
  + 期待される動作は、Amazon Nova データが追加されるにつれて、一般的な機能が単調に改善されることです。
  + MMLU (一般的な知識)、HumanEval (コーディング)、GSM8K (数学)、または関心のある特定のベンチマークなど、複数の一般的なベンチマークを測定します。
+ ユースケースで許容可能な一般的な機能を提供しながら、ドメインのパフォーマンスを維持する混合比率を選択します。より多くのデータミキシングによるトレーニングの追加コストを考慮します。

最適な混合比率を特定したら、選択した混合比率で完全なドメインデータセットを使用してフルスケール CPT を実行します。

## データミキシングカテゴリの分析
<a name="nova-forge-cpt-data-mixing-categories"></a>

以下では、データミキシングで使用可能な各カテゴリを分析します。これにより、データミキシング全体でどのデータカテゴリを示すのが最も理にかなっているかを的確に判断できます。

### データミキシングを有効にする方法
<a name="nova-forge-cpt-enable-mixing"></a>

データセットカテゴリ間で適切な割合配分を指定して、レシピに `data_mixing` セクションを追加します。`nova_data` の割合の合計は 100 にする必要があります。

#### データミキシングを使用した Nova 2.0 設定
<a name="nova-forge-cpt-nova2-config"></a>

```
# Note:
# This recipe can run on p5.48xlarge

# Run config
display_name: "Nova Lite Pretrain on P5 GPU"
versions: ["2.0"]
instance_types: ["ml.p5.48xlarge"]

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

## Training specific configs
training_config:
  task_type: cpt
  max_length: 8192              # Maximum context window size (tokens)
  global_batch_size: 64        # 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
    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

data_mixing:
  dataset_catalog: cpt_text_lite
  sources:
    nova_data:   # percent inputs for Nova data must sum to 100%; use 0% if you want to exclude a data grouping
      agents: 20
      business-and-finance: 4
      scientific: 10
      code: 5
      factual-and-news: 5
      longform-text: 6
      health-and-medicine: 1
      humanities-and-education: 1
      legal: 1
      math: 9
      additional-languages: 15
      social-and-personal-interest: 11
      entertainment: 0.5
      reasoning: 10
      other: 0.5
      tables: 1
    customer_data: # percent input of customer data. 100 = use only customer data, 0 = use only the nova_data mix above
      percent: 25
```

**これらのカテゴリの意味**

**注**: Nova 2.0 には、Nova 1.0 では利用できない追加の推論固有のカテゴリ (`reasoning-code`、`reasoning-math`、`reasoning-instruction-following` など) が含まれています。

カテゴリと情報ラベルの概要:


| カテゴリ名 | 情報の詳細 | 
| --- | --- | 
| agents | AI システムにおける自律的な意思決定、タスクの完了、目標指向の動作に焦点を当てたトレーニングデータ | 
| baseline | 一般的な理解、基本的なコミュニケーション、コア言語機能に焦点を当てた基本的な言語データ | 
| chat | 自然な対話の流れ、文脈の維持、適切な社会的交流を示す会話のやり取り | 
| code | さまざまなプログラミング言語とプラットフォームからのプログラミングソースコード、ドキュメント、技術的議論。 | 
| factuality | 正確性、ソース検証、真実性評価に焦点を当てた参考資料と検証済み情報 | 
| identity | 一貫した性格特性、価値観、対話スタイルに焦点を当てたパーソナリティフレームワークと行動パターン | 
| long-context | 長いやり取りで一貫性と関連性を維持することに焦点を当てた拡張テキストと複雑な話 | 
| math | 教科書、問題、解答、数学的議論を含む数学的コンテンツ。 | 
| rai | 倫理的 AI の原則、安全上の考慮事項、責任あるテクノロジーのデプロイを強調するケースとシナリオ | 
| instruction-following | さまざまなレベルのユーザープロンプトとディレクティブに基づく正確なタスク実行の例 | 
| stem | 問題解決と理論的概念を含む、科学、技術、工学、数学をカバーする技術的コンテンツ | 
| planning | 戦略的思考、段階的なタスク分割、効率的なリソース割り当てを示すシーケンス | 
| reasoning-chat | 論理的な議論と構造化された会話フローに焦点を当てた分析的な対話シナリオ | 
| reasoning-code | 体系的なソリューション開発に焦点を当てたプログラミングの課題とアルゴリズムの問題 | 
| reasoning-factuality | 重要な評価および検証プロセスに焦点を当てた情報評価シナリオ | 
| reasoning-instruction-following | 体系的な解釈と系統的な実行に焦点を当てた複雑なタスク分析 | 
| reasoning-math | 論理的な進行とソリューション戦略に焦点を当てた数学的問題解決シナリオ | 
| reasoning-planning | 目標の達成に向けた体系的なアプローチに焦点を当てた戦略的意思決定シナリオ | 
| reasoning-rag | コンテキスト理解と関連するアプリケーションに焦点を当てた情報の取得と合成のシナリオ | 
| reasoning-rai | AI の安全性と公平性の体系的な評価に焦点を当てた倫理的意思決定シナリオ | 
| reasoning-stem | 系統分析とソリューション開発に焦点を当てた科学的問題解決シナリオ | 
| rag | 取得した外部知識と生成されたレスポンスを効果的に組み合わせて、正確でコンテキストに応じた情報を提供する例 | 
| translation | コンテキスト、トーン、文化的なニュアンスを維持しながら正確な翻訳を示す多言語コンテンツペア | 

#### パラメータガイド
<a name="nova-forge-cpt-param-guide"></a>
+ **dataset\_catalog:** マルチモーダルトレーニングを有効にするまでは、cpt\_text\_lite が唯一の値です。
+ **nova\_data:** 混合時の Nova データの個々のカテゴリの割合。合計して 1.0 になる必要があります。
+ **customer\_data**: Nova データに混合されるお客さまのデータの割合。

トレーニングで使用されるトークンの合計数は、`max_length` \* `global_batch_size` \* `max_steps` で計算できます。

**制限事項**  
現在の CPT はテキストデータのみをサポートし、お客様のマルチモーダルデータセットはサポートしていません。