本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用檢查 AI 容器進行評估
SageMaker Inspect AI 容器會在 SageMaker 訓練任務上執行 LLM 模型評估。容器使用 Inspect AI
先前的評估方法 (根據 lighteval
概觀
主要優點包括:
-
使用您自己的基準 — 以檢查 AI 格式撰寫評估任務,然後插入特定網域的評估任務,而不依賴集中式團隊加入這些任務。
-
使用不同的推論選項評估 - 使用 SageMaker 推論 (現有端點或on-the-fly)、Amazon Bedrock 和傳入的更多推論後端。
-
更快速迭代 - 從基準開發到生產評估,無需變更基礎設施。先前花費數天的新基準加入會在幾分鐘內完成。
-
大規模執行 - 在一個任務中鏈結多個基準,在同一個任務中混合來自 inspect-evals 程式庫的標準基準與您自己的自訂任務。
-
所有訓練技術的一個進入點:無論您的模型是使用 SFT (SMTJ、SMHP)、CPT (SMHP) 或 RFT (SMTJ、SMHP) 進行微調,容器都會透過相同的界面進行評估。也支援透過指向檢查點路徑來評估以特定步驟儲存的中訓練
model_s3_uri檢查點 (例如步驟 500、步驟 1000)。
運作方式
您提供兩個輸入給容器:
-
定義推論提供者、基準測試和評估參數的 YAML 組態檔案 (配方)
-
上傳至 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,以您的值取代所有預留位置值 (REGION、ACCOUNT_ID、 儲存貯體名稱):
範圍縮小至使用中的資源
將每個資源 ARN 範圍縮小為僅您需要的資源。以下政策提供開始範本 — 限制儲存貯體名稱、端點 ARNs 和其他資源以符合您的環境。
{ "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/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/*" ] }, { "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範例,請參閱 GitHub 上 Amazon Nova 範例
選項 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/— 這是訓練任務輸出中的託管儲存貯體路徑。
受管端點資源
將下列選用許可授予您的執行角色,讓容器可以使用原始訓練任務名稱和 ARN 標記受管推論資源。標記的資源包括端點、端點組態和模型。這有助於在清除中斷時識別資源。容器只會在做為 SageMaker 訓練任務執行時套用標籤。
{ "Sid": "SageMakerTagManagedResources", "Effect": "Allow", "Action": "sagemaker:AddTags", "Resource": [ "arn:aws:sagemaker:REGION:ACCOUNT_ID:model/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint/*", "arn:aws:sagemaker:REGION:ACCOUNT_ID:endpoint-config/*" ] }
容器會將下列標籤套用至受管資源:
| 標籤鍵 | 範例值 |
|---|---|
sagemaker-inspect-ai:TrainingJobName |
my-eval-job-20260828-145940 |
sagemaker-inspect-ai:TrainingJobArn |
arn:aws:sagemaker:us-east-1:123456789012:training-job/my-eval-job-20260828-145940 |
外部來源可能會在執行時間中斷資源管理。如需處理剩餘資源的資訊,請參閱 疑難排解。
選項 C:透過 Amazon Bedrock 執行期評估
使用此選項可評估透過 Amazon Bedrock 執行期提供的模型,而無需管理端點。如需 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/
選項 D:透過 Amazon Bedrock Mantle 評估
Amazon Bedrock Mantle 為透過 Amazon Bedrock 提供的模型提供 OpenAI相容的推論端點。此選項不需要儲存的登入資料。容器會從執行角色的 IAM 登入資料產生短期承載字符,並在基準之間自動重新整理。
inference_provider: openai_compatible_endpoint: auth: "bedrock_mantle" region: "us-east-1" model_name: "us.amazon.nova-pro-v1:0" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/
將下列許可新增至您的執行角色 (請參閱 步驟 1:設定 IAM 許可):
{ "Sid": "BedrockMantleInference", "Effect": "Allow", "Action": [ "bedrock-mantle:CreateInference", "bedrock-mantle:CallWithBearerToken" ], "Resource": "*" }
如需許可指導,請參閱 Amazon Bedrock 文件中的 Amazon Bedrock 推論許可和 API 金鑰許可控制。
選項 E:評估OpenAI與 相容的端點
使用此選項透過任何 OpenAI相容的 API 端點進行評估,包括 SageMaker 推論Authorization標頭。根據預設,不會記錄承載字符。
權杖提供者指引
在設定憑證交付之前,請務必檢查字符提供者的文件,了解其建議的金鑰管理實務、輪換政策和安全指導。
HTTPS 需求
使用承載字符身分驗證的所有端點都需要 HTTPS。HTTP 僅允許用於 localhost 地址。
使用 AWS Secrets Manager (建議)
AWS Secrets Manager 提供加密儲存、透過 CloudTrail 存取稽核,以及 API 金鑰和其他秘密的自動輪換。將 API 金鑰儲存在 Secrets Manager 中,並在配方中由 ARN 參考它。容器會在執行時間擷取金鑰,並在基準之間自動重新整理。
inference_provider: openai_compatible_endpoint: model_name: "my-model" base_url: "https://my-endpoint/v1" auth: api_key api_key_secret_arn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/my-api-key" region: "us-east-1" benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/
將下列許可新增至您的執行角色 (請參閱 步驟 1:設定 IAM 許可):
{ "Sid": "GetApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:REGION:ACCOUNT_ID:secret:YOUR_SECRET_NAME" }
使用 環境變數
API 金鑰可以透過環境變數 傳遞INFERENCE_API_KEY。檢查您的執行時間環境文件,了解環境變數的傳遞方式和安全性影響。對於 SageMaker 訓練任務,環境變數會顯示在 DescribeTrainingJob API 回應中,且限制為 512 個字元。如需詳細資訊,請參閱 SageMaker Training Job 環境變數。
inference_provider: openai_compatible_endpoint: model_name: "my-model" base_url: "https://my-endpoint/v1" auth: api_key # No key source specified — reads from INFERENCE_API_KEY environment variable benchmarks: s3_path: "s3://your-bucket/benchmarks/my_benchmarks/" tasks: - name: mmlu eval: max_connections: 10 max_retries: 50 timeout: 600 output: s3_path: s3://your-bucket/eval/output/
例如,在 SageMaker 訓練任務上:
aws sagemaker create-training-job \ ... --environment '{"INFERENCE_API_KEY": "your-api-key"}'
基準組態
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 模型)。選項:high、 low或 null以停用。 |
輸出組態
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 儲存庫
範例基準
下列範例顯示評估 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 欄位會控制基準檔案中要執行的任務。
| 組態 | 範例 | 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.evaluate import InspectAIEvaluator evaluator = InspectAIEvaluator( model="nova-textgeneration-lite-v2", bedrock_model_id="us.amazon.nova-lite-v2:0", benchmarks_path="s3://your-bucket/benchmarks/my_benchmarks/", tasks=[{"name": "my_task", "limit": 100}], s3_output_path="s3://your-bucket/eval/output/", instance_type="ml.m5.large", ) execution = evaluator.evaluate() execution.wait() execution.show_results()
金鑰參數
| 參數 | 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
日誌中的預期事項
容器日誌會顯示下列階段的進度:
-
啟動 — 容器初始化和組態驗證
-
基準下載 — 下載基準檔案並安裝相依性
-
端點設定 — 建立或連線至推論端點
-
評估 — 使用進度指標執行基準任務
-
結果上傳 — 將結果寫入 S3 並選擇性地記錄到 MLflow
-
清除 — 刪除暫時端點,如果
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 程式碼延伸
-
從 VS Code Marketplace 安裝擴充功能 (搜尋「檢查 AI」)
-
在檢查活動列中,找到日誌窗格並選擇資料夾圖示
-
輸入您的 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 儲存庫
若要撰寫自己的基準,請參閱檢查 AI 任務撰寫文件
代理程式評估
代理程式基準測試模型完成需要工具使用、規劃和反覆推理的多步驟任務的能力。這些評估模擬實際案例,其中模型必須呼叫工具、解譯結果,並決定下一個動作。
端點需求
代理程式評估需要支援下列功能的端點:
-
工具呼叫 — 端點必須支援函數呼叫,讓模型在評估期間叫用工具
-
大型內容大小 — 具有工具結果的多迴轉對話需要足夠的內容長度來維護對話歷史記錄
SageMaker 推論端點組態
使用 SageMaker 推論端點進行代理評估時,請在端點上設定下列環境變數:
| 環境變數 | Value | 說明 |
|---|---|---|
ENABLE_TOOL_CALLING |
True |
在推論端點上啟用工具呼叫支援 |
CONTEXT_LENGTH |
足以進行多轉 | 將 設定為足夠大的值,以容納具有工具結果的多迴轉對話 |
如需在 SageMaker 推論上設定 Amazon Nova 端點的資訊,請參閱在 SageMaker 上部署 Amazon Nova 模型。如需容器功能和組態的相關資訊,請參閱容器功能。
Amazon Bedrock 端點
對於 Amazon Bedrock 端點,相容模型原生支援工具呼叫。如需詳細資訊,請參閱搭配 Amazon Bedrock 使用工具。
客服人員評估入門
若要執行代理程式評估,請完成下列先決條件:
-
部署已啟用工具呼叫的端點
-
從 inspect-evals 儲存庫
中選擇代理基準 (尋找使用工具呼叫求解器的基準) -
使用適當的
timeout和max_tokens值來設定您的配方以進行多迴轉互動
Amazon Bedrock 端點
-
如需完整的設定和部署,請參閱 Amazon Bedrock 端點。
-
如需工具呼叫支援,請參閱搭配 Amazon Bedrock 使用工具中的用戶端工具呼叫一節。
筆記本範例
下列筆記本示範使用 Inspect AI 容器執行工具呼叫代理程式基準測試:
-
tau-bench (以工作為基礎)
— 使用檢查 AI 容器評估客戶服務任務的工具強化推理
對於需要 Docker 沙盒的代理基準測試,請使用檢查 AI SDK:
-
SWE-bench with Inspect AI SDK
— 使用 Docker 沙盒評估軟體工程功能
重要
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 如果端點需要更多時間,請增加 。 |
手動清除受管資源
啟用受管端點後,受管資源資訊會以篩選詞彙 記錄到 CloudWatchINFRA。如果容器無法完成遞減,日誌會包含手動清除的 AWS CLI 命令。只有在任務不再處於執行中狀態之後,才能執行手動終止步驟。
日誌輸出範例:
[WARNING] [INFRA] Managed SMI resources created; auto-deleted on normal completion or stop. If this job is force-killed or stopped mid-creation, delete them manually: aws sagemaker delete-endpoint --endpoint-name inspectlens-ep-1787856688 --region us-east-1 aws sagemaker delete-endpoint-config --endpoint-config-name inspectlens-config-1787856688 --region us-east-1 aws sagemaker delete-model --model-name inspectlens-model-1787856688 --region us-east-1
透過stop-training-job手動終止任務時,容器會在 120 秒的寬限期內盡最大努力清除受管資源。如果無法清除資源,任務會以錯誤狀態結束。如果清除成功完成,任務會以停止狀態結束。
HuggingFace 下載逾時
如果從 HuggingFace Hub 下載資料集的基準逾時,請將HF_HUB_DOWNLOAD_TIMEOUT環境變數設定為較高的值 (以秒為單位):
--environment '{"HF_HUB_DOWNLOAD_TIMEOUT": "600"}'
基準相依性衝突
如果基準測試因為相依性與預先安裝的套件衝突而失敗,pyproject.toml請在基準測試目錄中建立具有明確版本限制的 。容器會單獨安裝基準相依性,以將衝突降至最低。
評估分數看起來有誤
如果評估分數意外低或不一致,請檢查配方中的下列設定:
-
temperature — 設定為
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 服務選擇退出政策,以防止資料用於改善服務。 |