View a markdown version of this page

使用檢查 AI 容器進行評估 - Amazon Nova

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

使用檢查 AI 容器進行評估

SageMaker Inspect AI 容器會在 SageMaker 訓練任務上執行 LLM 模型評估。容器使用檢查 AI 為部署到 SageMaker 推論端點或 Amazon Bedrock 的模型提供標準化評估程序,包括 Amazon Nova 1.0 (Micro、Lite、Pro) 和 2.0 (Lite 2) 模型。

先前的評估方法 (根據 lighteval) 緊密耦合的離線推論和評估邏輯,這限制了如何提供和測試模型的靈活性。檢查 AI 容器會將評估邏輯與推論完全分離。

概觀

主要優點包括:

  • 使用您自己的基準 — 以檢查 AI 格式撰寫評估任務,然後插入特定網域的評估任務,而不依賴集中式團隊加入這些任務。

  • 使用不同的推論選項進行評估 — 使用 SageMaker Inference (現有端點或on-the-fly)、Amazon Bedrock 和傳入的更多推論後端。

  • 加快迭代速度 — 從基準開發到生產評估,無需變更基礎設施。先前花費數天的新基準上線會在幾分鐘內發生。

  • 大規模執行:在一個任務中鏈結多個基準測試,在相同任務中混合來自 inspect-evals 程式庫的標準基準測試與您自己的自訂任務。

  • 所有訓練技術的一個進入點:無論您的模型是使用 SFT (SMTJ、SMHP)、CPT (SMHP) 或 RFT (SMTJ、SMHP) 進行微調,容器都會透過相同的界面進行評估。也支援透過指向檢查點路徑來評估在特定步驟中儲存的訓練中model_s3_uri檢查點 (例如步驟 500、步驟 1000)。

運作方式

您提供兩個輸入給容器:

  1. 定義推論提供者、基準測試和評估參數的 YAML 組態檔案 (配方)

  2. 上傳至 Amazon S3 的基準檔案 (Python 指令碼與@task裝飾項目)

容器會處理端點管理、評估執行和結果收集。當訓練任務完成時,結果會寫入您指定的 S3 輸出位置。

容器映像

下表列出依 AWS 區域檢查 AI 容器映像 URIs。

區域 容器映像 URI
us-east-1 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest
us-west-2 763104351884.dkr.ecr.us-west-2.amazonaws.com/sagemaker-inspect-ai:latest
eu-west-2 763104351884.dkr.ecr.eu-west-2.amazonaws.com/sagemaker-inspect-ai:latest

先決條件

開始之前,請確定您擁有下列資源和存取權。

需求 說明
AWS 具有 SageMaker 存取的帳戶 AWS 帳戶 具備建立 SageMaker 訓練任務許可的作用中
S3 bucket (S3 儲存貯體) 存放評估配方、基準檔案和輸出結果的儲存貯體
IAM 執行角色 SageMaker 可以擔任的角色來存取您的資源
SageMaker 推論端點或 Amazon Bedrock 存取 您要評估之模型的部署模型端點或 Amazon Bedrock 模型存取權
AWS CLI 或 SageMaker Python SDK 提交訓練任務和管理資源的工具
容量保留 (大型模型) 對於需要加速執行個體的模型 (例如 Nova Lite 2 的 p5),請聯絡 AWS Support 為 SageMaker Inference 或 Amazon Bedrock 預留容量

步驟 1:設定 IAM 許可

SageMaker 訓練任務會在您提供的執行角色下執行。此角色需要許可才能從 S3 讀取基準、寫入結果、叫用推論端點,以及寫入 CloudWatch 日誌。

1.1 建立信任政策

將下列項目儲存為 trust_policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

1.2 建立角色

aws iam create-role \ --role-name InspectLensEvalRole \ --assume-role-policy-document file://trust_policy.json

1.3 連接許可政策

