

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

# 反覆訓練
<a name="nova-iterative-training"></a>

## 概觀
<a name="nova-iterative-overview"></a>

反覆訓練是透過不同訓練方法的多個訓練週期重複微調模型的程序：訓練、評估、分析錯誤、調整data/objectives/hyperparameters，每個回合都從先前的檢查點開始。此方法可讓您以系統化的方式鎖定模型失敗模式、納入解決特定弱點的精選範例，以及因應隨時間變化的需求。

**單次通過訓練的優勢：**
+ **目標改善**：解決透過評估發現的特定故障模式
+ **自適應改進**：回應分佈轉移或不斷變化的產品需求
+ **風險緩解**：逐步驗證改進，而不是承諾進行單一長訓練
+ **資料效率**：將資料收集工作集中在模型效能不佳的領域
+ **課程訓練**：多輪訓練，具有越來越高品質的資料

## 運作方式
<a name="nova-iterative-how-it-works"></a>

### 檢查點位置和存取
<a name="nova-iterative-checkpoint-location"></a>

在每個訓練任務完成後，資訊清單檔案會在訓練組態中 `output_path` 參數指定的輸出位置中產生。

**存取您的檢查點**
+ 導覽至 S3 `output_path`中指定的
+ 下載並解壓縮 `output.tar.gz` 檔案
+ 在 中開啟 `manifest.json` 檔案
+ 尋找 `checkpoint_s3_bucket` 參數，其中包含訓練模型的 S3 URI

**manifest.json 結構範例**

```
{  
  "checkpoint_s3_bucket": "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>/stepID",  
  ...  
}
```

### 了解託管儲存貯體
<a name="nova-iterative-escrow-buckets"></a>

由於 Amazon Nova 權重為專屬，訓練過的模型檢查點會存放在受管帳戶中**的託管 S3 儲存貯**體中，而不是複製到您的帳戶。 AWS這些託管儲存貯體：
+ 安全地包含您的自訂模型權重
+ 可由其他 AWS 服務 （推論、評估和後續訓練任務） 參考
+ 只能透過 IAM 許可存取 AWS 您的帳戶
+ 在您的帳戶中產生標準 S3 儲存費用 （請參閱成本考量）

您可以在下一次訓練執行`model_name_or_path`中使用託管儲存貯體路徑做為 ，以繼續反覆訓練。

### 使用檢查點進行反覆訓練
<a name="nova-iterative-using-checkpoints"></a>

設定您的下一個訓練任務，以使用先前的檢查點做為基本模型：

```
run:  
  name: "my-iterative-training-job"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<previous-job-name>"  
  data_s3_path: s3://<bucket>/<data-file>.jsonl  
  replicas: 4
```

## 何時使用反覆訓練
<a name="nova-iterative-when-to-use"></a>

### 理想的使用案例
<a name="nova-iterative-ideal-use-cases"></a>

當您有下列情況時，請使用反覆訓練：
+ **回饋迴圈** – 能夠收集真實世界的故障案例並系統化地解決它們
+ **動態環境** – 不斷發展的文件、APIs或支援需要定期更新模型的主題
+ **強大的評估 – **強大的基準和評估架構 （請參閱以下範例），以自信地衡量改進
+ **ML 操作功能** – 管理多個訓練週期和版本控制的資源

**健全的評估架構範例**
+ 具有通過/失敗閾值的自動化基準測試套件
+ 具有評分者間可靠性指標的人工評估通訊協定
+ 涵蓋邊緣案例和對手輸入的紅隊測試案例
+ 測量生產影響的 A/B 測試基礎設施

### 常見模式
<a name="nova-iterative-common-patterns"></a>

**SFT → RFT 管道**：經常使用的反覆模式涉及：
+ **SFT first** – 透過示範範例教導模型如何解決問題
+ **RFT 秒** – 使用獎勵訊號在更廣泛的問題空間中最佳化效能

當模型一開始效能不佳時，此序列至關重要：如果沒有先透過 SFT 建立基本問題解決功能，則近乎零的準確性模型上的 RFT 將無法改善效能。

### 何時不使用反覆訓練
<a name="nova-iterative-when-not-to-use"></a>

