評估您的 SageMaker AI 訓練模型 - Amazon SageMaker AI

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

評估您的 SageMaker AI 訓練模型

評估程序的目的是根據基準或自訂資料集評估訓練模型的效能。評估程序的步驟通常包括建立指向訓練模型的評估配方、指定評估資料集和指標、提交個別任務進行評估,以及根據標準基準或自訂資料進行評估。評估程序將輸出存放在 Amazon S3 儲存貯體中的效能指標。

注意

本主題中所述的評估程序為離線程序。系統會使用預先定義的回答來根據固定的基準測試模型,而不是以即時的方式或透過即時使用者互動進行評估。如需即時評估,您可以在模型部署到 Amazon Bedrock 之後,呼叫 Amazon Bedrock 執行時期 API 來測試模型。

先決條件

在開始評估訓練任務之前,請注意下列事項。

  • 您想要評估其效能的 SageMaker AI 訓練 Amazon Nova 模型。

  • 用於評估的基本 Amazon Nova 配方。如需詳細資訊,請參閱取得 Amazon Nova 配方

可用的基準任務

提供範例程式碼套件,示範如何使用 Amazon Nova 的 SageMaker 模型評估特徵來計算基準指標。若要存取程式碼套件,請參閱 sample-Nova-lighteval-custom-task

以下是支援的可用產業標準基準清單。您可以在 eval_task 參數中指定下列基準。

模型評估的可用基準

Benchmark 模態 Description 指標 策略 子任務可用
mmlu

文字

多任務語言理解 – 測試 57 個主題的知識。

正確性

zs_cot
mmlu_pro 文字

MMLU – 專業子集 – 專注於專業領域,例如法律、醫學、會計和工程。

正確性 zs_cot
bbh 文字

進階推理任務 – 一系列挑戰性問題,可測試高階認知和問題解決技能。

正確性 fs_cot
gpqa 文字

一般物理問題回答 – 評估對物理概念的理解及解決相關問題的能力。

正確性 zs_cot
數學運算 文字

數學問題解決 – 測量代數、微積分和應用題等主題的數學推理能力。

exact_match zs_cot
strong_reject 文字

品質控管任務 – 測試模型可偵測和拒絕不適當、有害或不正確內容的能力。

偏轉 zs
ifeval 文字

指示追蹤評估 – 測量模型遵循指定指示的準確度,並根據規格完成任務。

正確性 zs
gen_qa 多模態 (影像)

自訂資料集評估 – 可讓您提供自己的資料集進行基準測試,將模型輸出與參考答案與 ROUGE 和 BLEU 等指標進行比較。 gen_qa支援 Amazon Nova Lite 或 Amazon Nova Pro 型模型的影像推論。也支援Bring-Your-Own指標 lambda。(對於 RFT 評估,請使用 RFT 評估配方)

全部 gen_qa
llm_judge 文字

LLM 即評審偏好比較 – 使用 Nova Judge 模型來針對您的提示判斷配對回應 (B 與 A 比較) 之間的偏好,並計算較 A 偏好 B 的機率。

全部 評審

mm_llm_judge

多模態 (影像)

這個新基準的行為與llm_judge上述以文字為基礎的行為相同。唯一的差別是它支援映像推論。

全部 評審

rubric_llm_judge

文字

Rubric Judge 是建置在 Nova 2.0 Lite 上的增強LLM-as-a-judge評估模型。與只提供偏好判定的原始判斷模型不同,Ruberic Judge 會動態產生針對每個提示量身打造的自訂評估條件,並跨多個維度指派精細分數。

全部

評審

aime_2024

文字

AIME 2024 - 美國邀請數學檢查問題測試進階數學推理和問題解決

exact_match

zs_cot

calendar_scheduling

文字

Natural Plan - 行事曆排程任務測試規劃能力,以跨多天和多人安排會議

exact_match

fs

humaneval

文字

HumanEval - 旨在評估大型語言模型程式碼產生功能的基準資料集

pass@1

zs

評估特定組態

