

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 SageMaker HyperPod 上的 Nova 2.0 繼續預先訓練 (CPT)
<a name="nova-cpt-2"></a>

Amazon Nova Lite 2.0 是在比 Nova Lite 1.0 更大且更多樣化的資料集上訓練的推理模型。雖然是較大的模型，但 Nova Lite 2.0 提供比 Nova Lite 1.0 更快的推論，同時提供增強的推理功能、更長的內容長度和改善的多語言效能。

使用 CPT on Nova 2.0 Lite，您可以使用網域特定的資料擴展這些進階功能，並在專業領域開發深度專業知識，同時維持模型的卓越推理和分析能力。

## 範例 CPT 配方
<a name="nova-cpt-2-sample-recipe"></a>

以下是 CPT 的範例配方。您可以在 GitHub 的 [SageMaker HyperPod 配方儲存庫中找到此配方](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/nova)和其他項目。

```
# 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 上開始持續的預先訓練任務
<a name="nova-cpt-2-starting-job"></a>

### 準備您的資料
<a name="nova-cpt-2-preparing-data"></a>

如需準備 CPT 訓練資料的資料格式、支援的功能、限制條件和最佳實務的相關資訊，請參閱 [在 Amazon Nova 2 上準備 CPT 的資料](nova-data-prep-cpt-2.md)。

### 上傳資料
<a name="nova-cpt-2-data-upload"></a>

將訓練和驗證資料集上傳至 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>`、`<training-file>`、 `<validation-directory>`和 取代`<validation-file>`為實際的 S3 路徑。

### 定義您的組態
<a name="nova-cpt-2-defining-config"></a>

使用 `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 調校參數
<a name="nova-cpt-2-tuning-parameters"></a>

可使用 CPT 進行微調的參數包括：

**執行組態**  

+ **名稱**：訓練任務的描述性名稱。這有助於在 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`)。
+ **複本**：用於分散式訓練的運算執行個體數目。可用的值會根據您選擇的模型而有所不同。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**：跨所有裝置和工作者，一次向前或向後傳遞一起處理的訓練範例總數。

  此值會乘以每個裝置的批次大小和裝置數目。它會影響訓練和輸送量的穩定性。我們建議您從適合您記憶體的批次大小開始，並從該處向上擴展。對於特定網域的資料，批次越大可能會使梯度過度平滑。

**訓練器設定**  

+ **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 (含) 之間，但必須小於學習率。