反覆訓練 - Amazon SageMaker AI

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

反覆訓練

概觀

反覆訓練是透過不同訓練方法的多個訓練週期重複微調模型的程序:訓練、評估、分析錯誤、調整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

  • 重試 – 透過調整啟動新的反覆運算