以下是配方中關鍵元件的明細,以及如何針對您的使用案例修改這些元件的指引。

了解和修改您的配方

一般執行組態

run: name: eval_job_name model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location replicas: 1 data_s3_path: "" mlflow_tracking_uri: "" mlflow_experiment_name : "" mlflow_run_name : ""
  • name:評估任務的描述性名稱。

  • model_type:指定要使用的 Nova 模型變體。請勿手動修改此欄位。選項包括:

    • amazon.nova-micro-v1:0:128k

    • amazon.nova-lite-v1:0:300k

    • amazon.nova-pro-v1:0:300k

    • amazon.nova-2-lite-v1:0:256k

  • model_name_or_path:基本模型的路徑或訓練後檢查點的 s3 路徑。選項包括:

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • nova-lite-2/prod

    • 訓練後檢查點路徑的 S3 路徑 (s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>)

      注意

      評估訓練後模型

      若要在 Nova SFT 訓練任務之後評估訓練後模型,請在成功執行訓練任務後依照下列步驟進行。在訓練日誌結尾,您會看到日誌訊息「訓練完成」。您也可以在輸出儲存貯體中找到 manifest.json 檔案,其中包含檢查點的位置。此檔案將位於輸出 S3 位置的 output.tar.gz 檔案中。若要繼續評估,請在配方組態中將其設定為 run.model_name_or_path 的值,以使用此檢查點。

  • replica:用於分散式推論 (跨多個節點執行推論) 的運算執行個體數量。設定 replica > 1 以啟用多節點推論,加速評估。如果同時指定 replica instance_count和 ,instance_count則 優先。請注意,多個複本僅適用於 SageMaker 訓練任務,不適用於 SageMaker HyperPod。

  • data_s3_path:輸入資料集 Amazon S3 路徑。此欄位為必要欄位,但應一律保留空白。

  • mlflow_tracking_uri:(選用) MLflow 追蹤伺服器的位置 (僅在 SMHP 上需要)

  • mlflow_experiment_name:(選用) 將相關 ML 執行分組在一起的實驗名稱

  • mlflow_run_name:(選用) 實驗中特定訓練執行的自訂名稱

評估組態

evaluation: task: mmlu strategy: zs_cot subtask: abstract_algebra metric: accuracy
  • task:指定要使用的評估基準或任務。支援的任務包括:

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • llm_judge

    • mm_llm_judge

    • rubric_llm_judge

    • aime_2024

    • calendar_scheduling

    • humaneval

  • strategy:定義評估方法。

    • zs_cot:零樣本思緒鏈 - 一種可提示大型語言模型的方法,鼓勵逐步推理,而無需明確的範例。

    • fs_cot:小樣本思維鏈 - 一種在要求模型解決新問題之前,提供數個逐步推理範例的方法。

    • zs:零樣本 - 一種無需任何先前訓練範例即可解決問題的方法。

    • gen_qa:使用自有資料集特定的策略。

    • judge:以 Judge 和 的形式為 Nova LLM 的特定策略mm_llm_judge

  • subtask:選用。評估任務的特定元件。如需可用子任務的完整清單,請參閱可用的子任務

    • 檢查可用基準任務中支援的子任務。

    • 如果沒有子任務基準,應移除此欄位。

  • metric:要使用的評估指標。

    • accuracy:正確回答的百分比。

    • exact_match:對於數學基準,會傳回輸入預測字串與其參考完全相符的比率。

    • deflection:對於強烈拒絕基準,會傳回對基礎模型的相對偏轉和差異顯著性指標。

    • all:

      對於 gen_qa,使用自有資料集基準,這會傳回下列指標:

      • rouge1:測量所產生文字和參考文字之間一元語法 (一個字) 的重疊。

      • rouge2:測量所產生文字和參考文字之間二元語法 (連續兩個字) 的重疊。

      • rougeL:測量文字之間最長的共同子序列,允許相符項目中的差距。

      • exact_match:二元分數 (0 或 1),指出產生的文字是否逐字元完全符合參考文字。

      • quasi_exact_match:類似於完全相符但更寬鬆,通常忽略大小寫、標點符號和空格差異。

      • f1_score:精確率和召回率的調和平均數,可測量預測回答和參考回答之間的字詞重疊。

      • f1_score_quasi:類似於 f1_score,但比對更寬鬆,使用會忽略次要差異的標準化文字比較。

      • bleu:測量所產生文字和參考文字之間 n 元語法比對的精確率,常用於轉譯評估。

      對於 llm_judgemm_llm_judge,使用您自己的資料集基準,請傳回下列指標:

      • a_scores:跨向前和向後評估傳遞的 response_A 其獲勝次數。

      • a_scores_stderr:跨配對判斷的 response_A_scores 其標準誤。

      • b_scores:測量跨向前和向後評估傳遞的 response_B 其獲勝次數。

      • a_scores_stderr:跨配對判斷的 response_B_scores 其標準誤。

      • ties:將 response_Aresponse_B 評估為相等的判斷數目。

      • ties_stderr:跨配對判斷的 ties 其標準誤。

      • inference_error:無法正確評估的判斷計數。

      • score:根據 response_B 其向前和向後傳遞中的獲勝來彙總分數。

      • score_stderr:根據 response_B 其向前和向後傳遞中的獲勝來彙總分數。

      • inference_error_stderr:跨配對判斷的彙總分數其標準誤。

      • winrate:使用 Bradley-Terry 機率計算將比 response_A 偏好 response_B 的機率。

      • lower_rate:從引導取樣預估勝率的下限 (第 2.5 個百分位數)。

      • upper_rate:從引導取樣預估勝率的上限 (第 97.5 個百分位數)。