避免針對下列項目進行反覆訓練：
+ **穩定、定義明確的任務 – **具有一致需求的靜態資料已實現接近上限的效能
+ **簡單分類問題** – 具有足夠單次訓練的窄小任務
+ **資源限制** – 缺乏管理多個訓練週期的專用 ML 操作功能
+ **邊際收益** – 當額外負荷無法證明最低效能改善

## 工作流程範例：SFT → RFT
<a name="nova-iterative-example-workflow"></a>

此範例示範推理模型的常見反覆訓練模式。

### 步驟 1：初始 SFT 訓練
<a name="nova-iterative-step1"></a>

使用資料集設定和啟動 SFT 訓練任務：

```
run:  
  name: "initial-sft-training"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "nova-lite-2/prod"  
  data_s3_path: s3://<bucket>/sft-training-data.jsonl  
  validation_data_s3_path: s3://<bucket>/sft-validation-data.jsonl
```

**理由**：SFT 提供額外的示範，將模型輸出塑造成您想要的格式和語音，建立基礎功能。

**訓練完成後**
+ 請注意在您的訓練任務中`output_path`設定的
+ `output.tar.gz` 從該位置下載
+ 擷取並尋找 `manifest.json`
+ 複製 `checkpoint_s3_bucket`值

### 步驟 2：SFT 檢查點上的 RFT 訓練
<a name="nova-iterative-step2"></a>

使用 SFT 檢查點建立新的 RFT 訓練任務：

```
run:  
  name: "rft-on-sft-checkpoint"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<initial-sft-training>"  
  data_s3_path: s3://<bucket>/rft-training-data.jsonl  
  reward_lambda_arn: <your-reward-function-arn>
```

**理由**：RFT 訓練建置在 SFT 基礎上，允許模型開發更複雜的推理模式，以您的獎勵函數最佳化。

### 步驟 3：評估和反覆運算
<a name="nova-iterative-step3"></a>

在 RFT 檢查點上執行評估，以評估效能：

```
run:  
  name: "evaluate-rft-checkpoint"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<rft-on-sft-checkpoint>"  
  data_s3_path: s3://<bucket>/evaluation-data.jsonl
```

如果未滿足目標指標，請使用調整後的資料或超參數繼續反覆運算。

