執行評估和解譯結果 - Amazon SageMaker AI

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

執行評估和解譯結果

執行評估任務

步驟 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 程式庫的兩個預設獎勵函數 (prime_code, prime_math) 可在 Lambda 層中使用,您可以將其與 RFT Lambda 綁定。

概觀

這些預設函數提供out-of-the-box評估功能:

  • prime_code – 程式碼產生和正確性評估

  • prime_math – 數學推理和問題解決評估

快速設定

  1. nova-custom-eval-sdk 版本下載 Lambda layer

  2. 使用 發佈 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
  3. 在 中將 layer 新增至 Lambda 函數 AWS 管理主控台 (從自訂 layer 選取 preset-function-layer,並針對凹凸相依性新增 AWSSDKPandas-Python312)

  4. 在 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")

  • 在程式碼問題中提供清晰的函數簽章

  • 在測試輸入中包含邊緣案例 (零、負數、空輸入)

  • 在參考答案中一致地格式化數學表達式

  • 在部署之前,使用範例資料測試獎勵函數

錯誤處理

這兩個函數都包含強大的錯誤處理功能:

  • 產生的程式碼中的編譯錯誤

  • 執行期間的執行時間例外狀況

  • 格式不正確的輸入資料

  • 無限迴圈的逾時案例

  • 無效的數學表達式