推論組態 (選擇性)

inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0 top_logprobs: 10 reasoning_effort: null # options: low/high to enable reasoning or null to disable reasoning
  • max_new_tokens:要產生的記號數目上限。必須是整數。(不適用於 LLM 判斷)

  • top_k:要考慮的最高機率記號數量。必須是整數。

  • top_p:記號抽樣的累積機率閾值。必須是介於 1.0 到 0.0 之間的浮點數。

  • temperature:記號選擇的隨機性 (數字越高越隨機),保持 0 可讓結果具決定性。浮點數類型,最小值為 0。

  • top_logprobs:推論回應中要傳回的最大 logprob 數目。此值必須是從 0 到 20 的整數。Logprob 包含考慮的輸出字符,以及訊息內容中傳回的每個輸出字符的日誌機率。

  • reasoning_effort:控制可推理模型的推理行為。reasoning_effort 只有在model_type指定可推理的模型時設定 (目前為 amazon.nova-2-lite-v1:0:256k)。可用選項為 null (如果未設定預設值;停用推理)、低或高。

評估配方範例

Amazon Nova 提供四種不同類型的評估配方。所有配方均可在 Amazon SageMaker HyperPod 配方 GitHub 儲存庫中取得。

評估配方

    這些配方可讓您在一套完整的純文字基準之間評估 Amazon Nova 模型的基本功能。

    配方格式:xxx_general_text_benchmark_eval.yaml

    這些配方可讓您使用自有資料集進行基準測試,並使用不同類型的指標比較模型輸出以參考回答。

    配方格式:xxx_ bring_your_own_dataset_eval.yaml

    使用自有資料集需求

    檔案格式:

    • 包含評估範例的單一 gen_qa.jsonl 檔案。檔案名稱應該是確切的 gen_qa.jsonl

    • 您必須將資料集上傳至 SageMaker 訓練任務可存取的 S3 位置。

    • 檔案必須遵循一般 Q&A 資料集所需的結構描述格式。

    結構描述格式要求 - .jsonl 檔案中的每一行都必須是具有下列欄位的 JSON 物件。

    • 必要欄位。

      query:字串,包含需要回答的問題或指示。

      response:字串,包含預期的模型輸出。

    • 選用欄位。

      system:字串,包含在處理查詢之前設定 AI 模型行為、角色或個性的系統提示。

      images:陣列包含具有資料屬性的物件清單 (Base64 編碼影像字串)。

      metadata:字串包含與項目相關聯的中繼資料,用於標記目的。

    範例項目

    { "system":"You are an English major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" }{ "system":"You are a pattern analysis specialist who provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" }{ "system":"You have great attention to detail and follow instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }{ "system": "Image inference: ", "query": "What is the number in the image? Please just use one English word to answer.", "response": "two", "images": [ { "data": "data:image/png;Base64,iVBORw0KGgoA ..." } ] }

    若要使用您的自訂資料集,請新增下列必要欄位來修改評估配方,而不變更現有的組態:

    evaluation: task: gen_qa strategy: gen_qa metric: all

    限制

    • 每次評估只允許一個 .jsonl 檔案。

    • 該檔案必須嚴格遵循定義的結構描述。

    使用您自己的指標

    您可以使用自己的指標,透過自訂預先處理、後製處理和指標功能來完全自訂模型評估工作流程。預先處理可讓您在傳送至推論伺服器之前處理輸入資料,而後製處理可讓您自訂指標計算,並根據您的需求傳回自訂指標。

    請依照下列步驟,使用自訂評估 SDK 來使用您自己的指標。

    1. 如果您尚未這麼做,請先在 AWS 帳戶 中建立 AWS Lambda 函數

    2. GitHub 儲存庫下載預先建置nova-custom-eval-layer.zip的檔案。您可以使用此開放原始碼 Nova 自訂評估 SDK 來驗證自訂函數的輸入和輸出承載,並提供整合的介面,以在訓練期間與 Nova 的 自帶指標評估整合。

    3. 使用下列命令上傳自訂 Lambda layer:

      aws lambda publish-layer-version \ --layer-name nova-custom-eval-layer \ --zip-file fileb://nova-custom-eval-layer.zip \ --compatible-runtimes python3.12 python3.11 python3.10 python3.9
    4. 將此層新增為 Lambda 函數的自訂層,以及必要的 AWS 層: AWSLambdaPowertoolsPythonV3-python312-arm64(pydantic相依性需要)。

    5. 使用提供的範例更新您的 Lambda 程式碼,並視需要修改程式碼。此範例程式碼會使用模型評估的預先處理和後製步驟,為 Nova 的自訂評估建立 Lambda 函數。

      from nova_custom_evaluation_sdk.processors.decorators import preprocess, postprocess from nova_custom_evaluation_sdk.lambda_handler import build_lambda_handler @preprocess def preprocessor(event: dict, context) -> dict: data = event.get('data', {}) return { "statusCode": 200, "body": { "system": data.get("system"), "prompt": data.get("prompt", ""), "gold": data.get("gold", "") } } @postprocess def postprocessor(event: dict, context) -> dict: # data is already validated and extracted from event data = event.get('data', []) inference_output = data.get('inference_output', '') gold = data.get('gold', '') metrics = [] inverted_accuracy = 0 if inference_output.lower() == gold.lower() else 1.0 metrics.append({ "metric": "inverted_accuracy_custom", "value": accuracy }) # Add more metrics here return { "statusCode": 200, "body": metrics } # Build Lambda handler lambda_handler = build_lambda_handler( preprocessor=preprocessor, postprocessor=postprocessor )
    6. 授予 Lambda 存取評估任務的權限。確保為評估任務指定的執行角色包含叫用 Lambda 函數的政策。以下是一個範例政策。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaAccess", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-ARN" } } }, { "Sid": "DenyNonAWSEventSourcesForLambda", "Effect": "Deny", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "Null": { "lambda:EventSourceToken": false } } } ] }
    7. 檢閱 Lambda 承載結構描述。下表列出 Lambda 請求和回應結構描述。您可以使用 Nova 自訂評估 SDK 驗證您的結構描述。

      Lambda 請求承載 Lambda 回應承載
      預處理器
      { "process_type": "preprocess", "data": { "system": "You are a helpful assistant", "prompt": "What is 2+2?", "gold": "4" } }
      { "statusCode": 200, "body": { "system": "You are a helpful assistant that can substitute * for addition", "prompt": "What is 2*2?", "gold": "4" } }
      後處理器
      { "process_type": "postprocess", "data": { "prompt": "What is 2+2?", "inference_output": "2+2=4", "gold": "4" } }
      { "statusCode": 200, "body": [ {"metric": "accuracy", "value": 1.0}, {"metric": "f1_score", "value": 1.0}, {"metric": "exact_match", "value": 1}, {"metric": "length_ratio", "value": 0.8} ] }
    8. 修改配方檔案。請見此處範例。

      processor: lambda_arn: arn:aws:lambda:us-east-1:111122223333:function:name lambda_type: "custom_metrics" preprocessing: enabled: true postprocessing: enabled: true aggregation: average
      • lambda-arn:處理預先處理和後製處理的 Lambda 函數的 Amazon Resource Name (ARN)。

      • lambda_type:「custom_metrics」或「rft」。

      • preprocessing:是否要啟用自訂預先處理操作。

      • postprocessing:是否要啟用自訂後置處理操作。

      • aggregation:內建彙總函數 (有效選項:最小值、最大值、平均值、總和)。

    限制

    • 使用您自己的指標僅適用於文字輸入資料集。

    • 不支援多模態輸入資料集。

    • 預先處理步驟不會處理中繼資料欄位。

    Nova LLM Judge 是一種模型評估功能,可讓您使用自訂資料集,將一個模型的回應品質與基準模型的回應進行比較。它會接受包含提示、基準回應和挑戰者回應的資料集,然後使用 Nova Judge 模型透過配對比較,以根據 Bradley-Terry 機率提供勝率指標。配方格式:xxx_llm_judge_eval.yaml

    Nova LLM 資料集需求

    檔案格式:

    • 包含評估範例的單一 llm_judge.jsonl 檔案。檔案名稱應該是確切的 llm_judge.jsonl

    • 您必須將資料集上傳至 SageMaker 訓練任務可存取的 S3 位置。

    • 檔案必須遵循 llm_judge 資料集所需的結構描述格式。

    • 輸入資料集應確保所有記錄都不到 12 k 內容長度。

    結構描述格式 - .jsonl 檔案中的每一行都必須是具有下列欄位的 JSON 物件。

    • 必要欄位。

      prompt:字串,包含所產生回應的提示。

      response_A:字串,包含基準回應。

      response_B:字串,包含與基準回應比較的替代回應。

    範例項目

    { "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }

    若要使用您的自訂資料集,請使用下列必要欄位修改您的評估配方,切勿變更任何內容:

    evaluation: task: llm_judge strategy: judge metric: all

    限制

    • 每次評估只允許一個 .jsonl 檔案。

    • 該檔案必須嚴格遵循定義的結構描述。

    • Nova Judge 模型在微型/精簡/專業規格中是相同的。

    • 目前不支援自訂判斷模型。

    Nova LLM 作為多模態 (影像) 基準配方的判斷

    Nova LLM Judge for multi-modal (image), short for Nova MM_LLM Judge 是一種模型評估功能,可讓您使用自訂資料集,比較一個模型的回應品質與基準模型的回應。它接受包含提示、基準回應和挑戰者回應的資料集,以及 Base64-encoded字串形式的影像,然後使用 Nova Judge 模型,透過配對比較提供基於 Bradley-Terry 機率的勝率指標。配方格式:xxx_mm_llm_judge_eval.yaml

    Nova LLM 資料集需求

    檔案格式:

    • 包含評估範例的單一 mm_llm_judge.jsonl 檔案。檔案名稱必須恰好為 llm_judge.jsonl

    • 您必須將資料集上傳至 SageMaker 訓練任務可存取的 SS3 位置。

    • 檔案必須遵循 mm_llm_judge 資料集所需的結構描述格式。

    • 輸入資料集應確保所有記錄都低於 12 k 內容長度,不包括影像的屬性。

    結構描述格式 - .jsonl 檔案中的每一行都必須是具有下列欄位的 JSON 物件。

    • 必要欄位。

      prompt:字串,包含所產生回應的提示。

      images:陣列包含具有資料屬性的物件清單 (值為 Base64-encoded的影像字串)。

      response_A:字串,包含基準回應。

      response_B:字串,包含與基準回應比較的替代回應。

    範例項目

    為了便於閱讀,以下範例包含新的行和縮排,但在實際的資料集中,每個記錄應該位於單一行。

    { "prompt": "What is in the image?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." } ], "response_A": "a dog.", "response_B": "a cat.", } { "prompt": "How many animals are in each of the images?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." }, { "data": "data:image/jpeg;Base64,/DKEafe3gihn..." } ], "response_A": "The first image contains one cat and the second image contains one dog", "response_B": "The first image has one aminal and the second has one animal" }

    若要使用您的自訂資料集,請使用下列必要欄位修改您的評估配方,切勿變更任何內容:

    evaluation: task: mm_llm_judge strategy: judge metric: all

    限制

    • 每次評估只允許一個 .jsonl 檔案。

    • 該檔案必須嚴格遵循定義的結構描述。

    • Nova MM Judge 模型僅支援影像參考。

    • Nova MM Judge 模型在 Amazon Nova Micro、Amazon Nova Lite 和 Amazon Nova Pro 規格之間是相同的。

    • 目前不支援自訂判斷模型。

    • 不支援 Amazon S3 映像 URI。

    • 輸入資料集應確保所有記錄都低於 12 k 內容長度,但不包括影像屬性。

    執行評估訓練任務

    使用以下範例 Jupyter 筆記本啟動訓練任務。請參閱以下筆記本作為範例,以執行評估訓練任務。如需詳細資訊,請參閱使用 SageMaker AI 估算器執行訓練任務

    參考表

    執行筆記本之前,請參閱下列參考表,以選取映像 URI 和執行個體組態。

    選取映像 URI

    Recipe 映像 URI

    評估映像 URI

    708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

    選取執行個體類型和計數

    模型 任務類型 執行個體類型 建議的執行個體計數 允許的執行個體計數
    Amazon Nova Micro 評估 (SFT/DPO)

    g5.12xlarge

    1 1 - 16
    Amazon Nova Lite 評估 (SFT/DPO)

    g5.12xlarge

    1 1 - 16
    Amazon Nova Pro 評估 (SFT/DPO)

    p5.48xlarge

    1 1 - 16

    範例筆記本

    下列範例筆記本示範如何執行評估訓練任務。

    # install python SDK # Do not use sagemaker v3, as sagemaker v3 introduced breaking changes !pip install sagemaker==2.254.1 import os import sagemaker,boto3 from sagemaker.inputs import TrainingInput from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local # Assume the file name be `recipe.yaml` # Populate parameters # input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location instance_type = "instance_type" # ml.g5.16xlarge as example instance_count = 1 # The number of instances for inference (set instance_count > 1 for multi-node inference to accelerate evaluation) job_name = "your job name" recipe_path = "recipe path" # ./recipe.yaml as example image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest" # Do not change output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption # (Optional) To bring your own dataset and LLM judge for evaluation # evalInput = TrainingInput( # s3_data=input_s3_uri, # distribution='FullyReplicated', # s3_data_type='S3Prefix' #) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role, instance_type=instance_type, instance_count=instance_count, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key ) estimator.fit() # If input dataset exist, pass in inputs # estimator.fit(inputs={"train": evalInput})

    評估和分析評估結果

    評估任務成功完成後,您可以使用下列步驟來評估和分析結果。

    若要評估和分析結果,請依照下列步驟進行。
    1. 了解輸出位置結構。結果會以壓縮檔案形式存放在您指定的 Amazon S3 輸出位置:

      s3://your-bucket/output/benchmark-name/ └── job_name/ └── output/ └── output.tar.gz
    2. 從儲存貯體下載 output.tar.gz 檔案。解壓縮要顯示的內容。

      run_name/ ├── eval_results/ | └── results_[timestamp].json │ └── inference_output.jsonl (only present for gen_qa) | └── details/ | └── model/ | └── <execution-date-time>/ | └──details_<task_name>_#_<datetime>.parquet └── tensorboard_results/ └── eval/ └── events.out.tfevents.[timestamp]
      • results_[timestamp].json - 輸出指標 JSON 檔案

      • details_<task_name>_#_<datetime>.parquet - 推論輸出檔案 (strong_reject 除外)

      • events.out.tfevents.[timestamp] - TensorBoard 輸出檔案

      • inference_output.jsonl - 清除的推論輸出檔案 (僅適用於 gen_qa 任務)

    3. 在 TensorBoard 中檢視結果。若要視覺化您的評估指標:

      1. 將解壓縮的資料夾上傳至 S3 儲存貯體

      2. 導覽至 SageMaker TensorBoard

      3. 選取您的「S3 資料夾」

      4. 新增 S3 資料夾路徑

      5. 等待同步完成

    4. 分析推論輸出。除了 llm_judgestrong_reject 之外,所有評估任務都會有下列欄位可用於在推論輸出中分析。

      • full_prompt - 傳送至用於評估任務之模型的完整使用者提示。

      • gold - 包含資料集指定之正確回答的欄位 (如)。

      • metrics - 包含個別推論評估指標的欄位。需要彙總的值在個別推論輸出上不會有值。

      • predictions - 包含指定提示之模型輸出清單的欄位。

      • pred_logits - 包含視為輸出字符的欄位,以及訊息內容中傳回之每個輸出字符的日誌機率。

      透過查看這些欄位,您可以判斷指標差異的原因,並了解自訂模型的行為。

      對於 llm_judge,推論輸出檔案在每對評估的指標欄位下方包含下列欄位。

      • forward_output - 按順序 (response_A、response_B) 評估時的 Judge 原始偏好設定。

      • backward_output - 按相反順序 (response_B、response_A) 評估時的 Judge 原始偏好設定。

      • Pairwise metrics - 根據向前和向後評估配對計算的指標,包括 a_scoresb_scorestiesinference-scorescore

        注意

        winrate 等彙總指標僅可在摘要結果檔案中取得,而不是根據個別判斷。

      對於 gen_qainference_output.jsonl 檔案包含每個 JSON 物件的下列欄位:

      • 提示 - 提交到模型的最終提示

      • 推論 - 來自模型的原始推論輸出

      • gold - 來自輸入資料集的目標回應

      • 中繼資料 - 如果提供,來自輸入資料集的中繼資料字串

    評估最佳實務和疑難排解

    最佳實務

    以下列出評估程序的一些最佳實務。

    • 透過模型和基準類型讓輸出路徑井然有序。

    • 維持一致的命名慣例,以便於追蹤。

    • 將擷取的結果儲存在安全的位置。

    • 監控 TensorBoard 同步狀態以成功載入資料。

    疑難排解

    您可以將 CloudWatch 日誌群組 /aws/sagemaker/TrainingJobs 用於訓練任務錯誤日誌。

    引擎核心故障

    問題:

    如果您看到:

    RuntimeError: Engine core initialization failed.

    原因:

    雖然這是可能有多個原因的一般錯誤,但通常會在您嘗試載入的模型檢查點與指定的模型類型之間不相符時發生。例如,您想要評估微調的 Nova 2.0 lite 模型檢查點,但您提供的模型類型是 1.0 模型類型,例如 amazon.nova-micro-v1:0:128k

    正確的映射應該是

    model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location

    預防

    在提交評估任務model_type之前,再次檢查 model_name_or_path 是否對應至右側。

    可用的子任務

    下列列出跨多個網域進行模型評估的可用子任務,包括 MMLU (基本多任務語言理解)、BBH (大型工作台硬式) 和 MATH。這些子任務可讓您評估模型在特定功能和知識領域的效能。

    MMLU

    MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]

    BBH

    BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]

    Math

    MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus",

    使用各種評估方法和指標來評估自訂的 Nova 模型。