

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

# Evaluasi model
<a name="model-customize-mtrl-evaluation"></a>

 Evaluasi menjalankan agen Anda terhadap set prompt dan melaporkan reward, pass @k, dan metrik lintasan. Gunakan untuk membandingkan model yang disetel dengan basisnya atau benchmark kandidat sebelum penerapan. 

 **Catatan:** Evaluasi penggunaan pekerjaan `JobCategory: AgentRFTEvaluation` (tidak `AgentRFT` seperti yang digunakan dalam pelatihan). Gunakan kategori ini `CreateJob` dan `DescribeJob` panggil untuk pekerjaan eval. 

## Mempersiapkan data evaluasi
<a name="model-customize-mtrl-evaluation-preparing-data"></a>

 Kumpulan data evaluasi menggunakan format dan skema yang sama dengan kumpulan data pelatihan. Lihat [Format kumpulan data yang cepat](model-customize-mtrl-assets.md#model-customize-mtrl-assets-prompt-dataset-format). Panduan di bawah ini adalah eval-spesifik. 

1. **Tahan data evaluasi dari kumpulan data pelatihan.** Jangan pernah mengevaluasi petunjuk pelatihan karena skor akan melebih-lebihkan kinerja. Cadangan sebagian data untuk set held-out, atau pertahankan dataset eval terpisah. Pertahankan set eval yang sama di seluruh iterasi sehingga hasilnya sebanding.

1. **Cocokkan format prompt pelatihan.** Agen harus mengurai perintah eval dengan cara yang sama seperti menguraikan petunjuk pelatihan. Jika Anda menggunakan pengkodean atau enkripsi selama pelatihan, gunakan struktur yang sama di sini. Menghasilkan keduanya dari jalur kode yang sama menghindari penyimpangan.

1. **Tutupi perilaku yang Anda pedulikan.** Latih setiap kombinasi alat dan alat yang digunakan agen Anda. Sertakan petunjuk yang sebelumnya menyebabkan kegagalan sehingga regresi muncul.

1. **Lindungi konten sensitif dengan cara yang sama seperti dalam pelatihan** saat layanan melewati permintaan tanpa inspeksi.

## Meluncurkan pekerjaan evaluasi
<a name="model-customize-mtrl-evaluation-launching"></a>

Setelah pelatihan selesai, evaluasi model Anda menggunakan salah satu metode berikut.

### SageMaker Studio AI
<a name="model-customize-mtrl-evaluation-launching-studio"></a>
+ Arahkan ke halaman detail model kustom Anda (**Model > Model** **Saya> pilih model** MTRL Anda).
+ Pilih **Evaluasi** untuk membuka halaman konfigurasi evaluasi.
+ Pilih **Multi-Turn RL** sebagai jenis evaluasi.
+ Konfigurasikan lingkungan agen Anda — pilih AgentCore runtime Bedrock Anda atau berikan ARN forwarder Lambda Anda.
+ Berikan kumpulan data evaluasi Anda (URI S3 atau kumpulan data terdaftar yang berisi petunjuk evaluasi yang ditahan).
+ Pilih **Kirim** untuk memulai pekerjaan evaluasi.

### SageMaker SDK Python AI
<a name="model-customize-mtrl-evaluation-launching-sdk"></a>

`MultiTurnRLEvaluator`Ini menyediakan antarmuka tingkat tinggi untuk meluncurkan pekerjaan evaluasi. Ketika Anda lulus pelatih yang sudah selesai, evaluator secara otomatis menyelesaikan paket model ARN, konfigurasi agen, dan kualifikasi agen.

**Evaluasi model yang disetel dengan baik**

```
from sagemaker.train.evaluate import MultiTurnRLEvaluator
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer

# Attach to a completed training job
trainer = MultiTurnRLTrainer.attach(job_name="my-mtrl-job-20260512082005")

# Minimal evaluator — everything else inferred from trainer
evaluator = MultiTurnRLEvaluator(
    model=trainer,
    dataset="s3://my-bucket/eval-prompts.parquet",
    s3_output_path="s3://my-bucket/eval-output/",
)

execution = evaluator.evaluate()
print(f"Evaluation started: {execution.arn}")

# Wait for completion
execution.wait()
print(f"Status: {execution.status.overall_status}")
print(f"S3 Output: {execution.s3_output_path}")
print(f"MLflow: {execution.mlflow_url}")
```

**Mengevaluasi model dasar (tidak ada pelatihan)**

Saat mengevaluasi model dasar secara langsung, `agent_config` diperlukan karena tidak ada pelatih untuk mewarisi dari:

```
from sagemaker.train.evaluate import MultiTurnRLEvaluator

# With Bedrock AgentCore
evaluator_base = MultiTurnRLEvaluator(
    model="openai-reasoning-gpt-oss-20b",
    dataset="s3://my-bucket/eval-prompts.parquet",
    agent_config="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent",
    s3_output_path="s3://my-bucket/eval-output/base/",
    mlflow_resource_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-mlflow",
    role="arn:aws:iam::123456789012:role/SageMakerRole",
    accept_eula=True,
)

execution = evaluator_base.evaluate()
execution.wait()
```

**Side-by-side perbandingan (dasar vs disetel dengan baik)**

`evaluate()`Panggilan tunggal yang mengevaluasi model dasar dan model yang disetel dengan baik dalam satu saluran:

```
comparison_evaluator = MultiTurnRLEvaluator(
    model=trainer,
    dataset="s3://my-bucket/eval-prompts.parquet",
    s3_output_path="s3://my-bucket/eval-output/comparison/",
    evaluate_base_model=True,
)

execution = comparison_evaluator.evaluate()
execution.wait()
print(f"Status: {execution.status.overall_status}")
```

**Memantau dan mengambil hasil**

```
# Refresh status
execution.refresh()
print(f"Status: {execution.status.overall_status}")

# Step-level detail
for step in execution.status.step_details:
    print(f"  {step.name}: {step.status}")
    if step.job_arn:
        print(f"    Job ARN: {step.job_arn}")

# MLflow URL
print(f"MLflow: {execution.mlflow_url}")
```

### AWS CLI dan boto3
<a name="model-customize-mtrl-evaluation-launching-agentcore"></a>

Anda juga dapat membuat pekerjaan evaluasi secara langsung menggunakan `CreateJob` API.

**Buat pekerjaan evaluasi (Bedrock AgentCore)**

 Untuk membuat pekerjaan evaluasi, panggil `CreateJob` API dengan `JobCategory` set to`AgentRFTEvaluation`. Penyiapan dan konfigurasi agen mengikuti proses yang sama dengan pekerjaan pelatihan. 

**Menggunakan AWS CLI**

```
aws sagemaker create-job \
  --job-category AgentRFTEvaluation \
  --job-name "my-agent-rft-eval-job" \
  --role-arn "arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole" \
  --job-config-schema-version "1.0.0" \
  --job-config-document '{
    "AgentConfig": {
      "BedrockAgentCoreConfig": {
        "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent"
      }
    },
    "InputDataConfig": [{
      "ChannelName": "evaluation",
      "DataSource": {
        "S3DataSource": {
          "S3DataType": "S3Prefix",
          "S3Uri": "s3://your-bucket-name/eval-prompts/"
        }
      }
    }],
    "OutputDataConfig": {
      "S3OutputPath": "s3://your-bucket-name/eval-output/",
      "MlflowConfig": {
        "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app"
      }
    },
    "EvaluationConfig": {
      "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b",
      "AcceptEula": true,
      "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }}
    }
  }' \
  --region us-west-2
```

**Menggunakan SageMaker AI Python SDK (boto3)**

```
import json
import boto3

sm = boto3.client("sagemaker")

response = sm.create_job(
    JobName="my-agent-rft-eval-job",
    RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole",
    JobCategory="AgentRFTEvaluation",
    JobConfigSchemaVersion="1.0.0",
    JobConfigDocument=json.dumps({
        "AgentConfig": {
            "BedrockAgentCoreConfig": {
                "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent"
            }
        },
        "InputDataConfig": [{
            "ChannelName": "evaluation",
            "DataSource": {
                "S3DataSource": {
                    "S3DataType": "S3Prefix",
                    "S3Uri": "s3://your-bucket-name/eval-prompts/"
                }
            }
        }],
        "OutputDataConfig": {
            "S3OutputPath": "s3://your-bucket-name/eval-output/",
            "MlflowConfig": {
                "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app"
            }
        },
        "EvaluationConfig": {
            "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b",
            "AcceptEula": True,
            "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }}
        }
    })
)

print(f"Eval Job ARN: {response['JobArn']}")
```

**Mengevaluasi model yang disetel dengan baik**

 Untuk mengevaluasi model yang dihasilkan oleh pekerjaan pelatihan, sertakan `ModelPackageConfig` dengan`InputModelPackageArn`: 

```
import json
import boto3

sm = boto3.client("sagemaker")

response = sm.create_job(
    JobName="my-agent-rft-eval-finetuned",
    RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole",
    JobCategory="AgentRFTEvaluation",
    JobConfigSchemaVersion="1.0.0",
    JobConfigDocument=json.dumps({
        "AgentConfig": {...},
        "InputDataConfig": [...],
        "OutputDataConfig": {...},
        "ModelPackageConfig": {
            "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/1"
        },
        "EvaluationConfig": {...}
    })
)

print(f"Eval Job ARN: {response['JobArn']}")
```

**Buat pekerjaan evaluasi (Agen Kustom dengan Lambda Forwarder)**

 Gunakan pendekatan yang sama dengan AgentCore evaluasi Bedrock tetapi tentukan `CustomAgentLambdaConfig` dalam`AgentConfig`: 

```
"AgentConfig": {
    "CustomAgentLambdaConfig": {
        "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder"
    }
}
```

## Evaluasi hiperparameter
<a name="model-customize-mtrl-evaluation-hyperparameters"></a>


| Kategori | Parameter | Tipe | Default | Deskripsi | 
| --- | --- | --- | --- | --- | 
| batch | eval\_group\_size | integer | 1 | Peluncuran per prompt. Catatan: Untuk menghitung pass @k, atur eval\_group\_size >= k. | 
| eval\_metrics\_config | pass\_k\_values | array | [1, 2, 4, 8, 16, 32] | Daftar k nilai untuk komputasi pass @k dan pass^k metrik. lulus @k = probabilitas bahwa setidaknya 1 dari k peluncuran sampel berhasil. pass^k = probabilitas bahwa semua peluncuran k berhasil. | 
| eval\_metrics\_config | success\_threshold | float | 1 | Peluncuran “berhasil” saat hadiah> = success\_threshold. Perhatikan ini berlaku untuk pass @k, pass^k, metrik succeeded/failed hitungan. | 
| eval\_sampling\_params | suhu | float | 0 | Suhu pengambilan sampel untuk peluncuran evaluasi. Catatan: disarankan untuk meningkatkan nilai ini melebihi 0 untuk metrik pass @k dan pass^k untuk menghindari perilaku deterministik. | 
| eval\_sampling\_params | sampling\_top\_p | float | 1 | Batas pengambilan sampel nukleus untuk peluncuran evaluasi. | 
| eval\_sampling\_params | sampling\_max\_tokens | integer | 4096 | Token maksimum yang dapat dihasilkan model per giliran selama peluncuran evaluasi. | 
| peluncuran | batas waktu | float | 600 | Waktu (detik) setelah peluncuran evaluasi diperlakukan sebagai gagal dan dapat dicoba lagi. | 
| peluncuran | max\_concurrency | int | 96 | Jumlah maksimum peluncuran evaluasi yang dapat dieksekusi secara paralel. | 
| peluncuran | max\_retries | int | 3 | Jumlah percobaan ulang untuk peluncuran evaluasi yang gagal sebelum menandainya sebagai gagal secara permanen. | 

## Evaluasi pemantauan
<a name="model-customize-mtrl-evaluation-monitoring"></a>

```
aws sagemaker describe-job \
  --job-name "my-agent-rft-eval-job" \
  --job-category AgentRFTEvaluation \
  --region us-west-2
```

## Menafsirkan hasil evaluasi
<a name="model-customize-mtrl-evaluation-results"></a>

 Buka Aplikasi MLFlow Anda untuk melihat metrik yang dicatat, distribusi hadiah, dan visualisasi lintasan untuk menjalankan evaluasi. Lihat di bawah untuk penjelasan tentang arti masing-masing metrik. 

### Metrik hadiah (`eval/reward/`)
<a name="model-customize-mtrl-evaluation-results-reward"></a>


| Metrik | Deskripsi | 
| --- | --- | 
| eval/reward/mean | Skor hadiah rata-rata di semua peluncuran. | 
| eval/reward/min | Skor hadiah minimum di semua peluncuran. | 
| eval/reward/max | Skor hadiah maksimum di semua peluncuran. | 
| eval/reward/std | Standar deviasi skor hadiah di semua peluncuran. | 
| eval/reward/zero\_frac | Fraksi peluncuran yang mencetak tepat 0 (kegagalan total). | 
| eval/reward/pass\_at\_1 | Probabilitas bahwa setidaknya 1 dari 1 sampel per prompt berhasil. Ini adalah metrik keberhasilan utama. | 
| eval/reward/pass\_power\_1 | Tingkat kelulusan dengan pembobotan daya. | 
| eval/reward/succeeded\_rollouts | Jumlah total peluncuran yang mencapai hadiah positif. | 
| eval/reward/failed\_rollouts | Jumlah total peluncuran yang mencetak 0. | 
| eval/reward/num\_prompts | Jumlah petunjuk berbeda yang dievaluasi. | 
| eval/reward/rollouts\_per\_prompt | Jumlah upaya (sampel) yang dihasilkan per prompt. | 
| eval/reward/success\_threshold | Nilai hadiah yang diperlukan untuk menghitung peluncuran sebagai “berhasil”. | 
| eval/reward/mean\_within\_groups | Hadiah rata-rata per grup prompt (memerlukan pengaturan rollouts\_per\_prompt > 1). | 
| eval/reward/std\_within\_groups | Standar deviasi hadiah dalam setiap kelompok prompt. | 
| eval/reward/min\_within\_groups | Hadiah minimum dalam setiap grup prompt. | 
| eval/reward/max\_within\_groups | Hadiah maksimum dalam setiap grup prompt. | 

### Metrik Token (`eval/tokens/`)
<a name="model-customize-mtrl-evaluation-results-token"></a>


| Metrik | Deskripsi | 
| --- | --- | 
| eval/tokens/prompt\_mean | Panjang prompt rata-rata dalam token (termasuk prompt sistem, deskripsi alat, dan konteks multi-putaran). | 
| eval/tokens/response\_mean | Panjang respons model rata-rata dalam token per giliran. | 
| eval/tokens/response\_min | Respons model terpendek dalam token. | 
| eval/tokens/response\_max | Respons model terpanjang dalam token. | 
| eval/tokens/response\_std | Standar deviasi panjang respons. Varians yang tinggi dapat menunjukkan perilaku agen yang tidak konsisten. | 

### Putar metrik (`eval/turns/`)
<a name="model-customize-mtrl-evaluation-results-turn"></a>


| Metrik | Deskripsi | 
| --- | --- | 
| eval/turns/mean | Jumlah rata-rata putaran per peluncuran. Nilai tinggi dapat mengindikasikan agen sedang mengulang atau mencoba lagi secara berlebihan. | 
| eval/turns/min | Belokan paling sedikit dalam peluncuran apa pun. | 
| eval/turns/max | Sebagian besar giliran dalam peluncuran apa pun. Nilai yang sangat tinggi menunjukkan agen terjebak tanpa menyelesaikan tugas. | 

### Metrik probabilitas log (`eval/logprob/`)
<a name="model-customize-mtrl-evaluation-results-logprob"></a>


| Metrik | Deskripsi | 
| --- | --- | 
| eval/logprob/nz\_mean | Rata-rata log-probabilitas token bukan nol (non-padding). Nilai mendekati 0 menunjukkan kepercayaan model yang tinggi. | 
| eval/logprob/nz\_min | Token probabilitas log terendah (prediksi paling tidak percaya diri). | 
| eval/logprob/nz\_max | Token probabilitas log tertinggi (prediksi paling percaya diri). | 
| eval/logprob/nz\_std | Deviasi standar probabilitas log bukan nol. Nilai rendah berarti kepercayaan diri yang tinggi secara konsisten. | 
| eval/logprob/zero\_frac | Fraksi token dengan probabilitas log nol persis (probabilitas 1.0), biasanya padding atau token paksa. | 
| eval/logprob/zero\_count | Jumlah total token zero-logprob. | 
| eval/logprob/zero\_per\_group | Rata-rata token zero-logprob per grup prompt. | 

### Metrik waktu (`timing_s/`)
<a name="model-customize-mtrl-evaluation-results-timing"></a>


| Metrik | Deskripsi | 
| --- | --- | 
| timing\_s/eval | Total waktu jam dinding untuk evaluasi dalam hitungan detik. eval/reward/num\_promptsBagilah dengan rata-rata waktu per prompt. | 

### Cara mendiagnosis pola umum
<a name="model-customize-mtrl-evaluation-results-diagnose"></a>


| Pola | Kemungkinan penyebabnya | 
| --- | --- | 
| pass\_at\_1 = 0, tinggi turns/mean | Agen perulangan tanpa menyelesaikan tugas. Periksa penggunaan alat dan pola tindakan dalam lintasan. | 
| pass\_at\_1 = 0, rendah tokens/response\_mean | Agen menghasilkan respons yang sangat singkat (mungkin kosong atau cacat). Periksa format prompt dan kompatibilitas model. | 
| Tinggi turns/max dengan rendah turns/min | Agen menunjukkan perilaku yang tidak konsisten di seluruh prompt. Beberapa tugas mungkin jauh lebih sulit atau agen mungkin gagal pada interaksi alat tertentu. | 
| Keyakinan tinggi (logprob/nz\_meanmendekati 0) tetapi hadiah rendah | Model dengan percaya diri menghasilkan output yang salah. Mungkin perlu lebih banyak keragaman data pelatihan atau penyempurnaan sinyal hadiah. | 
| zero\_frac = 1.0dalam pahala | Kegagalan total. Verifikasi penyebaran agen, konektivitas alat, dan format dataset evaluasi sudah benar. | 

 Untuk hasil mentah, tinjau artefak yang ditulis ke yang `S3OutputPath` ditentukan dalam`OutputDataConfig`. 

## Batas &amp; kuota untuk evaluasi
<a name="model-customize-mtrl-evaluation-limits"></a>

 Gunakan kuota AWS layanan untuk meminta peningkatan batas pada jumlah maksimum pekerjaan evaluasi bersamaan. 


| Kuota | Default | 
| --- | --- | 
| rft-evaluation-job pekerjaan bersamaan maksimum | 1 | 