將下列項目儲存為 eval_policy.json,以您的值取代所有預留位置值 (REGIONACCOUNT_ID、 儲存貯體名稱):

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ReadBenchmarkData", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_BENCHMARK_BUCKET", "arn:aws:s3:::YOUR_BENCHMARK_BUCKET/*" ] }, { "Sid": "S3WriteResults", "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"], "Resource": [ "arn:aws:s3:::YOUR_RESULTS_BUCKET", "arn:aws:s3:::YOUR_RESULTS_BUCKET/*" ] }, { "Sid": "SageMakerInvokeExistingEndpoint", "Effect": "Allow", "Action": [ "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream", "sagemaker:DescribeEndpoint" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*" }, { "Sid": "BedrockInference", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:REGION::foundation-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*" ] }, { "Sid": "BedrockCustomModelAccess", "Effect": "Allow", "Action": [ "bedrock:GetCustomModel", "bedrock:GetImportedModel", "bedrock:GetProvisionedModelThroughput", "bedrock:GetCustomModelDeployment", "bedrock:GetInferenceProfile" ], "Resource": [ "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:imported-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:provisioned-model/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:custom-model-deployment/*", "arn:aws:bedrock:REGION:ACCOUNT_ID:inference-profile/*" ] }, { "Sid": "SageMakerCreateEndpointLifecycle", "Effect": "Allow", "Action": [ "sagemaker:CreateModel", "sagemaker:DescribeModel", "sagemaker:DeleteModel", "sagemaker:CreateEndpointConfig", "sagemaker:DescribeEndpointConfig", "sagemaker:DeleteEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DescribeEndpoint", "sagemaker:DeleteEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:InvokeEndpointWithResponseStream" ], "Resource": [ "arn:aws:sagemaker:REGION:ACCOUNT_ID:model/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/inspectlens-*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/inspectlens-*" ] }, { "Sid": "ECRAuth", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Sid": "PassRoleToSageMaker", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Sid": "VPCNetworkingForEndpoint", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "CloudWatchLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/TrainingJobs:*", "arn:aws:logs:REGION:ACCOUNT_ID:log-group:/aws/sagemaker/Endpoints/*" ] }, { "Sid": "MLflowTrackingServer", "Effect": "Allow", "Action": [ "sagemaker:DescribeMlflowTrackingServer", "sagemaker:CreatePresignedMlflowTrackingServerUrl" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "MLflowTrackingOperations", "Effect": "Allow", "Action": [ "sagemaker-mlflow:AccessUI", "sagemaker-mlflow:CreateExperiment", "sagemaker-mlflow:GetExperiment", "sagemaker-mlflow:GetExperimentByName", "sagemaker-mlflow:SearchExperiments", "sagemaker-mlflow:CreateRun", "sagemaker-mlflow:GetRun", "sagemaker-mlflow:UpdateRun", "sagemaker-mlflow:SearchRuns", "sagemaker-mlflow:LogMetric", "sagemaker-mlflow:LogParam", "sagemaker-mlflow:LogBatch", "sagemaker-mlflow:SetTag", "sagemaker-mlflow:LogArtifact", "sagemaker-mlflow:ListArtifacts" ], "Resource": "arn:aws:sagemaker:REGION:ACCOUNT_ID:mlflow-tracking-server/*" }, { "Sid": "KMSForVolumeEncryption", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:REGION:ACCOUNT_ID:key/*" } ] }

將政策連接到角色:

aws iam put-role-policy \ --role-name InspectLensEvalRole \ --policy-name InspectLensEvalPolicy \ --policy-document file://eval_policy.json

步驟 2:撰寫您的評估配方

評估配方是 YAML 組態檔案,可定義容器執行評估的方式。配方會指定推論提供者、基準測試、評估參數和輸出設定。

如需end-to-end範例,請參閱下列筆記本:

選項 A:評估現有的 SageMaker 端點

當您已在 SageMaker 推論端點上部署模型時,請使用此選項。

inference_provider: sagemaker_endpoint: endpoint_name: "my-existing-endpoint" region: "us-east-1" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 100 timeout: 600 output: s3_path: "s3://your-bucket/eval-results/"

選項 B:建立端點、評估,然後清除

使用此選項可讓容器自動部署 Amazon Nova 基礎或微調模型、執行評估,以及銷毀端點。這是一次性評估執行的建議方法。從 Amazon Nova SageMaker 推論容器映像文件中擷取最新的 SageMaker 推論容器。 SageMaker

inference_provider: sagemaker_endpoint: endpoint_name: null # null = create new endpoint model_s3_uri: "s3://your-bucket/models/nova-micro/" inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: "ml.p5.48xlarge" instance_count: 1 execution_role_arn: "arn:aws:iam::ACCOUNT_ID:role/InspectLensEvalRole" region: "us-east-1" context_length: "16000" max_concurrency: "32" cleanup_endpoint: true # Auto-delete after eval benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu_pro - name: arc_c - name: boolq eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 16000 reasoning_effort: null max_connections: 16 max_retries: 100 timeout: 600 extra_args: - "-M" - "completion_mode=True" - "--logprobs" - "--top-logprobs" - "5" output: s3_path: "s3://your-bucket/eval-results/"

上的備註model_s3_uri

  • Amazon Nova GA 模型 (基本檢查點):例如:s3://escrow-nova-model-708977205387-us-east-1/nova-lite-2/prod/SageMaker 會自動管理存取,無需額外的 S3 許可。

  • 自訂 Amazon Nova 模型 (訓練後檢查點)s3://customer-escrow-ACCOUNT_ID-SUFFIX/YOUR_RUN_NAME/outputs/checkpoints/step_N/— 這是訓練任務輸出中的託管儲存貯體路徑。

選項 C:透過 Amazon Bedrock 評估

使用此選項可評估透過 Amazon Bedrock 提供的模型,而無需管理端點。

inference_provider: bedrock: model_id: amazon.nova-pro-v1:0 region: us-east-1 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 10 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/

基準組態

benchmarks 區段定義要執行的評估任務。您可以在單一任務中鏈結多個基準。

欄位 必要 預設 說明
name 基準執行的描述性名稱
path S3 基準測試目錄中基準測試 Python 檔案的相對路徑
limit 無 (所有範例) 要評估的樣本數量上限。用於在完整執行之前進行測試。
epochs 1 重複統計意義評估的次數
task_args 做為引數傳遞給基準任務函數的鍵值對

評估組態

eval 區段控制容器執行評估的方式。

參數 必要 預設 說明
fail_on_error false 如果任何範例失敗,請停止評估。將 設定為 true以進行嚴格驗證。
max_connections 10 對推論端點的平行請求數量
max_retries 3 失敗推論請求的重試嘗試次數
timeout 600 為每個推論呼叫請求以秒為單位的逾時
extra_args 直接傳遞至 Inspect AI eval 命令的其他鍵/值對

解碼參數

eval.decoding區段中設定模型解碼參數:

參數 必要 預設 說明
temperature 0.0 控制產生時的隨機性。用於確定性、可重現0.0的基準結果。
top_p 1.0 Nucleus 取樣閾值。 1.0表示沒有限制。
top_k -1 將單字選擇限制在最前面的 K 字符。 會-1停用此篩選條件。
max_tokens 8192 每個回應要產生的字符數量上限。需要長推理鏈的基準測試增加。
reasoning_effort null 控制支援模型的推理深度 (例如,具有延伸思維的 Amazon Nova 模型)。選項:highlownull以停用。

輸出組態

output 本節定義評估結果的存放位置和方式。

欄位 必要 預設 說明
s3_path 撰寫評估結果的 S3 URI
output_format 評估 結果檔案的格式。如需選項,請參閱下表。

可用的輸出格式如下:

格式 說明
eval 原生檢查 AI 格式。相容於 inspect view 以進行互動式分析。
csv 逗號分隔值。適合試算表分析和資料管道。
jsonl JSON 行格式。每行一個用於串流處理的 JSON 物件。
json 標準 JSON 格式。在單一結構化檔案中完成結果。

MLflow 組態

或者,您可以將評估指標記錄到 MLflow 追蹤伺服器。將 tracking區段新增至您的配方:

tracking: mlflow_tracking_arn: null # ARN of SageMaker MLflow tracking server mlflow_experiment_name: "inspectlens" # experiment name mlflow_tracing: true # log full request/response traces mlflow_log_artifacts: true # upload .eval files to MLflow
欄位 必要 預設 說明
mlflow_tracking_arn null SageMaker MLflow 追蹤伺服器的 ARN。設定此項目可啟用 MLflow 記錄。省略或設定為 null以停用。
mlflow_experiment_name 檢測器 要記錄執行的 MLflow 實驗名稱。
mlflow_tracing true 當 時true, 會記錄每個範例的完整請求/回應追蹤。
mlflow_log_artifacts true 當 時true, 會將.eval日誌檔案上傳為 MLflow 成品。

完整配方參考

下列範例顯示包含所有可用組態選項的完整配方:

inference_provider: sagemaker_endpoint: endpoint_name: my-nova-endpoint model_s3_uri: s3://your-bucket/models/my-model/ inference_image_uri: "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-inference-repo:SM-Inference-latest" instance_type: ml.g5.12xlarge cleanup_endpoint: true region: us-west-2 benchmarks: - name: mmlu path: benchmarks/mmlu_pro.py limit: 100 epochs: 3 task_args: subject: math - name: truthfulqa path: benchmarks/truthfulqa.py limit: 50 eval: fail_on_error: false decoding: temperature: 0.0 top_p: 1.0 top_k: -1 max_tokens: 8192 reasoning_effort: null max_connections: 256 max_retries: 50 timeout: 600 extra_args: - "--display" - "plain" output: s3_path: s3://your-bucket/eval/output/ output_format: eval tracking: mlflow_tracking_arn: "arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-server" mlflow_experiment_name: "inspectlens" mlflow_tracing: true mlflow_log_artifacts: true

步驟 3:準備基準檔案

基準是使用檢查 AI @task裝飾項目來定義評估任務的 Python 檔案。inspect-evals 儲存庫提供超過 128 個ready-to-use基準,或者您可以自行撰寫。

範例基準

下列範例顯示評估 HuggingFace 資料集上選擇多個效能的最小基準:

from inspect_ai import task, Task from inspect_ai.dataset import hf_dataset from inspect_ai.scorer import choice from inspect_ai.solver import multiple_choice @task def my_benchmark(): return Task( dataset=hf_dataset( path="cais/mmlu", name="abstract_algebra", split="test", ), solver=multiple_choice(), scorer=choice(), )

相依性

如果您的基準需要額外的相依性,requirements.txt請在相同的 S3 目錄中包含 pyproject.toml或 :

[project] name = "my-benchmark" version = "0.1.0" requires-python = ">=3.12" dependencies = [ "datasets>=2.14.0", ]

預先安裝的套件

容器包含下列套件。您不需要在 中列出這些項目pyproject.toml

套件 版本
Python 3.12
inspect-ai 0.3.220
boto3 1.40.61
aioboto3 15.5.0
Openai 2.36.0
mlflow 3.12.0
pyyaml 6.0.3

任務選取

配方中的 tasks 欄位會控制基準檔案中要執行的任務。

Configuration 範例 Behavior (行為)
空白 tasks tasks: [] 執行基準檔案中定義的所有任務
名稱篩選條件 tasks: ["algebra"] 執行名稱包含「代數」子字串的任務
limit limit: 50 限制每個任務評估的範例數量
epochs epochs: 3 重複多次評估以測量變異數

步驟 4:準備 S3 結構

下列結構是保持組態、基準和結果井然有序的建議。您可以將容器指向任何 S3 位置,不需要結構本身。

s3://your-bucket/ ├── config/ │ └── inspect_config.yaml # Your eval recipe ├── benchmarks/ │ └── my_benchmarks/ # Your benchmark Python files │ ├── pyproject.toml # Optional: benchmark dependencies │ ├── my_task.py # @task decorated functions │ └── _helpers.py # Shared utilities └── output/ # Results written here

將您的檔案上傳至 S3:

# Upload benchmark files aws s3 cp my_benchmarks/ s3://your-bucket/benchmarks/my_benchmarks/ --recursive # Upload your eval recipe aws s3 cp inspect_config.yaml s3://your-bucket/config/inspect_config.yaml

步驟 5:提交訓練任務

提交 SageMaker 訓練任務以執行您的評估。您可以使用 AWS CLI 或 SageMaker Python SDK。

選項 A: AWS CLI

aws sagemaker create-training-job \ --training-job-name inspect-eval-$(date +%Y%m%d-%H%M%S) \ --algorithm-specification \ TrainingImage=763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest,TrainingInputMode=File \ --role-arn arn:aws:iam::123456789012:role/SageMakerInspectAIRole \ --resource-config \ InstanceType=ml.m5.large,InstanceCount=1,VolumeSizeInGB=30 \ --stopping-condition MaxRuntimeInSeconds=86400 \ --input-data-config '[ { "ChannelName": "config", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket/eval/config/", "S3DataDistributionType": "FullyReplicated" } } } ]' \ --output-data-config S3OutputPath=s3://your-bucket/eval/output/ \ --region us-west-2

選項 B:SageMaker Python SDK V3

from sagemaker.train import ModelTrainer from sagemaker.train.configs import InputData, Compute from sagemaker.core.shapes.shapes import StoppingCondition, OutputDataConfig trainer = ModelTrainer( training_image="763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest", compute=Compute( instance_type="ml.m5.large", instance_count=1, volume_size_in_gb=30, ), output_data_config=OutputDataConfig( s3_output_path="s3://your-bucket/eval/output/" ), role="arn:aws:iam::123456789012:role/SageMakerInspectAIRole", stopping_condition=StoppingCondition(max_runtime_in_seconds=86400), ) trainer.train( input_data_config=[ InputData( channel_name="config", data_source="s3://your-bucket/eval/config/", ) ] )

金鑰參數

參數 Value 說明
TrainingImage 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest 檢查 AI 容器映像
InstanceType ml.m5.large 協調器執行個體類型 (非推論執行個體)
VolumeSizeInGB 30 基準資料和日誌的儲存體
MaxRuntimeInSeconds 86400 最長任務持續時間 (24 小時)
ChannelName config 包含配方和基準檔案的輸入通道

Orchestrator 執行個體類型指引

訓練任務執行個體會執行評估協同運作邏輯,而非模型推論。根據您的評估工作負載選擇執行個體類型。

執行個體類型 使用案例 指引
ml.m5.large 建議的預設值 適用於大多數具有中等平行處理的評估工作負載
ml.m5.4xlarge 大型基準測試套件 在執行許多具有高max_connections值的基準測試時使用
ml.c5.large 成本敏感 低平行處理之簡單評估的較低成本替代方案

環境變數

您可以將環境變數傳遞至容器以進行身分驗證或組態。將 --environment 參數新增至 AWS CLI 命令:

aws sagemaker create-training-job \ ... --environment '{ "HF_TOKEN": "hf_your_token_here", "HF_HUB_DOWNLOAD_TIMEOUT": "300" }'

步驟 6:監控任務

提交訓練任務後,您可以透過 AWS CLI 或 CloudWatch Logs 監控其進度。

檢查任務狀態

aws sagemaker describe-training-job \ --training-job-name your-job-name \ --query "TrainingJobStatus" \ --output text

串流日誌

aws logs tail /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix your-job-name \ --follow

日誌中的預期事項

容器日誌會顯示下列階段的進度:

  1. 啟動 — 容器初始化和組態驗證

  2. 基準下載 — 下載基準檔案並安裝相依性

  3. 端點設定 — 建立或連線至推論端點

  4. 評估 — 使用進度指標執行基準任務

  5. 結果上傳 — 將結果寫入 S3 並選擇性地記錄到 MLflow

  6. 清除 — 刪除暫時端點,如果 cleanup_endpoint: true

預估時間軸

階段 預估持續時間
容器啟動 2-5 分鐘
建立端點 (如適用) 15-30 分鐘
評估 依基準大小和模型延遲而有所不同
清除 1-2 分鐘

步驟 7:檢視和解譯結果

任務完成後,檢視您的評估結果。

使用檢查 AI 檢視

使用檢查 AI 檢視器直接從 S3 以互動方式探索結果:

inspect view --log-dir s3://your-bucket/eval-results/

此命令會開啟本機 Web 界面,您可以在其中瀏覽分數、檢視個別範例,以及比較執行。

下載並共用

若要在本機下載結果:

aws s3 cp s3://your-bucket/eval/output/ ./results/ --recursive INSPECT_LOG_DIR=./results inspect view

VS 程式碼延伸

檢查 AI VS 程式碼延伸可讓您直接從 S3 瀏覽評估日誌,而無需先下載它們。

  1. 從 VS Code Marketplace 安裝擴充功能 (搜尋「檢查 AI」)

  2. 在檢查活動列中,找到日誌窗格,然後選擇資料夾圖示

  3. 輸入您的 S3 路徑: s3://your-bucket/eval-results/

輸出結構

每個評估都會產生包含下列區段的.eval日誌檔案:

  • results.scores — 每個指標的彙總分數

  • samples — 具有輸入、輸出和分數的個別評估範例

  • stats — 執行期統計資料,包括字符用量和延遲

  • eval.config — 用於評估執行的組態

在 MLflow 中檢視結果 (選用)

如果您在配方中設定 MLflow,請產生預先簽章的 URL 來存取追蹤伺服器:

aws sagemaker create-presigned-mlflow-tracking-server-url \ --tracking-server-name my-server \ --region us-west-2

在瀏覽器中開啟傳回的 URL,以檢視指標、比較執行和分析評估的趨勢。

可用的基準

Inspect AI 容器可與以 Inspect AI 任務格式撰寫的任何基準搭配使用。inspect-evals 儲存庫提供超過 128 個ready-to-use基準,涵蓋推理、知識、編碼和安全性等領域。

若要撰寫自己的基準,請參閱檢查 AI 任務撰寫文件。如果您找到尚未在 inspect-evals 中使用的公有基準,您可以使用 AI 助理加入提示,協助將其轉換為 Inspect AI 格式。

代理程式評估

代理程式基準測試模型完成需要工具使用、規劃和反覆推理的多步驟任務的能力。這些評估模擬實際案例,其中模型必須呼叫工具、解譯結果,並決定下一個動作。

端點需求

代理程式評估需要支援下列功能的端點:

  • 工具呼叫 — 端點必須支援函數呼叫,讓模型在評估期間叫用工具

  • 大型內容大小 — 包含工具結果的多迴轉對話需要足夠的內容長度來維護對話歷史記錄

SageMaker 推論端點組態

使用 SageMaker 推論端點進行代理程式評估時,請在端點上設定下列環境變數:

環境變數 Value 說明
ENABLE_TOOL_CALLING True 在推論端點上啟用工具呼叫支援
CONTEXT_LENGTH 足以進行多轉 將 設定為足夠大的值,以容納具有工具結果的多迴轉對話

如需有關在 SageMaker 推論上設定 Amazon Nova 端點的資訊,請參閱在 SageMaker 上部署 Amazon Nova 模型。如需容器功能和組態的資訊,請參閱容器功能

Amazon Bedrock 端點

對於 Amazon Bedrock 端點,相容模型原生支援工具呼叫。如需詳細資訊,請參閱搭配 Amazon Bedrock 使用工具

客服人員評估入門

若要執行代理程式評估,請完成下列先決條件:

  1. 部署已啟用工具呼叫的端點

  2. inspect-evals 儲存庫中選擇代理基準 (尋找使用工具呼叫求解器的基準)

  3. 使用適當的 timeoutmax_tokens值來設定您的配方,以進行多迴轉互動

Amazon Bedrock 端點

筆記本範例

下列筆記本示範使用 Inspect AI 容器執行工具呼叫代理程式基準測試:

對於需要 Docker 沙盒的代理程式基準測試,請使用檢查 AI SDK:

重要

Inspect AI 容器體驗不支援需要 Docker 沙盒 (例如 SWE-bench) 的代理程式基準。SageMaker 訓練任務環境不提供 Docker-in-Docker 功能。若要執行這些基準測試,請在具有 Docker 存取權的運算環境中使用檢查 AI SDK (例如,已安裝 Docker 的 Amazon EC2 執行個體或 SageMaker 筆記本)。

疑難排解

本節提供使用檢查 AI 容器執行評估時常見問題的解決方案。

快速反覆運算秘訣

提交 SageMaker 訓練任務之前,請使用檢查 AI SDK 在本機測試基準。inspect eval my_benchmark.py 在本機電腦上執行 ,以在大規模執行之前驗證任務定義、相依性和評分邏輯。

InsufficientInstanceCapacity 錯誤

當 區域中 AWS 的請求執行個體類型沒有足夠的容量時,就會發生此錯誤。

  • 嘗試不同的執行個體類型,或在另一個 AWS 區域中提交任務

  • 使用不同的執行個體類型 (例如,ml.m5.xlarge而非 ml.m5.large)

  • 幾分鐘後重試請求

AccessDenied 錯誤

如果訓練任務因存取遭拒錯誤而失敗,請確認下列事項:

  • 任務組態中的角色 ARN 正確

  • 信任政策允許 sagemaker.amazonaws.com擔任該角色

  • 您的使用者或角色具有執行角色的iam:PassRole許可

  • 執行角色具有存取 S3 儲存貯體、推論端點或 Amazon Bedrock 模型的許可

端點建立失敗

cleanup_endpoint: true 搭配自動建立端點使用 時,可能會發生下列問題:

錯誤 解決方案
ResourceLimitExceeded 請求提高您區域中推論執行個體類型的服務配額
OutOfMemoryError 使用較大的推論執行個體類型或減少模型大小
錯誤 model_s3_uri 驗證 S3 路徑指向有效的模型成品目錄
錯誤的推論映像 URI 驗證映像 URI 是否適合您的區域和模型架構
端點卡在建立中 檢查 CloudWatch Logs 是否有端點。模型可能無法通過運作狀態檢查。MaxRuntimeInSeconds 如果端點需要更多時間,請增加 。

HuggingFace 下載逾時

如果從 HuggingFace Hub 下載資料集的基準逾時,請將HF_HUB_DOWNLOAD_TIMEOUT環境變數設定為較高的值 (以秒為單位):

--environment '{"HF_HUB_DOWNLOAD_TIMEOUT": "600"}'

任務已終止,但端點仍在執行

如果在清除完成之前中斷訓練任務,推論端點可能會保持作用中狀態。手動刪除端點以避免持續收費:

# List endpoints to find the orphaned one aws sagemaker list-endpoints \ --name-contains inspect \ --query "Endpoints[].EndpointName" \ --output table # Delete the endpoint aws sagemaker delete-endpoint \ --endpoint-name your-endpoint-name # Delete the endpoint configuration aws sagemaker delete-endpoint-config \ --endpoint-config-name your-endpoint-name # Delete the model aws sagemaker delete-model \ --model-name your-endpoint-name

基準相依性衝突

如果基準測試因為相依性與預先安裝的套件衝突而失敗,pyproject.toml請在基準測試目錄中建立具有明確版本限制的 。容器會單獨安裝基準相依性,將衝突降至最低。

評估分數看起來有誤

如果評估分數意外低或不一致,請檢查配方中的下列設定:

  • 溫度 — 設定為 0.0以取得確定性、可重現的結果

  • max_tokens — 確保值夠大,讓模型完成其回應

  • completion_mode — 對於基本 (非聊天) 模型,請在配方completion_mode: true中設定 以使用 completion-style 提示,而非聊天格式

資料隱私權

視您使用的推論提供者而定,您的評估資料處理方式會有所不同。

SageMaker 端點

當您使用 SageMaker 推論端點時,所有資料都會保留在您的 中 AWS 帳戶。評估提示和模型回應不會傳送到您的帳戶之外,也不會用於改善 AWS 服務。不需要選擇不接收政策。

Amazon Bedrock

當您使用 Amazon Bedrock 做為推論提供者時,您的資料會受到 AWS AI 服務選擇退出政策的約束。若要防止您的資料用於改善 AWS AI 服務,請在 AWS Organizations 層級啟用選擇退出政策。如需詳細資訊,請參閱 AI 服務選擇退出政策

推論提供者 需要選擇退出 詳細資訊
SageMaker 端點 資料會保留在您的 帳戶中。AI 選擇不接收政策未涵蓋。
Amazon Bedrock 在 Organizations 層級啟用 AWS AI 服務選擇退出政策,以防止資料用於改善服務。