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
Kontainer SageMaker Inspect AI menjalankan evaluasi model LLM pada SageMaker Pekerjaan Pelatihan. Wadah menggunakan Inspect AI
Pendekatan evaluasi sebelumnya (berdasarkan lighteval
Ikhtisar
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_urimenunjuk ke jalur pos pemeriksaan.
Cara kerjanya
Anda memberikan dua input ke wadah:
-
File konfigurasi YAMB (resep) yang mendefinisikan penyedia inferensi, tolok ukur, dan parameter evaluasi
-
File benchmark (skrip Python dengan dekorator) diunggah
@taskke 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
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
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
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 sebagaitrust_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 sebagaieval_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
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:
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.
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 padamodel_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
benchmarksBagian 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
evalBagian 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 bagianeval.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
outputBagian 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
Benchmark adalah file Python yang menggunakan dekorator Inspect @task AI untuk menentukan tugas evaluasi. Repositori inspect-evals
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 Andapyproject.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
tasksBidang 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
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
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
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:
-
Startup - Inisialisasi kontainer dan validasi konfigurasi
-
Unduhan Benchmark - Mengunduh file benchmark dan menginstal dependensi
-
Pengaturan titik akhir - Membuat atau menghubungkan ke titik akhir inferensi
-
Evaluasi — Menjalankan tugas benchmark dengan indikator kemajuan
-
Unggahan hasil - Menulis hasil ke S3 dan secara opsional masuk ke MLFlow
-
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
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
-
Instal ekstensi dari pasar VS Code (cari “Periksa AI”)
-
Di Inspect Activity Bar, cari panel Log dan pilih ikon folder
-
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
Wadah Inspect AI berfungsi dengan tolok ukur apa pun yang ditulis dalam format tugas Inspect AI. Repositori inspect-evals
Untuk menulis tolok ukur Anda sendiri, lihat dokumentasi penulisan tugas Inspect AI
Evaluasi agen
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. SageMaker Untuk informasi tentang fitur dan konfigurasi kontainer, lihat Fitur 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.
Memulai dengan evaluasi agen
Untuk menjalankan evaluasi agen, lengkapi prasyarat berikut:
-
Menerapkan titik akhir dengan pemanggilan alat diaktifkan
-
Pilih benchmark agen dari repositori inspect-evals
(cari tolok ukur yang menggunakan pemecah pemanggilan alat) -
Konfigurasikan resep Anda dengan sesuai
timeoutdanmax_tokensnilai untuk interaksi multi-putaran
Titik akhir Amazon Bedrock
-
Untuk penyiapan dan penerapan lengkap, lihat titik akhir Amazon Bedrock.
-
Untuk dukungan pemanggilan alat, lihat bagian pemanggilan alat sisi klien di Penggunaan alat dengan Amazon Bedrock.
Contoh notebook
Notebook berikut menunjukkan menjalankan tolok ukur agen pemanggilan alat dengan container Inspect AI:
-
tau-bench (berbasis pekerjaan)
- 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
— 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 pada lingkungan komputasi dengan akses Docker (misalnya, instans Amazon EC2 atau notebook dengan Docker diinstal). SageMaker
Pemecahan masalah
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.xlargebukanml.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.comuntuk mengambil peran -
Pengguna atau peran Anda memiliki
iam:PassRoleizin 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.0deterministik dan dapat direproduksi -
max_tokens — Pastikan nilainya cukup besar bagi model untuk menyelesaikan responsnya
-
completion_mode — Untuk model dasar (non-obrolan), atur
completion_mode: trueresep Anda untuk menggunakan prompt gaya penyelesaian alih-alih format obrolan
Privasi data
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.
| 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. |