本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
反覆訓練
概觀
反覆訓練是透過不同訓練方法的多個訓練週期重複微調模型的程序:訓練、評估、分析錯誤、調整data/objectives/hyperparameters,每個回合都從先前的檢查點開始。此方法可讓您系統化地鎖定模型故障模式、納入解決特定弱點的精選範例,以及因應隨時間變化的需求。
單次通過訓練的優勢:
-
目標改善:解決透過評估發現的特定故障模式
-
自適應改進:回應分佈轉移或不斷變化的產品需求
-
風險緩解:遞增驗證改進,而不是承諾進行單一長訓練執行
-
資料效率:將資料收集工作集中在模型效能不佳的領域
-
課程訓練:多輪訓練,具有越來越高品質的資料
運作方式
檢查點位置和存取
在每個訓練任務完成後,資訊清單檔案會在訓練組態中 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", ... }
了解託管儲存貯體
由於 Amazon Nova 權重為專屬,因此訓練過的模型檢查點會存放在受管帳戶中的託管 S3 儲存貯體中,而不是複製到您的帳戶。AWS這些託管儲存貯體:
-
安全地包含您的自訂模型權重
-
可由其他服務參考 AWS(推論、評估和後續訓練任務)
-
只能透過 IAM 許可存取AWS您的帳戶
-
在您的帳戶中產生標準 S3 儲存費用 (請參閱成本考量)
您可以在下一次訓練執行model_name_or_path中使用託管儲存貯體路徑做為 ,以繼續反覆訓練。
使用檢查點進行反覆訓練
設定您的下一個訓練任務,以使用先前的檢查點做為基本模型:
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
何時使用反覆訓練
理想的使用案例
當您有下列情況時,請使用反覆訓練:
-
意見回饋迴圈 – 能夠收集真實世界的失敗案例,並系統化地解決這些案例
-
動態環境 – 不斷發展的文件、APIs或支援需要定期更新模型的主題
-
強大的評估 – 強大的基準和評估架構 (請參閱以下範例),可自信地衡量改進
-
ML 操作功能 – 管理多個訓練週期和版本控制的資源
強大的評估架構範例
-
具有通過/失敗閾值的自動化基準測試套件
-
具有評分者間可靠性指標的人工評估通訊協定
-
涵蓋邊緣案例和對手輸入的紅隊測試案例
-
測量生產影響的 A/B 測試基礎設施
常見模式
SFT → RFT 管道:經常使用的反覆模式涉及:
-
SFT first – 透過示範範例教導模型如何解決問題
-
RFT 秒 – 使用獎勵訊號在更廣泛的問題空間中最佳化效能
當模型一開始效能不佳時,此序列至關重要:如果沒有先透過 SFT 建立基本問題解決功能,則近乎零的準確性模型上的 RFT 將無法改善效能。
何時不使用反覆訓練
避免針對下列項目進行反覆訓練:
-
穩定、定義明確的任務 – 具有一致需求的靜態資料已實現接近上限的效能
-
簡單分類問題 – 具有足夠單次訓練的窄小任務
-
資源限制 – 缺乏管理多個訓練週期的專用 ML 操作功能
-
邊際收益 – 當額外負荷無法證明最低效能改善
工作流程範例:SFT → RFT
此範例示範推理模型的常見反覆訓練模式。
步驟 1:初始 SFT 訓練
使用資料集設定和啟動 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 訓練
使用 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:評估和反覆運算
在 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 中線之間切換
監控反覆運算的進度
您可以透過 MLFlow 追蹤指標。
建立 MLflow 應用程式
使用 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 應用程式
使用 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 的連結。
要追蹤的關鍵指標
跨反覆運算監控這些指標,以評估改善並追蹤任務進度:
對於 SFT
-
訓練損失曲線
-
使用的範例數量和處理範例的時間
-
保留測試集的效能準確性
-
格式合規 (例如,有效的 JSON 輸出速率)
-
網域特定評估資料的複雜度
對於 RFT
-
訓練的平均獎勵分數
-
獎勵分佈 (高獎勵回應的百分比)
-
驗證獎勵趨勢 (注意過度擬合)
-
任務特定的成功率 (例如,程式碼執行通過率、數學問題準確性)
一般
-
反覆運算之間的基準效能差異
-
代表性範例的人工評估分數
-
生產指標 (如果反覆部署)
判斷何時停止
在下列情況下停止反覆運算:
-
效能穩定 – 其他訓練不再有意義地改善目標指標
-
技術切換有幫助 – 如果一個技術穩定,請嘗試切換 (例如,SFT → RFT → SFT) 以突破效能上限
-
實現目標指標 – 符合您的成功條件
-
偵測到迴歸 – 新的反覆運算會降低效能 (請參閱下列轉返程序)
如需詳細評估程序,請參閱評估一節。
最佳實務
從小開始並逐漸擴展
從最少的資料集和單一訓練 epoch 開始,在擴展之前驗證您的方法。這可建立信心,並有助於及早識別問題。
建立明確的成功指標
在開始之前定義量化和定性指標:
使用案例的成功指標範例
-
回答問題 – 完全符合準確性、F1 分數、人工偏好評分
-
程式碼產生 – 單位測試通過率、編譯成功、執行時間
-
原因任務 – 步驟準確性、最終答案正確性、獎勵分數
-
內容產生 – 一致性分數、事實準確性、風格遵循
實作自動化評估
設定自動評估管道來追蹤每個回合後的效能,以便快速迭代和目標比較。
維持嚴格的版本控制
每次反覆運算的文件:
-
資料集版本和修改
-
模型檢查點位置
-
超參數變更
-
效能指標和差異
-
定性觀察
這會建立機構知識並啟用偵錯。
專注於資料品質而非數量
分析先前回合的失敗案例,並新增有針對性且高品質的範例,而不只是增加資料集大小。
計劃反覆運算預算
將 3-5 次反覆運算規劃為典型範圍:
-
1-2 次反覆運算 - 通常足以進行簡單的改善或最終修飾
-
3-5 次反覆運算 – 適用於需要多個精簡週期的複雜任務
-
5 次以上的反覆運算 – 可能表示減少傳回或需要不同的方法
根據運算預算和效能改善率進行調整。
實作轉返功能
如果反覆運算引入迴歸:
-
識別迴歸 – 比較跨檢查點的評估指標
-
返回先前的檢查點 – 使用較早檢查點的 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>"
成本考量
檢查點儲存
-
位置 – 存放在託管儲存貯體中的檢查點會產生標準 S3 儲存費用,並向您的 AWS帳戶收費
-
保留 – 除非明確刪除,否則檢查點會無限期保留
-
管理 – 實作生命週期政策來封存或刪除不再需要的舊檢查點
成本最佳化秘訣
-
驗證較新的反覆運算後刪除中繼檢查點
-
將檢查點封存至 S3 Glacier,以較低成本長期保留
-
根據您的合規和實驗需求設定保留政策
限制
模型系列一致性
反覆訓練時,您必須在所有反覆運算中使用相同的模型類型。
初始訓練
run: model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod"
後續反覆運算必須使用相同的 model_type
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>"
訓練技術一致性
訓練技術必須在反覆運算之間保持一致:
-
經 LoRA 訓練的模型只能使用 LoRA 反覆訓練
-
Full-Rank-trained模型只能使用完整 Rank 反覆訓練
LoRA 轉接器如何在反覆訓練中運作
-
每個 LoRA 訓練反覆運算都會產生新的轉接器權重
-
新的轉接器取代 (而非使用 堆疊) 先前的轉接器
-
基本模型會保持凍結狀態;只會更新轉接器
技術相容性矩陣
| 初始訓練 | 可以使用 反覆運算 |
|---|---|
| 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 以確認檢查點路徑正確
疑難排解
錯誤:「偵測到不相容的模型訓練技術」
原因:訓練技術 (LoRA 與 Full-Rank) 不符合檢查點的技術。
解決方案:確保您的配方使用與原始模型相同的訓練技術:
-
如果檢查點已使用 LoRA 訓練,請在新配方中使用 LoRA
-
如果檢查點已使用 Full-Rank 訓練,請在新配方中使用 Full-Rank
錯誤:「從 model_name_or_path 擷取之任務的基礎模型不符合 model_type」
原因: 中指定的模型類型與檢查點中的實際模型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>"
錯誤:「找不到模型組態」
原因: 中的 S3 路徑model_name_or_path無效或無法存取。
解決方法:
-
驗證 S3 路徑是否已從 manifest.json 檔案正確複製
-
確保您的 IAM 角色具有存取託管儲存貯體的許可
-
確認先前訓練任務已成功完成
-
檢查路徑中的錯字
反覆運算後的效能迴歸
症狀:評估指標會在新的訓練反覆運算後下降。
解決方法:
-
轉返 – 使用先前的檢查點做為基本模型
-
分析 – 檢閱失敗反覆運算的訓練日誌和資料品質
-
調整 – 修改超參數 (降低學習率)、改善資料品質,或降低訓練 epoch
-
重試 – 透過調整啟動新的反覆運算