本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行評估和解譯結果
執行評估任務
步驟 1:準備您的資料
-
根據資料格式要求格式化評估資料
-
將您的 JSONL 檔案上傳至 S3:
s3://your-bucket/eval-data/eval_data.jsonl
步驟 2:設定您的配方
使用您的組態更新範例配方:
-
model_name_or_path設定為您的模型位置 -
lambda_arn設定為您的獎勵函數 ARN -
output_s3_path設定為您想要的輸出位置 -
視需要調整
inference參數
將配方儲存為 rft_eval_recipe.yaml
步驟 3:執行評估
使用提供的筆記本執行評估任務:評估筆記本
評估容器
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest
步驟 4:監控進度
透過下列方式監控您的評估任務:
-
SageMaker 主控台:檢查任務狀態和日誌
-
CloudWatch Logs:檢視詳細的執行日誌
-
Lambda 日誌:偵錯獎勵函數問題
了解評估結果
輸出格式
評估任務會以 JSONL 格式將結果輸出至您指定的 S3 位置。每行包含一個範例的評估結果:
{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
注意
RFT 評估任務輸出與 Lambda 回應格式相同。評估服務會在不修改的情況下傳遞 Lambda 函數的回應,確保獎勵計算與最終結果之間的一致性。
解譯結果
彙總獎勵分數
-
範圍:通常為 0.0 (最差) 到 1.0 (最佳),但取決於您的實作
-
目的:總結整體效能的單一數字
-
用量:比較模型、追蹤訓練的改善
個別指標
-
指標類型:分析的資訊指標
-
獎勵類型:RFT 訓練期間使用的指標
-
解譯:較高的值通常表示效能更好 (除非您設計反向指標)
效能基準
什麼構成「良好」效能取決於您的使用案例:
| 分數範圍 | 解譯 | Action |
|---|---|---|
| 0.8 - 1.0 | 卓越 | 模型已準備好進行部署 |
| 0.6 - 0.8 | 好 | 次要改善可能有益 |
| 0.4 - 0.6 | 公平 | 需要大幅改善 |
| 0.0 - 0.4 | 不佳 | 檢閱訓練資料和獎勵函數 |
重要
這些是一般準則。根據下列項目定義您自己的閾值:
-
業務需求
-
基準模型效能
-
網域特定限制條件
-
進一步訓練的成本效益分析
分析結果
計算摘要統計資料
import json import numpy as np scores = [] with open('evaluation_results.jsonl', 'r') as f: for line in f: result = json.loads(line) scores.append(result['aggregate_reward_score']) print(f"Mean: {np.mean(scores):.3f}") print(f"Median: {np.median(scores):.3f}") print(f"Std Dev: {np.std(scores):.3f}") print(f"Min: {np.min(scores):.3f}") print(f"Max: {np.max(scores):.3f}")
-
識別失敗案例:檢閱分數較低的範例,以了解弱點
-
比較指標:分析不同指標之間的相互關聯,以識別權衡
-
追蹤一段時間:比較跨訓練反覆運算的評估結果
疑難排解
常見問題
| 問題 | 原因 | 解決方案 |
|---|---|---|
| Lambda 逾時 | 複雜的獎勵計算 | 增加 Lambda 逾時或最佳化函數 |
| 許可遭拒 | 缺少 IAM 許可 | 驗證 SageMaker 角色可以叫用 Lambda |
| 不一致的分數 | 非確定性獎勵函數 | 使用固定種子或確定性邏輯 |
| 缺少結果 | 未攔截 Lambda 錯誤 | 在 Lambda 中新增全面的錯誤處理 |
除錯檢查清單
-
使用巢狀內容陣列確認輸入資料遵循正確的格式
-
確認 Lambda ARN 正確且函數已部署
-
檢查 SageMaker 的 IAM 許可 → Lambda 調用
-
檢閱 CloudWatch 日誌是否有 Lambda 錯誤
-
驗證 Lambda 回應是否符合預期的格式
最佳實務
-
啟動簡單:從基本獎勵函數開始並反覆運算
-
分別測試 Lambda:在完整評估之前使用 Lambda 測試事件
-
在小型資料集上驗證:在完整資料集之前對子集執行評估
-
版本控制:追蹤獎勵函數版本與模型版本
-
監控成本:Lambda 調用和運算時間會影響成本
-
Log Extensively:使用 Lambda 中的列印陳述式進行偵錯
-
適當設定逾時:在耐心與成本之間取得平衡
-
文件指標:明確定義每個指標的指標
後續步驟
完成 RFT 評估後:
-
如果結果令人滿意:將模型部署到生產環境
-
如果需要改進:
-
調整獎勵函數
-
收集更多訓練資料
-
修改訓練超參數
-
執行額外的 RFT 訓練反覆運算
-
-
持續監控:使用新資料定期重新評估
預設獎勵函數
來自開放原始碼 verl 程式庫
概觀
這些預設函數提供out-of-the-box評估功能:
-
prime_code – 程式碼產生和正確性評估
-
prime_math – 數學推理和問題解決評估
快速設定
-
從 nova-custom-eval-sdk 版本
下載 Lambda layer -
使用 發佈 Lambda 層 AWS CLI:
aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64 -
在 中將 layer 新增至 Lambda 函數 AWS 管理主控台 (從自訂 layer 選取 preset-function-layer,並針對凹凸相依性新增 AWSSDKPandas-Python312)
-
在 Lambda 程式碼中匯入和使用 :
from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation
prime_code 函數
目的:針對測試案例執行程式碼並測量正確性,藉此評估 Python 程式碼產生任務。
來自評估的範例輸入資料集格式
{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}
主要功能
-
從 Markdown 程式碼區塊自動擷取程式碼
-
函數偵測和以呼叫為基礎的測試
-
具有逾時保護的測試案例執行
-
語法驗證和編譯檢查
-
使用追蹤傳回的詳細錯誤報告
prime_math 函數
目的:使用符號數學支援評估數學推理和問題解決功能。
輸入格式
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
主要功能
-
使用 SymPy 的符號數學評估
-
多個答案格式 (LaTeX、純文字、符號)
-
數學相等性檢查
-
表達式標準化和簡化
資料格式要求
用於程式碼評估
-
輸入 – 函數引數陣列 (屬性類型:整數、字串等)
-
輸出 – 預期傳回值的陣列 (屬性類型:布林值、數字等)
-
程式碼 – 必須是具有清晰函數定義的 Python
用於數學評估
-
參考答案 – 數學表達式或數值
-
回應 – 可以是 LaTeX、純文字或符號表示法
-
對等性 – 以符號方式檢查,而不只是字串比對
最佳實務
-
在測試案例中使用適當的資料類型 (整數與字串、布林值與 "True")
-
在程式碼問題中提供清晰的函數簽章
-
在測試輸入中包含邊緣案例 (零、負數、空輸入)
-
在參考答案中一致地格式化數學表達式
-
在部署之前,使用範例資料測試獎勵函數
錯誤處理
這兩個函數都包含強大的錯誤處理功能:
-
產生的程式碼中的編譯錯誤
-
執行期間的執行時間例外狀況
-
格式不正確的輸入資料
-
無限迴圈的逾時案例
-
無效的數學表達式