**重要**  
訓練技術 (LoRA 與完整排名） 必須在所有反覆運算中保持一致：  
如果您搭配 **LoRA** 使用 SFT，則必須搭配 **LoRA** 使用 RFT
如果您使用具有**完整排名**的 SFT，則必須使用具有**完整排名**的 RFT
您無法在 LoRA 和 Full Rank 中線之間切換

**重要**  
如果 KMS 金鑰用於 Amazon 擁有的輸出 S3 儲存貯體中的加密，則該相同的 KMS 金鑰必須用於所有未來的反覆運算。

## 監控反覆運算的進度
<a name="nova-iterative-monitoring"></a>

您可以為您的任務設定 MLflow，透過 MLflow 追蹤指標。 [ MLflow](nova-model-monitor.md#nova-customization-mlflow-setup) 

### 建立 MLflow 應用程式
<a name="nova-iterative-create-mlflow"></a>

**使用 Studio UI**：如果您透過 Studio UI 建立訓練任務，預設 MLflow 應用程式會自動建立，並依預設在進階選項下選取。

**使用 CLI**：如果您使用 CLI，則必須建立 MLflow 應用程式並將其做為訓練任務 API 請求的輸入傳遞。

```
mlflow_app_name="<enter your MLflow app name>"  
role_arn="<enter your role ARN>"   
bucket_name="<enter your bucket name>"   
region="<enter your region>"  
  
mlflow_app_arn=$(aws sagemaker create-mlflow-app \  
  --name $mlflow_app_name \  
  --artifact-store-uri "s3://$bucket_name" \  
  --role-arn $role_arn \  
  --region $region)
```

### 存取 MLflow 應用程式
<a name="nova-iterative-access-mlflow"></a>

**使用 CLI**：建立預先簽章的 URL 以存取 MLflow 應用程式 UI：

```
aws sagemaker create-presigned-mlflow-app-url \  
  --arn $mlflow_app_arn \  
  --region $region \  
  --output text
```

**使用 Studio UI**：Studio UI 會顯示存放在 MLflow 中的關鍵指標，並提供 MLflow 應用程式 UI 的連結。

### 要追蹤的關鍵指標
<a name="nova-iterative-key-metrics"></a>

跨反覆運算監控這些指標，以評估改善並追蹤任務進度：

**對於 SFT**
+ 訓練損失曲線
+ 使用的範例數量和處理範例的時間
+ 保留測試集的效能準確性
+ 格式合規 （例如，有效的 JSON 輸出速率）
+ 網域特定評估資料的複雜度

**對於 RFT**
+ 訓練的平均獎勵分數
+ 獎勵分佈 （高獎勵回應的百分比）
+ 驗證獎勵趨勢 （注意過度擬合）
+ 任務特定的成功率 （例如，程式碼執行通過率、數學問題準確性）

**一般**
+ 反覆運算之間的基準效能差異
+ 代表性範例的人工評估分數
+ 生產指標 （如果反覆部署）

### 判斷何時停止
<a name="nova-iterative-when-to-stop"></a>

在下列情況下停止反覆運算：
+ **效能穩定 –** 其他訓練不再有意義地改善目標指標
+ **技術切換有幫助** – 如果一個技術穩定，請嘗試切換 （例如，SFT → RFT → SFT) 以突破效能上限
+ **實現的目標指標** – 符合您的成功條件
+ **偵測到迴歸** – 新的反覆運算會降低效能 （請參閱下列轉返程序）

如需詳細評估程序，請參閱**評估**一節。

## 最佳實務
<a name="nova-iterative-best-practices"></a>

### 從小開始並逐漸擴展
<a name="nova-iterative-start-small"></a>

從最少的資料集和單一訓練 epoch 開始，以在擴展之前驗證您的方法。這可建立信心，並有助於及早識別問題。

### 建立明確的成功指標
<a name="nova-iterative-success-metrics"></a>

在開始之前定義量化和定性指標：

**使用案例的成功指標範例**
+ **回答問題** – 完全符合準確性、F1 分數、人工偏好評分
+ **程式碼產生** – 單位測試通過率、編譯成功、執行時間
+ **原因任務** – 步驟準確性、最終答案正確性、獎勵分數
+ **內容產生** – 一致性分數、事實準確性、風格遵循

### 實作自動化評估
<a name="nova-iterative-automated-eval"></a>

設定自動評估管道來追蹤每個回合後的效能，以便快速迭代和目標比較。

### 維持嚴格的版本控制
<a name="nova-iterative-version-control"></a>

每次反覆運算的文件：
+ 資料集版本和修改
+ 模型檢查點位置
+ 超參數變更
+ 效能指標和差異
+ 定性觀察

這會建立機構知識並啟用偵錯。

### 專注於資料品質而非數量
<a name="nova-iterative-data-quality"></a>

分析先前回合中的失敗案例，並新增有針對性的高品質範例，而不只是增加資料集大小。

### 計劃反覆運算預算
<a name="nova-iterative-iteration-budget"></a>

將 **3-5 次反覆運算**規劃為典型範圍：
+ **1-2 次反覆運算** - 通常足以進行簡單的改善或最終修飾
+ **3-5 次反覆運算** – 適用於需要多個精簡週期的複雜任務
+ **5 次以上的反覆運算** – 可能表示減少傳回或需要不同的方法

根據運算預算和效能改善率進行調整。

### 實作轉返功能
<a name="nova-iterative-rollback"></a>

如果反覆運算引入迴歸：
+ **識別迴歸** – 比較跨檢查點的評估指標
+ **返回先前的檢查點** – 使用較早檢查點的 S3 路徑做為您的 `model_name_or_path`
+ **調整訓練方法** – 在重試之前修改資料、超參數或技術
+ **記錄失敗** – 記錄導致迴歸以避免重複的原因

**復原範例**

```
run:  
  name: "rollback-to-iteration-2"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  # Use iteration 2 checkpoint instead of failed iteration 3  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<iteration-2-job-name>"
```

## 成本考量
<a name="nova-iterative-cost"></a>

### 檢查點儲存
<a name="nova-iterative-checkpoint-storage"></a>
+ **位置** – 存放在託管儲存貯體中的檢查點會產生標準 S3 儲存費用，並向您的 AWS 帳戶收費
+ **保留** – 除非明確刪除，否則檢查點會無限期保留
+ **管理** – 實作生命週期政策來封存或刪除不再需要的舊檢查點

**成本最佳化秘訣**
+ 驗證較新的反覆運算後刪除中繼檢查點
+ 將檢查點封存至 S3 Glacier，以較低成本長期保留
+ 根據您的合規和實驗需求設定保留政策

## 限制
<a name="nova-iterative-limitations"></a>

### 模型系列一致性
<a name="nova-iterative-model-consistency"></a>

反覆訓練時，您必須在所有反覆運算中使用**相同的模型類型**。

**初始訓練**

```
run:  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "nova-lite-2/prod"
```

**後續反覆運算必須使用相同的 model\$1type**

```
run:  
  model_type: amazon.nova-2-lite-v1:0:256k  # Must match original  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

### 訓練技術一致性
<a name="nova-iterative-technique-consistency"></a>

訓練技術必須在反覆運算之間保持一致：
+ 經 **LoRA 訓練的模型**只能使用 LoRA 反覆訓練
+ **Full-Rank-trained模型**只能使用完整 Rank 反覆訓練

**LoRA 轉接器如何在反覆訓練中運作**
+ 每個 LoRA 訓練反覆運算都會產生新的轉接器權重
+ 新的轉接器取代 （而非使用 堆疊） 先前的轉接器
+ 基本模型會保持凍結狀態；只會更新轉接器

### 技術相容性矩陣
<a name="nova-iterative-compatibility-matrix"></a>


| 初始訓練 | 可以使用 反覆運算 | 
| --- | --- | 
| SFT (Full-Rank) | SFT (Full-Rank)、RFT (Full-Rank) | 
| SFT (LoRA) | SFT (LoRA)、RFT (LoRA) | 
| RFT (Full-Rank) | RFT (Full-Rank) | 
| RFT (LoRA) | RFT (LoRA) | 

**在開始任務之前驗證相容性**
+ 檢查您先前的訓練配方，以識別模型類型和訓練技術 (LoRA 與 Full-Rank)
+ 確保您的新配方同時符合模型類型和技術
+ 檢閱 manifest.json 以確認檢查點路徑正確

## 疑難排解
<a name="nova-iterative-troubleshooting"></a>

### 錯誤：「偵測到不相容的模型訓練技術」
<a name="nova-iterative-error-incompatible"></a>

**原因**：訓練技術 (LoRA 與 Full-Rank) 不符合檢查點的技術。

**解決方案**：確保您的配方使用與原始模型相同的訓練技術：
+ 如果檢查點已使用 LoRA 訓練，請在新配方中使用 LoRA 
+ 如果檢查點已使用 Full-Rank 訓練，請在新配方中使用 Full-Rank

### 錯誤：「從 model\$1name\$1or\$1path 擷取之任務的基礎模型不符合 model\$1type」
<a name="nova-iterative-error-base-model"></a>

**原因**： 中指定的模型類型與檢查點中的實際模型`model_type`不相符。

**解決方案**：驗證：
+ 配方`model_type`中的 符合原始模型類型
+ 中的檢查點 S3 路徑`model_name_or_path`正確
+ 您正在使用正確 manifest.json 檔案的路徑

**正確組態的範例**

```
run:  
  model_type: amazon.nova-2-lite-v1:0:256k  # Must match checkpoint's model  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

### 錯誤：「找不到模型組態」
<a name="nova-iterative-error-config"></a>

**原因**： 中的 S3 路徑`model_name_or_path`無效或無法存取。

**解決方法：**
+ 驗證 S3 路徑是否已從 manifest.json 檔案正確複製
+ 確保您的 IAM 角色具有存取託管儲存貯體的許可
+ 確認先前訓練任務已成功完成
+ 檢查路徑中是否有錯字

### 反覆運算後的效能迴歸
<a name="nova-iterative-error-regression"></a>

**症狀**：評估指標會在新的訓練反覆運算後下降。

**解決方法：**
+ **轉返** – 使用先前的檢查點做為基礎模型
+ **分析** – 檢閱失敗反覆運算的訓練日誌和資料品質
+ **調整** – 修改超參數 （降低學習率）、改善資料品質，或降低訓練 epoch
+ **重試** – 透過調整啟動新的反覆運算