

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

# 在 SageMaker HyperPod 的 Nova 2.0 上監督微調 (SFT)
<a name="nova-sft-2-smhp"></a>

Amazon Nova Lite 2.0 為監督式微調提供了增強功能，包括進階推理模式、改善多模態理解和延伸內容處理。Nova Lite 2.0 上的 SFT 可讓您將這些強大的功能適應您的特定使用案例，同時在複雜的任務上維持模型的卓越效能。

在 Nova Lite 2.0 上 SFT 的主要功能摘要於 [支援的功能](nova-data-prep-sft-2.md#nova-2-supported-features)。

若要判斷 SFT 是否適合您的使用案例，請參閱 [監督式微調 (SFT)](nova-fine-tune.md)。

**Topics**
+ [選擇合理模式 （僅限 Nova 2.0)](#nova-sft-2-reasoning-mode)
+ [在 SageMaker HyperPod 上啟動微調任務](#nova-sft-2-creating-job)
+ [SFT 調校參數](#nova-sft-2-tuning-parameters)
+ [超參數指引](#nova-sft-2-hyperparameters)

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

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

```
run:
  name: my-full-rank-sft-run
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  data_s3_path: s3://my-bucket-name/train.jsonl  # SageMaker HyperPod only and not compatible with SageMaker Training Jobs
  replicas: 4                                     # Number of compute instances for training, allowed values are 4, 8, 16, 32
  output_s3_path: s3://my-bucket-name/outputs/    # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs)
  mlflow_tracking_uri: ""                         # Required for MLFlow
  mlflow_experiment_name: "my-full-rank-sft-experiment"  # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-full-rank-sft-run"         # Optional for MLFlow. Note: leave this field non-empty

training_config:
  max_steps: 100                    # Maximum training steps. Minimal is 4.
  save_steps: ${oc.select:training_config.max_steps}  # How many training steps the checkpoint will be saved
  save_top_k: 5                     # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1.
  max_length: 32768                 # Sequence length (options: 8192, 16384, 32768 [default], 65536)
  global_batch_size: 32             # Global batch size (options: 32, 64, 128)
  reasoning_enabled: true           # If data has reasoningContent, set to true; otherwise False

  lr_scheduler:
    warmup_steps: 15                # Learning rate warmup steps. Recommend 15% of max_steps
    min_lr: 1e-6                    # Minimum learning rate, must be between 0.0 and 1.0

  optim_config:                     # Optimizer settings
    lr: 1e-5                        # Learning rate, must be between 0.0 and 1.0
    weight_decay: 0.0               # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9                  # Exponential decay rate for first-moment estimates
    adam_beta2: 0.95                 # Exponential decay rate for second-moment estimates

  peft:                             # Parameter-efficient fine-tuning (LoRA)
    peft_scheme: "null"             # Disable LoRA for PEFT
```

## 選擇合理模式 （僅限 Nova 2.0)
<a name="nova-sft-2-reasoning-mode"></a>

Amazon Nova 2.0 支援增強型分析功能的推理模式：
+ **原因模式 （已啟用）**：
  + 在訓練組態`reasoning_enabled: true`中設定
  + 模型會訓練 在最終答案之前產生推理追蹤
  + 改善複雜推理任務的效能
+ **非原因模式 （已停用）**：
  + 設定`reasoning_enabled: false`或省略 參數 （預設）
  + 沒有明確推理的標準 SFT
  + 適合無法受益於step-by-step推理的任務

**注意**  
啟用推理時，會以高推理的努力運作。SFT 沒有低推理選項。
SFT 不支援多模式推理內容。原因模式適用於純文字輸入。

### 將推理模式與非合理的資料集搭配使用
<a name="nova-sft-2-reasoning-non-reasoning-data"></a>

`reasoning_enabled: true` 允許使用 在非合理資料集上訓練 Amazon Nova。不過，這樣做可能會導致模型失去其推理功能，因為 Amazon Nova 主要學習在不套用推理的情況下產生資料中呈現的回應。

如果在非合理資料集上訓練 Amazon Nova，但仍希望在推論期間使用推理：

1. 在訓練期間停用推理 (`reasoning_enabled: false`)

1. 稍後在推論期間啟用推理

雖然此方法允許在推論時間進行推理，但與推論相比，它不保證改善效能，而不會推理。

**最佳實務：**使用推理資料集時啟用訓練和推論的推理，並在使用非合理的資料集時停用兩者的推理。

**注意**  
如需容器映像和範例配方的詳細資訊，請參閱 [Amazon Nova 配方](nova-model-recipes.md)。

## 在 SageMaker HyperPod 上啟動微調任務
<a name="nova-sft-2-creating-job"></a>

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

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

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

將訓練和驗證資料集上傳至 S3 儲存貯體。在配方的 `run` 區塊中指定這些位置：

```
## Run config
run:
  ...
  data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"
```

**注意**  
將 `<bucket-name>`、`<training-directory>`、`<training-file>`、 `<validation-directory>`和 取代`<validation-file>`為實際的 S3 路徑。

**注意**  
Amazon Nova 2.0 的 SFT 目前不支援驗證資料集。如果提供了驗證資料集，則會予以忽略。

### 定義您的組態
<a name="nova-sft-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
  ...
```

## SFT 調校參數
<a name="nova-sft-2-tuning-parameters"></a>

可使用 SFT 進行調校的參數包括：

**執行組態**  

+ **名稱**：訓練任務的描述性名稱。這有助於在 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\_steps**：要執行的訓練步驟數目。每個步驟都會使用元素`global_batch_size`數目來訓練模型。
+ **save\_steps**：在訓練期間儲存模型檢查點的頻率 （步驟中）。
+ **save\_top\_k**：根據驗證指標保留的最佳檢查點數目上限。
+ **max\_length**：字符中的序列長度上限。這會決定訓練的內容範圍大小。SFT 的最大支援值為 32768 個字符。

  序列越長，越能提高訓練效率，但代價是需要增加記憶體。我們建議您將 max\_length 參數與資料分佈配對。
+ **global\_batch\_size**：跨所有裝置和工作者，一次向前或向後傳遞一起處理的訓練範例總數。

  此值會乘以每個裝置的批次大小和裝置數目。它會影響訓練和輸送量的穩定性。我們建議您從適合您記憶體的批次大小開始，並從該處向上擴展。對於特定網域的資料，批次越大可能會使梯度過度平滑。
+ **reasoning\_enabled**：在訓練期間啟用推理功能的布林值旗標。

**學習速率排程器**  

+ **warmup\_steps**：逐步提高學習率的步驟數目。這可改善訓練穩定性。
+ **min\_lr**：衰減結束時的最低學習率。有效值介於 0-1 (含) 之間，但必須小於學習率。

**最佳化工具組態**  

+ **lr**：學習率，可在最佳化期間控制步進大小。我們建議使用介於 1e-6-1e-4 之間的值，以獲得良好的效能。有效值介於 0-1 (含) 之間。
+ **weight\_decay**：L2 正規化強度。較高的值 (介於 0.01-0.1 之間) 會增加正規化。
+ **adam\_beta1**：Adam 最佳化工具中第一個時刻預估的指數衰減率。預設為 0.9。
+ **adam\_beta2**：Adam 最佳化工具中第二個時刻預估的指數衰減率。預設值為 0.95。

**PEFT 組態**  

+ **peft\_scheme**：要使用的參數有效微調方案。選項`'null'`適用於全階微調或`lora`適用於以 LoRA 為基礎的微調。

**LoRA 調校 （當 peft\_scheme 為 'lora' 時）**  

+ **alpha**：LoRA 擴展參數。控制低階調整的大小。典型值的範圍是 8 到 128。
+ **lora\_plus\_lr\_ratio**：LoRA\+ 最佳化的學習率比率。此乘數會特別針對 LoRA 參數調整學習率。

## 超參數指引
<a name="nova-sft-2-hyperparameters"></a>

根據訓練方法，使用以下建議的超參數：

**完整排名訓練**
+ **Epochs**：1
+ **學習率 (lr)**：1e-5
+ **最低學習率 (min\_lr)**：1e-6

**LoRA （低排名調整）**
+ **Epochs**：2
+ **學習率 (lr)**：5e-5
+ **最低學習率 (min\_lr)**：1e-6

**注意**  
根據資料集大小和驗證效能調整這些值。監控訓練指標以防止過度擬合。