

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Evaluasi dengan Inspect AI Container
<a name="nova-eval-inspect-ai-container"></a>

Kontainer SageMaker Inspect AI menjalankan evaluasi model LLM pada SageMaker Pekerjaan Pelatihan. Wadah menggunakan [Inspect AI](https://inspect.ai-safety-institute.org.uk/) untuk menyediakan proses evaluasi standar untuk model yang diterapkan ke titik akhir SageMaker inferensi atau Amazon Bedrock — termasuk model Amazon Nova 1.0 (Micro, Lite, Pro) dan 2.0 (Lite 2).

[Pendekatan evaluasi](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model-evaluation.html) sebelumnya (berdasarkan [lighteval](https://github.com/huggingface/lighteval)) menggabungkan inferensi offline dan logika evaluasi secara erat, yang membatasi fleksibilitas dalam bagaimana model dapat dilayani dan diuji. Wadah Inspect AI memisahkan logika evaluasi dari inferensi sepenuhnya.

## Ikhtisar
<a name="nova-eval-container-overview"></a>

Manfaat utama meliputi:
+ **Bawa tolok ukur Anda sendiri** — tulis tugas evaluasi dalam format Inspect AI, lalu colokkan tugas evaluasi khusus domain tanpa bergantung pada tim terpusat untuk menggunakannya.
+ **Evaluasi dengan opsi inferensi yang berbeda** — bekerja dengan SageMaker Inference (titik akhir yang ada atau buat dengan cepat), Amazon Bedrock, dan lebih banyak backend inferensi yang masuk.
+ **Iterasi lebih cepat** — beralih dari pengembangan benchmark ke evaluasi produksi tanpa perubahan infrastruktur. Orientasi benchmark baru yang sebelumnya memakan waktu berhari-hari terjadi dalam hitungan menit.
+ **Jalankan dalam skala besar** — rantai beberapa tolok ukur dalam satu pekerjaan, campurkan tolok ukur standar dari pustaka inspeksi-evals dengan tugas kustom Anda sendiri di pekerjaan yang sama.
+ **Satu titik masuk untuk semua teknik pelatihan** — apakah model Anda disetel dengan SFT (SMTJ, SMHP), CPT (SMHP), atau RFT (SMTJ, SMHP), wadah mengevaluasinya melalui antarmuka yang sama. Mengevaluasi pos pemeriksaan pertengahan pelatihan yang disimpan pada langkah-langkah tertentu juga didukung (misalnya, langkah 500, langkah 1000) dengan `model_s3_uri` menunjuk ke jalur pos pemeriksaan.

### Cara kerjanya
<a name="nova-eval-container-how-it-works"></a>

Anda memberikan dua input ke wadah:

1. File konfigurasi YAMB (resep) yang mendefinisikan penyedia inferensi, tolok ukur, dan parameter evaluasi

1. File benchmark (skrip Python dengan dekorator) diunggah `@task` ke Amazon S3

Container menangani manajemen endpoint, eksekusi evaluasi, dan pengumpulan hasil. Saat pekerjaan pelatihan selesai, hasilnya ditulis ke lokasi keluaran S3 yang Anda tentukan.

## Gambar kontainer
<a name="nova-eval-container-images"></a>

Tabel berikut mencantumkan URI gambar kontainer Inspect AI menurut AWS Wilayah.


| Region | URI gambar kontainer | 
| --- | --- | 
| 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 | 

## Prasyarat
<a name="nova-eval-container-prerequisites"></a>

Sebelum Anda mulai, pastikan Anda memiliki sumber daya dan akses berikut.


| Persyaratan | Deskripsi | 
| --- | --- | 
| AWS akun dengan SageMaker akses | Aktif Akun AWS dengan izin untuk membuat Pekerjaan SageMaker Pelatihan | 
| Bucket S3 | Bucket untuk menyimpan resep evaluasi, file benchmark, dan hasil keluaran | 
| Peran eksekusi IAM | Peran yang SageMaker dapat diasumsikan untuk mengakses sumber daya Anda | 
| SageMaker titik akhir inferensi atau akses Amazon Bedrock | Titik akhir model yang diterapkan atau akses model Amazon Bedrock untuk model yang ingin Anda evaluasi | 
| AWS CLI atau SageMaker Python SDK | Alat untuk mengirimkan pekerjaan pelatihan dan mengelola sumber daya | 
| Reservasi kapasitas (model besar) | Untuk model yang memerlukan instans yang dipercepat (seperti p5 untuk Nova Lite 2), hubungi AWS Support untuk mencadangkan kapasitas SageMaker Inferensi atau Amazon Bedrock | 

## Langkah 1: Siapkan izin IAM
<a name="nova-eval-container-step1"></a>

 SageMaker Training Job berjalan di bawah peran eksekusi yang Anda berikan. Peran ini memerlukan izin untuk membaca tolok ukur dari S3, menulis hasil, memanggil titik akhir inferensi, dan menulis log. CloudWatch 

**1.1 Buat kebijakan kepercayaan**

Simpan yang berikut ini sebagai`trust_policy.json`:

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

**1.2 Buat peran**

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

**1.3 Lampirkan kebijakan izin**

Simpan yang berikut ini sebagai`eval_policy.json`, ganti semua nilai placeholder (`REGION`,`ACCOUNT_ID`, nama bucket) dengan nilai Anda:

```
{
  "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/*"
    }
  ]
}
```

Lampirkan kebijakan ke peran:

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

## Langkah 2: Tulis resep eval Anda
<a name="nova-eval-container-step2"></a>

Resep eval adalah file konfigurasi YAMB yang mendefinisikan bagaimana wadah menjalankan evaluasi Anda. Resep menentukan penyedia inferensi, tolok ukur, parameter evaluasi, dan pengaturan output.

Untuk contoh ujung ke ujung, lihat buku catatan berikut:
+ [Mengevaluasi titik SageMaker akhir yang ada](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/inspect_eval_container/eval_sagemaker_endpoint.ipynb)
+ [Evaluasi dengan endpoint terkelola](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/inspect_eval_container/eval_managed_endpoint.ipynb)
+ [Evaluasi model Amazon Bedrock](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/inspect_eval_container/eval_bedrock_model.ipynb)

**Opsi A: Evaluasi titik SageMaker akhir yang ada**

Gunakan opsi ini ketika Anda memiliki model yang sudah diterapkan pada titik akhir SageMaker inferensi.

```
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/"
```

**Opsi B: Buat titik akhir, evaluasi, lalu bersihkan**

Gunakan opsi ini agar penampung menerapkan basis Amazon Nova atau model yang disetel dengan baik, menjalankan evaluasi, dan meruntuhkan titik akhir secara otomatis. Ini adalah pendekatan yang direkomendasikan untuk evaluasi satu kali. Ambil wadah SageMaker inferensi terbaru dari dokumentasi gambar wadah [Amazon Nova SageMaker Inference](https://docs.aws.amazon.com//nova/latest/userguide/nova-model-sagemaker-inference.html#nova-sagemaker-inference-container-images).

```
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/"
```

**Catatan pada`model_s3_uri`:**
+ **Model Amazon Nova GA (pos pemeriksaan dasar)**: Misalnya, `s3://escrow-nova-model-708977205387-us-east-1/nova-lite-2/prod/` — SageMaker mengelola akses secara otomatis, tidak diperlukan izin S3 tambahan.
+ **Model Amazon Nova yang disesuaikan (pos pemeriksaan pasca-pelatihan)**: `s3://customer-escrow-ACCOUNT_ID-SUFFIX/YOUR_RUN_NAME/outputs/checkpoints/step_N/` — ini adalah jalur keranjang escrow dari hasil pekerjaan pelatihan Anda.

**Opsi C: Evaluasi melalui Amazon Bedrock**

Gunakan opsi ini untuk mengevaluasi model yang tersedia melalui Amazon Bedrock tanpa mengelola titik akhir.

```
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/
```

**Konfigurasi tolok ukur**

`benchmarks`Bagian ini mendefinisikan tugas evaluasi mana yang harus dijalankan. Anda dapat menghubungkan beberapa tolok ukur dalam satu pekerjaan.


| Bidang | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | 
| name | Ya | — | Nama deskriptif untuk benchmark run | 
| path | Ya | — | Jalur relatif ke file Python benchmark di direktori benchmark S3 Anda | 
| limit | Tidak | Tidak ada (semua sampel) | Jumlah maksimum sampel untuk dievaluasi. Gunakan untuk pengujian sebelum berjalan penuh. | 
| epochs | Tidak | 1 | Berapa kali untuk mengulangi evaluasi untuk signifikansi statistik | 
| task\_args | Tidak | — | Key-value pasangan diteruskan sebagai argumen ke fungsi tugas benchmark | 

**Konfigurasi eval**

`eval`Bagian ini mengontrol bagaimana kontainer mengeksekusi evaluasi.


| Parameter | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | 
| fail\_on\_error | Tidak | false | Hentikan evaluasi jika ada sampel yang gagal. Setel ke true untuk validasi ketat. | 
| max\_connections | Tidak | 10 | Jumlah permintaan paralel ke titik akhir inferensi | 
| max\_retries | Tidak | 3 | Jumlah percobaan ulang untuk permintaan inferensi yang gagal | 
| timeout | Tidak | 600 | Minta batas waktu dalam hitungan detik untuk setiap panggilan inferensi | 
| extra\_args | Tidak | — | Pasangan nilai kunci tambahan diteruskan langsung ke perintah evaluasi Inspect AI | 

**Parameter decoding**

Konfigurasikan parameter decoding model dalam bagian`eval.decoding`:


| Parameter | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | 
| temperature | Tidak | 0.0 | Mengontrol keacakan dalam generasi. Gunakan 0.0 untuk hasil benchmark deterministik dan dapat direproduksi. | 
| top\_p | Tidak | 1.0 | Ambang pengambilan sampel nukleus. 1.0berarti tidak ada batasan. | 
| top\_k | Tidak | -1 | Membatasi pilihan kata ke token K teratas yang paling mungkin. -1menonaktifkan filter ini. | 
| max\_tokens | Tidak | 8192 | Jumlah maksimum token untuk menghasilkan per respons. Peningkatan untuk tolok ukur yang membutuhkan rantai penalaran panjang. | 
| reasoning\_effort | Tidak | null | Mengontrol kedalaman penalaran untuk model yang mendukungnya (misalnya, model Amazon Nova dengan pemikiran yang diperluas). Pilihan:low,high, atau null untuk menonaktifkan. | 

**Konfigurasi keluaran**

`output`Bagian ini mendefinisikan di mana dan bagaimana hasil evaluasi disimpan.


| Bidang | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | 
| s3\_path | Ya | — | S3 URI di mana hasil evaluasi ditulis | 
| output\_format | Tidak | eval | Format untuk file hasil. Lihat tabel berikut untuk opsi. | 

Format output berikut tersedia:


| Format | Deskripsi | 
| --- | --- | 
| eval | Format AI Inspect Asli. Kompatibel dengan inspect view analisis interaktif. | 
| csv | Comma-separated nilai. Cocokkan untuk analisis spreadsheet dan jalur data. | 
| jsonl | Format Garis JSON. Satu objek JSON per baris untuk pemrosesan streaming. | 
| json | Format JSON standar. Hasil lengkap dalam satu file terstruktur. | 

**Konfigurasi MLFlow**

Secara opsional, Anda dapat mencatat metrik evaluasi ke server pelacakan MLFlow. Tambahkan `tracking` bagian ke resep Anda:

```
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
```


| Bidang | Diperlukan | Default | Deskripsi | 
| --- | --- | --- | --- | 
| mlflow\_tracking\_arn | Tidak | null | ARN dari server pelacakan SageMaker MLFlow Anda. Menyetel ini memungkinkan pencatatan MLFlow. Menghilangkan atau mengatur null untuk menonaktifkan. | 
| mlflow\_experiment\_name | Tidak | inspektur | Nama eksperimen MLFlow untuk dicatat berjalan di bawah. | 
| mlflow\_tracing | Tidak | true | Kapantrue, mencatat request/response jejak penuh untuk setiap sampel. | 
| mlflow\_log\_artifacts | Tidak | true | Kapantrue, unggah file .eval log sebagai artefak MLFlow. | 

**Referensi resep lengkap**

Contoh berikut menunjukkan resep lengkap dengan semua opsi konfigurasi yang tersedia:

```
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
```

## Langkah 3: Siapkan file benchmark
<a name="nova-eval-container-step3"></a>

Benchmark adalah file Python yang menggunakan dekorator Inspect `@task` AI untuk menentukan tugas evaluasi. [Repositori inspect-evals](https://github.com/UKGovernmentBEIS/inspect_evals) menyediakan 128\+ tolok ukur siap pakai, atau Anda dapat menulis sendiri.

**Contoh benchmark**

Contoh berikut menunjukkan tolok ukur minimal yang mengevaluasi kinerja pilihan ganda pada kumpulan data: 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(),
    )
```

**Dependensi**

Jika benchmark Anda membutuhkan dependensi tambahan, sertakan `pyproject.toml` atau `requirements.txt` dalam direktori S3 yang sama:

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

**Pre-installed paket**

Wadah termasuk paket-paket berikut. Anda tidak perlu mencantumkan ini di Anda`pyproject.toml`.


| Paket | Versi | 
| --- | --- | 
| Python | 3.12 | 
| memeriksa-ai | 0.3.220 | 
| boto3 | 1.40.61 | 
| aioboto3 | 15.5.0 | 
| openai | 2.36.0 | 
| mlflow | 3.12.0 | 
| pyyaml | 6.0.3 | 

**Pemilihan tugas**

`tasks`Bidang dalam resep Anda mengontrol tugas mana dalam file benchmark yang akan dijalankan.


| Konfigurasi | Contoh | Perilaku | 
| --- | --- | --- | 
| Kosong tasks | tasks: [] | Menjalankan semua tugas yang ditentukan dalam file benchmark | 
| Filter nama | tasks: ["algebra"] | Menjalankan tugas yang namanya berisi substring “aljabar” | 
| limit | limit: 50 | Membatasi jumlah sampel yang dievaluasi per tugas | 
| epochs | epochs: 3 | Mengulangi evaluasi beberapa kali untuk mengukur varians | 

## Langkah 4: Siapkan struktur S3 Anda
<a name="nova-eval-container-step4"></a>

Struktur berikut adalah rekomendasi untuk menjaga konfigurasi, tolok ukur, dan hasil tetap terorganisir. Anda dapat mengarahkan wadah ke lokasi S3 mana pun - struktur itu sendiri tidak diperlukan.

```
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
```

Unggah file Anda ke 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
```

## Langkah 5: Kirimkan pekerjaan pelatihan
<a name="nova-eval-container-step5"></a>

Kirimkan SageMaker Training Job untuk menjalankan evaluasi Anda. Anda dapat menggunakan AWS CLI atau SageMaker Python SDK.

**Opsi 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
```

**Opsi 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/",
        )
    ]
)
```

**Parameter kunci**


| Parameter | Nilai | Deskripsi | 
| --- | --- | --- | 
| TrainingImage | 763104351884.dkr.ecr.us-east-1.amazonaws.com/sagemaker-inspect-ai:latest | Gambar wadah Inspect AI | 
| InstanceType | ml.m5.large | Jenis instance orkestrator (bukan instance inferensi) | 
| VolumeSizeInGB | 30 | Penyimpanan untuk data benchmark dan log | 
| MaxRuntimeInSeconds | 86400 | Durasi kerja maksimal (24 jam) | 
| ChannelName | config | Saluran input yang berisi file resep dan benchmark Anda | 

**Panduan jenis instans orkestrator**

Contoh pekerjaan pelatihan menjalankan logika orkestrasi evaluasi, bukan inferensi model. Pilih jenis instans berdasarkan beban kerja evaluasi Anda.


| Tipe instans | Kasus penggunaan | Bimbingan | 
| --- | --- | --- | 
| ml.m5.large | Default yang direkomendasikan | Cukup untuk sebagian besar beban kerja evaluasi dengan paralelisme moderat | 
| ml.m5.4xlarge | Suite benchmark besar | Gunakan saat menjalankan banyak tolok ukur dengan nilai tinggi max\_connections | 
| ml.c5.large | Cost-sensitive | Alternatif biaya lebih rendah untuk evaluasi sederhana dengan paralelisme rendah | 

**Variabel lingkungan**

Anda dapat meneruskan variabel lingkungan ke wadah untuk otentikasi atau konfigurasi. Tambahkan `--environment` parameter ke AWS CLI perintah:

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

## Langkah 6: Pantau pekerjaan
<a name="nova-eval-container-step6"></a>

Setelah Anda mengirimkan pekerjaan pelatihan, Anda dapat memantau kemajuannya melalui AWS CLI atau CloudWatch Log.

**Periksa status pekerjaan**

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

**Log aliran**

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

**Apa yang diharapkan di log**

Log kontainer menunjukkan kemajuan melalui tahapan berikut:

1. **Startup** - Inisialisasi kontainer dan validasi konfigurasi

1. **Unduhan Benchmark** - Mengunduh file benchmark dan menginstal dependensi

1. **Pengaturan titik akhir** - Membuat atau menghubungkan ke titik akhir inferensi

1. **Evaluasi** — Menjalankan tugas benchmark dengan indikator kemajuan

1. **Unggahan hasil** - Menulis hasil ke S3 dan secara opsional masuk ke MLFlow

1. **Pembersihan** - Menghapus titik akhir sementara jika `cleanup_endpoint: true`

**Perkiraan jadwal**


| Stage | Perkiraan durasi | 
| --- | --- | 
| Startup kontainer | 2—5 menit | 
| Pembuatan titik akhir (jika ada) | 15-30 menit | 
| Evaluasi | Bervariasi berdasarkan ukuran benchmark dan latensi model | 
| Pembersihan | 1—2 menit | 

## Langkah 7: Melihat dan menafsirkan hasil
<a name="nova-eval-container-step7"></a>

Setelah pekerjaan selesai, lihat hasil evaluasi Anda.

**Lihat dengan Inspect AI**

Gunakan penampil Inspect AI untuk mengeksplorasi hasil secara interaktif langsung dari S3:

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

Perintah ini membuka antarmuka web lokal tempat Anda dapat menelusuri skor, melihat sampel individual, dan membandingkan proses.

**Unduh dan bagikan**

Untuk mengunduh hasil secara lokal:

```
aws s3 cp s3://your-bucket/eval/output/ ./results/ --recursive

INSPECT_LOG_DIR=./results inspect view
```

**Ekstensi Kode VS**

[Ekstensi Inspect AI VS Code](https://inspect.aisi.org.uk/vscode.html) memungkinkan Anda menelusuri log eval langsung dari S3 tanpa mengunduhnya terlebih dahulu.

1. Instal ekstensi dari pasar VS Code (cari “Periksa AI”)

1. Di Inspect Activity Bar, cari panel Log dan pilih ikon folder

1. Masukkan jalur S3 Anda: `s3://your-bucket/eval-results/`

**Struktur keluaran**

Setiap evaluasi menghasilkan file `.eval` log yang berisi bagian-bagian berikut:
+ `results.scores`— Skor agregat untuk setiap metrik
+ `samples`— Sampel evaluasi individu dengan input, output, dan skor
+ `stats`— Statistik runtime termasuk penggunaan token dan latensi
+ `eval.config`— Konfigurasi yang digunakan untuk menjalankan evaluasi

**Lihat hasil dalam MLFlow (opsional)**

Jika Anda mengonfigurasi MLFlow dalam resep Anda, buat URL yang telah ditetapkan sebelumnya untuk mengakses server pelacakan:

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

Buka URL yang dikembalikan di browser Anda untuk melihat metrik, membandingkan proses, dan menganalisis tren di seluruh evaluasi.

## Tolok ukur yang tersedia
<a name="nova-eval-container-benchmarks"></a>

Wadah Inspect AI berfungsi dengan tolok ukur apa pun yang ditulis dalam format tugas Inspect AI. [Repositori inspect-evals](https://github.com/UKGovernmentBEIS/inspect_evals) menyediakan 128\+ tolok ukur siap pakai yang mencakup bidang-bidang seperti penalaran, pengetahuan, pengkodean, dan keamanan.

Untuk menulis tolok ukur Anda sendiri, lihat dokumentasi [penulisan tugas Inspect AI](https://inspect.aisi.org.uk/tasks.html). Jika Anda menemukan tolok ukur publik yang belum tersedia di inspeksi-evals, Anda dapat menggunakan [prompt orientasi asisten AI](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/ai_assisted_benchmark_creation.md) untuk membantu mengonversinya ke format Inspect AI.

## Evaluasi agen
<a name="nova-eval-container-agentic"></a>

Tolok ukur agen menguji kemampuan model untuk menyelesaikan tugas multi-langkah yang memerlukan penggunaan alat, perencanaan, dan penalaran berulang. Evaluasi ini mensimulasikan skenario dunia nyata di mana model harus memanggil alat, menafsirkan hasil, dan memutuskan tindakan selanjutnya.

**Persyaratan titik akhir**

Evaluasi agen memerlukan titik akhir yang mendukung kemampuan berikut:
+ **Panggilan alat** - Titik akhir harus mendukung pemanggilan fungsi untuk memungkinkan model memanggil alat selama evaluasi
+ **Ukuran konteks besar** — Multi-turn percakapan dengan hasil alat memerlukan panjang konteks yang cukup untuk mempertahankan riwayat percakapan

**SageMaker Konfigurasi titik akhir inferensi**

Saat menggunakan titik akhir SageMaker Inferensi untuk evaluasi agen, konfigurasikan variabel lingkungan berikut di titik akhir Anda:


| Variabel lingkungan | Nilai | Deskripsi | 
| --- | --- | --- | 
| ENABLE\_TOOL\_CALLING | True | Mengaktifkan dukungan pemanggilan alat pada titik akhir inferensi | 
| CONTEXT\_LENGTH | Cukup untuk multi-putaran | Setel ke nilai yang cukup besar untuk mengakomodasi percakapan multi-putaran dengan hasil alat | 

Untuk informasi tentang menyiapkan titik akhir Amazon Nova di SageMaker Inferensi, lihat [Menerapkan model Amazon Nova di](https://docs.aws.amazon.com//nova/latest/userguide/deploy-sagemaker.html). SageMaker Untuk informasi tentang fitur dan konfigurasi [kontainer, lihat Fitur](https://docs.aws.amazon.com//nova/latest/userguide/container-features.html) penampung.

**Titik akhir Amazon Bedrock**

Untuk titik akhir Amazon Bedrock, pemanggilan alat didukung secara native untuk model yang kompatibel. Untuk informasi selengkapnya, lihat [Penggunaan alat dengan Amazon Bedrock](https://docs.aws.amazon.com//bedrock/latest/userguide/tool-use.html).

**Memulai dengan evaluasi agen**

Untuk menjalankan evaluasi agen, lengkapi prasyarat berikut:

1. Menerapkan titik akhir dengan pemanggilan alat diaktifkan

1. Pilih benchmark agen dari [repositori inspect-evals](https://github.com/UKGovernmentBEIS/inspect_evals) (cari tolok ukur yang menggunakan pemecah pemanggilan alat)

1. Konfigurasikan resep Anda dengan sesuai `timeout` dan `max_tokens` nilai untuk interaksi multi-putaran

**Titik akhir Amazon Bedrock**
+ Untuk penyiapan dan penerapan lengkap, lihat titik akhir [Amazon Bedrock](https://docs.aws.amazon.com//bedrock/latest/userguide/endpoints.html).
+ Untuk dukungan pemanggilan alat, lihat bagian pemanggilan alat sisi klien di [Penggunaan alat dengan Amazon Bedrock](https://docs.aws.amazon.com//bedrock/latest/userguide/tool-use.html).

**Contoh notebook**

Notebook berikut menunjukkan menjalankan tolok ukur agen pemanggilan alat dengan container Inspect AI:
+ [tau-bench (berbasis pekerjaan)](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/inspect_eval_container/eval_tau_bench.ipynb) - Evaluasi penalaran tambahan alat pada tugas layanan pelanggan menggunakan wadah Inspect AI

Untuk tolok ukur agen yang memerlukan kotak pasir Docker, gunakan Inspect AI SDK:
+ [SWE-bench dengan Inspect AI SDK](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/sagemaker-inspect-ai/local_inspect_sdk/eval_swe_bench.ipynb) — Evaluasi kemampuan rekayasa perangkat lunak menggunakan kotak pasir Docker

**penting**  
Tolok ukur agen yang memerlukan kotak pasir Docker (seperti SWE-bench) tidak didukung dalam pengalaman kontainer Inspect AI. Lingkungan SageMaker Training Job tidak menyediakan Docker-in-Docker kemampuan. Untuk menjalankan tolok ukur ini, gunakan [Inspect AI SDK](nova-eval-on-sagemaker-inference.md) pada lingkungan komputasi dengan akses Docker (misalnya, instans Amazon EC2 atau notebook dengan Docker diinstal). SageMaker 

## Pemecahan masalah
<a name="nova-eval-container-troubleshooting"></a>

Bagian ini memberikan solusi untuk masalah umum saat menjalankan evaluasi dengan wadah Inspect AI.

**Tip iterasi cepat**

Sebelum mengirimkan Training SageMaker Job, uji tolok ukur Anda secara lokal dengan Inspect AI SDK. Jalankan `inspect eval my_benchmark.py` di mesin lokal Anda untuk memvalidasi definisi tugas, dependensi, dan logika penilaian sebelum berjalan dalam skala besar.

**InsufficientInstanceCapacity kesalahan**

Kesalahan ini terjadi ketika AWS tidak memiliki kapasitas yang cukup untuk jenis instans yang diminta di Wilayah Anda.
+ Coba jenis instans yang berbeda, atau kirimkan pekerjaan di AWS Wilayah lain
+ Gunakan jenis instance yang berbeda (misalnya, `ml.m5.xlarge` bukan`ml.m5.large`)
+ Coba lagi permintaan setelah beberapa menit

**AccessDenied kesalahan**

Jika pekerjaan pelatihan gagal dengan kesalahan akses ditolak, verifikasi hal berikut:
+ Peran ARN dalam konfigurasi pekerjaan Anda sudah benar
+ Kebijakan kepercayaan memungkinkan `sagemaker.amazonaws.com` untuk mengambil peran
+ Pengguna atau peran Anda memiliki `iam:PassRole` izin untuk peran eksekusi
+ Peran eksekusi memiliki izin untuk mengakses bucket S3, titik akhir inferensi, atau model Amazon Bedrock

**Pembuatan titik akhir gagal**

Saat menggunakan `cleanup_endpoint: true` pembuatan titik akhir otomatis, masalah berikut mungkin terjadi:


| Kesalahan | Solusi | 
| --- | --- | 
| ResourceLimitExceeded | Minta peningkatan kuota layanan untuk jenis instans inferensi di Wilayah Anda | 
| OutOfMemoryError | Gunakan tipe instance inferensi yang lebih besar atau kurangi ukuran model | 
| Salah model\_s3\_uri | Verifikasi titik jalur S3 ke direktori artefak model yang valid | 
| URI gambar inferensi salah | Verifikasi URI gambar sudah benar untuk Wilayah dan kerangka model Anda | 
| Endpoint macet dalam Membuat | Periksa CloudWatch Log untuk titik akhir. Model tersebut mungkin gagal dalam pemeriksaan kesehatan. Tingkatkan MaxRuntimeInSeconds jika titik akhir membutuhkan lebih banyak waktu. | 

**HuggingFace batas waktu unduh**

Jika tolok ukur yang mengunduh kumpulan data dari waktu HuggingFace Hub habis, setel variabel `HF_HUB_DOWNLOAD_TIMEOUT` lingkungan ke nilai yang lebih tinggi (dalam hitungan detik):

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

**Job terbunuh tapi endpoint masih berjalan**

Jika pekerjaan pelatihan terganggu sebelum pembersihan selesai, titik akhir inferensi mungkin tetap aktif. Hapus titik akhir secara manual untuk menghindari tagihan yang sedang berlangsung:

```
# 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
```

**Konflik ketergantungan benchmark**

Jika benchmark gagal karena konflik ketergantungan dengan paket pra-instal, buat `pyproject.toml` di direktori benchmark dengan batasan versi eksplisit. Container menginstal dependensi benchmark secara terpisah untuk meminimalkan konflik.

**Skor Eval terlihat salah**

Jika skor evaluasi tiba-tiba rendah atau tidak konsisten, periksa pengaturan berikut dalam resep Anda:
+ **suhu** — Setel ke hasil `0.0` deterministik dan dapat direproduksi
+ **max\_tokens** — Pastikan nilainya cukup besar bagi model untuk menyelesaikan responsnya
+ **completion\_mode** — Untuk model dasar (non-obrolan), atur `completion_mode: true` resep Anda untuk menggunakan prompt gaya penyelesaian alih-alih format obrolan

## Privasi data
<a name="nova-eval-container-data-privacy"></a>

Data evaluasi Anda ditangani secara berbeda tergantung pada penyedia inferensi yang Anda gunakan.

**SageMaker titik akhir**

Saat Anda menggunakan titik akhir SageMaker Inferensi, semua data tetap berada di dalam Anda. Akun AWS Permintaan evaluasi dan respons model tidak dikirim ke luar akun Anda dan tidak digunakan untuk meningkatkan AWS layanan. Tidak diperlukan kebijakan opt-out.

**Amazon Bedrock**

Saat Anda menggunakan Amazon Bedrock sebagai penyedia inferensi, data Anda tunduk pada Kebijakan Layanan AWS Opt-Out AI. Untuk mencegah data Anda digunakan untuk meningkatkan layanan AWS AI, aktifkan kebijakan opt-out di tingkat AWS Organizations. Untuk informasi selengkapnya, lihat [kebijakan opt-out layanan AI](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html).


| Penyedia inferensi | Opt-out diperlukan | Detail | 
| --- | --- | --- | 
| SageMaker titik akhir | Tidak | Data tetap ada di akun Anda. Tidak tercakup oleh kebijakan opt-out AI. | 
| Amazon Bedrock | Ya | Aktifkan Opt-Out Kebijakan Layanan AWS AI di tingkat Organizations untuk mencegah penggunaan data untuk peningkatan layanan. | 