

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

# Mengevaluasi model terlatih SageMaker AI Anda
<a name="nova-model-evaluation"></a>

Tujuan dari proses evaluasi adalah untuk menilai kinerja model terlatih terhadap tolok ukur atau kumpulan data khusus. Proses evaluasi biasanya melibatkan langkah-langkah untuk membuat resep evaluasi yang menunjuk ke model terlatih, menentukan kumpulan data dan metrik evaluasi, menyerahkan pekerjaan terpisah untuk evaluasi, dan mengevaluasi terhadap tolok ukur standar atau data khusus. Proses evaluasi akan menampilkan metrik kinerja yang disimpan di bucket Amazon S3 Anda.

**catatan**  
Proses evaluasi yang dijelaskan dalam topik ini adalah proses offline. Model ini diuji terhadap tolok ukur tetap dengan jawaban yang telah ditentukan, daripada dinilai secara real-time atau melalui interaksi pengguna langsung. [Untuk evaluasi waktu nyata, Anda dapat menguji model setelah diterapkan ke Amazon Bedrock dengan memanggil Amazon Bedrock Runtime.](https://docs.aws.amazon.com//bedrock/latest/userguide/import-with-create-custom-model.html) APIs

**Topics**
+ [Prasyarat](#nova-model-evaluation-prerequisites)
+ [Tugas benchmark yang tersedia](#nova-model-evaluation-benchmark)
+ [Evaluasi konfigurasi spesifik](#nova-model-evaluation-config)
+ [Menjalankan pekerjaan pelatihan evaluasi](#nova-model-evaluation-notebook)
+ [Menilai dan menganalisis hasil evaluasi](#nova-model-evaluation-assess)
+ [Evaluasi praktik terbaik dan pemecahan masalah](#nova-model-evaluation-best-practices)
+ [Subtugas yang tersedia](#nova-model-evaluation-subtasks)
+ [Pelatihan berulang](smtj-iterative-training.md)

## Prasyarat
<a name="nova-model-evaluation-prerequisites"></a>

Sebelum Anda memulai pekerjaan pelatihan evaluasi, perhatikan hal berikut.
+ Model Amazon Nova SageMaker terlatih AI yang ingin Anda evaluasi kinerjanya.
+ Resep dasar Amazon Nova untuk evaluasi. Untuk informasi selengkapnya, lihat [Mendapatkan resep Amazon Nova](nova-model-recipes.md#nova-model-get-recipes).

## Tugas benchmark yang tersedia
<a name="nova-model-evaluation-benchmark"></a>

Paket kode sampel tersedia yang menunjukkan cara menghitung metrik tolok ukur menggunakan fitur evaluasi model SageMaker AI untuk Amazon Nova. Untuk mengakses paket kode, lihat [Sampel-N ova-lighteval-custom-task](https://github.com/aws-samples/sample-Nova-lighteval-custom-task/).

Berikut adalah daftar tolok ukur standar industri yang tersedia yang didukung. Anda dapat menentukan tolok ukur berikut dalam `eval_task` parameter.

**Tolok ukur yang tersedia untuk evaluasi model**


| Tolok Ukur | Modalitas | Deskripsi | Metrik-metrik | Strategi | Subtugas tersedia | 
| --- | --- | --- | --- | --- | --- | 
| mmlu |  Teks  |  Pemahaman Bahasa Multi-tugas - Menguji pengetahuan di 57 mata pelajaran.  |  ketepatan  | zs\$1cot | Ya | 
| mmlu\$1pro | Teks |  MMLU - Subset Profesional - Berfokus pada domain profesional seperti hukum, kedokteran, akuntansi, dan teknik.  | ketepatan | zs\$1cot | Tidak | 
| bbh | Teks |  Tugas Penalaran Lanjutan - Kumpulan masalah menantang yang menguji keterampilan kognitif dan pemecahan masalah tingkat tinggi.  | ketepatan | fs\$1cot | Ya | 
| gpqa | Teks |  Penjawab Pertanyaan Fisika Umum — Menilai pemahaman konsep fisika dan kemampuan pemecahan masalah terkait.  | ketepatan | zs\$1cot | Tidak | 
| matematika | Teks |  Pemecahan Masalah Matematika — Mengukur penalaran matematis di seluruh topik termasuk aljabar, kalkulus, dan masalah kata.  | exact\$1match | zs\$1cot | Ya | 
| strong\$1tolak | Teks |  Quality-Control Task — Menguji kemampuan model untuk mendeteksi dan menolak konten yang tidak pantas, berbahaya, atau salah.  | defleksi | zs | Ya | 
| ifeval | Teks |  Instruksi-Mengikuti Evaluasi - Mengukur seberapa akurat model mengikuti instruksi yang diberikan dan menyelesaikan tugas untuk spesifikasi.  | ketepatan | zs | Tidak | 
| gen\$1qa | Multi-Modal (gambar) |  Evaluasi Dataset Kustom - Memungkinkan Anda menyediakan kumpulan data Anda sendiri untuk benchmarking, membandingkan output model dengan jawaban referensi dengan metrik seperti ROUGE dan BLEU. `gen_qa`mendukung inferensi gambar untuk model berbasis Amazon Nova Lite atau Amazon Nova Pro. Juga mendukung Bring-Your-Own Metrik lambda. (Untuk evaluasi RFT, silakan gunakan resep eval RFT)  | all | gen\$1qa | Tidak | 
| mmmu | Multi-Modal |  Pemahaman Multimodal Multidisiplin Besar (MMMU) - Tolok ukur tingkat perguruan tinggi yang terdiri dari pertanyaan pilihan ganda dan terbuka dari 30 disiplin ilmu.)  | ketepatan | zs\$1cot | Ya | 
| llm\$1hakim | Teks |  LLM-as-a-Judge Perbandingan Preferensi — Menggunakan model Nova Judge untuk menentukan preferensi antara respons berpasangan (B dibandingkan dengan A) untuk petunjuk Anda, menghitung probabilitas B lebih disukai daripada A.  | all | hakim | Tidak | 
|  mm\$1llm\$1hakim  | Multi-Modal (gambar) |  Tolok ukur baru ini berperilaku sama dengan berbasis teks `llm_judge` di atas. Satu-satunya perbedaan adalah mendukung inferensi gambar.  | all | hakim | Tidak | 
|  rubric\$1llm\$1judge  |  Teks  |  Rubric Judge adalah model LLM-as-a-judge evaluasi yang disempurnakan yang dibangun di atas Nova 2.0 Lite. Berbeda dengan [model hakim asli](https://aws.amazon.com/blogs/machine-learning/evaluating-generative-ai-models-with-amazon-nova-llm-as-a-judge-on-amazon-sagemaker-ai/) yang hanya memberikan putusan preferensi, Rubric Judge secara dinamis menghasilkan kriteria evaluasi khusus yang disesuaikan dengan setiap prompt dan memberikan skor granular di berbagai dimensi.  |  all  |  hakim  |  Tidak  | 
|  aime\$12024  |  Teks  |  AIME 2024 - Ujian Matematika Undangan Amerika menguji penalaran matematika tingkat lanjut dan pemecahan masalah  |  exact\$1match  |  zs\$1cot  |  Tidak  | 
|  calendar\$1scheduling  | Teks |  Rencana Alami - Kalender Penjadwalan tugas menguji kemampuan perencanaan untuk menjadwalkan rapat di beberapa hari dan orang  |  exact\$1match  |  fs  | Tidak | 
|  kemanusiaan  | Teks |  HumanEval - Dataset benchmark yang dirancang untuk mengevaluasi kemampuan pembuatan kode model bahasa besar  |  lulus @1  | zs | Tidak | 

## Evaluasi konfigurasi spesifik
<a name="nova-model-evaluation-config"></a>

Di bawah ini adalah rincian komponen kunci dalam resep dan panduan tentang cara memodifikasinya untuk kasus penggunaan Anda.

### Memahami dan memodifikasi resep Anda
<a name="nova-model-evaluation-config-explain"></a>

**Konfigurasi run umum**

```
run:
  name: eval_job_name
  model_type: amazon.nova-lite-v1:0:300k
  model_name_or_path: nova-lite/prod # or s3://escrow_bucket/model_location
  replicas: 1
  data_s3_path: ""
  mlflow_tracking_uri: ""
  mlflow_experiment_name : ""
  mlflow_run_name : ""
```
+ `name`: Nama deskriptif untuk pekerjaan evaluasi Anda.
+ `model_type`: Menentukan varian model Nova untuk digunakan. Jangan memodifikasi bidang ini secara manual. Opsinya meliputi:
  + Amazon. nova-micro-v1:0:128 k
  + Amazon. nova-lite-v1:0:300 k
  + Amazon. nova-pro-v1:0:300 k
  + [amazon.nova-2-lite-v 1:0:256 k (Model Nova 2.0 - lihat panduan kustomisasi Nova 2.0)](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model.html)
+ `model_name_or_path`: Jalur ke model dasar atau jalur s3 untuk pos pemeriksaan pasca terlatih. Opsinya meliputi:
  + nova-mikro/prod
  + nova-lite/prod
  + nova-pro/prod
  + nova-lite-2/prod (model Nova 2.0)
  + Jalur S3 untuk jalur pos pemeriksaan pasca terlatih () `s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>`
**catatan**  
**Evaluasi model pasca-terlatih**  
Untuk mengevaluasi model pasca-pelatihan setelah pekerjaan pelatihan Nova SFT, ikuti langkah-langkah ini setelah menjalankan pekerjaan pelatihan yang sukses. Di akhir log pelatihan, Anda akan melihat pesan log “Pelatihan selesai”. Anda juga akan menemukan `manifest.json` file di bucket keluaran Anda yang berisi lokasi pos pemeriksaan Anda. File ini akan berada di dalam `output.tar.gz` file di lokasi output S3 Anda. Untuk melanjutkan evaluasi, gunakan pos pemeriksaan ini dengan menyetelnya sebagai nilai untuk `run.model_name_or_path` konfigurasi resep Anda.
+ `replica`: Jumlah instance komputasi yang akan digunakan untuk inferensi terdistribusi (menjalankan inferensi di beberapa node). Setel `replica` > 1 untuk mengaktifkan inferensi multi-node, yang mempercepat evaluasi. Jika keduanya `instance_count` dan `replica` ditentukan, `instance_count` diutamakan. Perhatikan bahwa beberapa replika hanya berlaku untuk pekerjaan pelatihan SageMaker AI, bukan. 
+ `data_s3_path`: Jalur dataset masukan Amazon S3. Bidang ini diperlukan tetapi harus selalu dibiarkan kosong.
+ `mlflow_tracking_uri`: (Opsional) Lokasi server MLflow pelacak (hanya diperlukan di SMHP)
+ `mlflow_experiment_name`: (Opsional) Nama percobaan untuk mengelompokkan ML terkait berjalan bersama
+ `mlflow_run_name`: (Opsional) Nama khusus untuk pelatihan tertentu yang dijalankan dalam eksperimen

**Konfigurasi evaluasi**

```
evaluation:
  task: mmlu
  strategy: zs_cot
  subtask: abstract_algebra
  metric: accuracy
```
+ `task`: Menentukan benchmark evaluasi atau tugas untuk digunakan. Tugas yang didukung meliputi:
  + `mmlu`
  + `mmlu_pro`
  + `bbh`
  + `gpqa`
  + `math`
  + `strong_reject`
  + `gen_qa`
  + `ifeval`
  + `mmmu`
  + `llm_judge`
  + `mm_llm_judge`
  + `rubric_llm_judge`
  + `aime_2024`
  + `calendar_scheduling`
  + `humaneval`
+ `strategy`: Mendefinisikan pendekatan evaluasi.
  + `zs_cot`: Zero-shot Chain of Thought - pendekatan untuk mendorong model bahasa besar yang mendorong step-by-step penalaran tanpa memerlukan contoh eksplisit.
  + `fs_cot`: Few-shot Chain of Thought - pendekatan yang memberikan beberapa contoh step-by-step penalaran sebelum meminta model untuk memecahkan masalah baru.
  + `zs`: Zero-shot - pendekatan untuk memecahkan masalah tanpa contoh pelatihan sebelumnya.
  + `gen_qa`: Strategi khusus untuk membawa dataset Anda sendiri.
  + `judge`: Strategi khusus untuk Nova LLM sebagai Hakim dan`mm_llm_judge`.
+ `subtask`: Opsional. Komponen spesifik dari tugas evaluasi. Untuk daftar lengkap subtugas yang tersedia, lihat[Subtugas yang tersedia](#nova-model-evaluation-subtasks).
  + Periksa subtugas yang didukung dalam tugas benchmark yang tersedia.
  + Harus menghapus bidang ini jika tidak ada tolok ukur subtugas.
+ `metric`: Metrik evaluasi yang akan digunakan.
  + `accuracy`: Persentase jawaban yang benar.
  + `exact_match`: Untuk tolok ukur matematika, mengembalikan tingkat di mana string yang diprediksi input sama persis dengan referensi mereka.
  + `deflection`: Untuk tolok ukur penolakan yang kuat, kembalikan defleksi relatif ke model dasar dan metrik signifikansi perbedaan.
  + `all`:

    Untuk`gen_qa`, bawa benchmark dataset Anda sendiri, kembalikan metrik berikut:
    + `rouge1`: Mengukur tumpang tindih unigram (kata tunggal) antara teks yang dihasilkan dan referensi.
    + `rouge2`: Mengukur tumpang tindih bigram (dua kata berturut-turut) antara teks yang dihasilkan dan referensi.
    + `rougeL`: Mengukur urutan umum terpanjang antara teks, memungkinkan celah dalam pencocokan.
    + `exact_match`: Skor biner (0 atau 1) menunjukkan apakah teks yang dihasilkan cocok dengan teks referensi persis, karakter demi karakter.
    + `quasi_exact_match`: Mirip dengan kecocokan persis tetapi lebih lunak, biasanya mengabaikan kasus, tanda baca, dan perbedaan ruang putih.
    + `f1_score`: Rata-rata harmonik presisi dan ingatan, mengukur tumpang tindih kata antara jawaban yang diprediksi dan referensi.
    + `f1_score_quasi`: Mirip dengan f1\$1score tetapi dengan pencocokan yang lebih lunak, menggunakan perbandingan teks yang dinormalisasi yang mengabaikan perbedaan kecil.
    + `bleu`: Mengukur presisi kecocokan n-gram antara teks yang dihasilkan dan referensi, yang biasa digunakan dalam evaluasi terjemahan.

    Untuk `llm_judge` dan`mm_llm_judge`, bawa benchmark dataset Anda sendiri, kembalikan metrik berikut:
    + `a_scores`: Jumlah kemenangan untuk `response_A` lintasan evaluasi maju dan mundur.
    + `a_scores_stderr`: Kesalahan standar `response_A_scores` lintas penilaian berpasangan.
    + `b_scores`: Mengukur Jumlah kemenangan untuk `response_B` lintasan evaluasi maju dan mundur.
    + `a_scores_stderr`: Kesalahan standar `response_B_scores` lintas penilaian berpasangan.
    + `ties`: Jumlah penilaian di mana `response_A` dan `response_B` dievaluasi sebagai sama.
    + `ties_stderr`: Kesalahan standar `ties` lintas penilaian berpasangan.
    + `inference_error`: Hitungan penilaian yang tidak dapat dievaluasi dengan benar.
    + `score`: Skor agregat berdasarkan kemenangan dari umpan maju dan mundur untuk. `response_B`
    + `score_stderr`: Skor agregat berdasarkan kemenangan dari umpan maju dan mundur untuk. `response_B`
    + `inference_error_stderr`: Kesalahan standar skor agregat di seluruh penilaian berpasangan.
    + `winrate`Probabilitas yang `response_B` akan lebih disukai daripada `response_A` dihitung menggunakan probabilitas Bradley-Terry.
    + `lower_rate`: Batas bawah (persentil 2.5) dari perkiraan tingkat kemenangan dari pengambilan sampel bootstrap.
    + `upper_rate`: Batas atas (persentil 97,5) dari perkiraan tingkat kemenangan dari pengambilan sampel bootstrap.

**Konfigurasi inferensi (opsional)**

```
inference:
  max_new_tokens: 2048
  top_k: -1
  top_p: 1.0
  temperature: 0
  top_logprobs: 10
  reasoning_effort: null  # options: low/high to enable reasoning or null to disable reasoning
```
+ `max_new_tokens`: Jumlah maksimum token yang akan dihasilkan. Harus berupa bilangan bulat. (Tidak tersedia untuk Hakim LLM)
+ `top_k`: Jumlah token probabilitas tertinggi untuk dipertimbangkan. Harus berupa bilangan bulat.
+ `top_p`: Ambang probabilitas kumulatif untuk pengambilan sampel token. Harus berupa float antara 1,0 hingga 0,0.
+ `temperature`: Keacakan dalam pemilihan token (lebih tinggi = lebih acak), pertahankan 0 untuk membuat hasilnya deterministik. Tipe float, nilai minimal adalah 0.
+ `top_logprobs`: Jumlah logprob teratas yang akan dikembalikan dalam respons inferensi. Nilai ini harus berupa bilangan bulat dari 0 hingga 20. Logprobs berisi token keluaran yang dipertimbangkan dan probabilitas log dari setiap token keluaran yang dikembalikan dalam konten pesan.
+ `reasoning_effort`: mengontrol perilaku penalaran untuk model yang mampu beralasan. Set `reasoning_effort` hanya ketika `model_type` menentukan model berkemampuan penalaran (saat ini). `amazon.nova-2-lite-v1:0:256k` Opsi yang tersedia adalah null (nilai default jika tidak disetel; menonaktifkan penalaran), rendah, atau tinggi.

### Format Keluaran Probabilitas Log
<a name="nova-model-evaluation-logprobs"></a>

Ketika `top_logprobs` dikonfigurasi dalam pengaturan inferensi Anda, output evaluasi mencakup probabilitas log tingkat token dalam file parket. Setiap posisi token berisi kamus token kandidat teratas dengan probabilitas log mereka dalam struktur berikut:

```
{
"Ġint": {"logprob_value": -17.8125, "decoded_value": " int"},
"Ġthe": {"logprob_value": -2.345, "decoded_value": " the"}
}
```

Setiap entri token berisi:
+ `logprob_value`: Nilai probabilitas log untuk token
+ `decoded_value`: Representasi string decoded yang dapat dibaca manusia dari token

Token tokenizer mentah digunakan sebagai kunci kamus untuk memastikan keunikan, sekaligus `decoded_value` memberikan interpretasi yang dapat dibaca.

### Contoh resep evaluasi
<a name="nova-model-evaluation-config-example"></a>

Amazon Nova menyediakan empat jenis resep evaluasi yang berbeda. Semua resep tersedia di [ GitHub repositori SageMaker HyperPod resep](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection).

**Topics**

#### Resep tolok ukur teks umum
<a name="nova-model-evaluation-config-example-text"></a>

Resep-resep ini memungkinkan Anda untuk mengevaluasi kemampuan dasar model Amazon Nova di seluruh rangkaian tolok ukur khusus teks yang komprehensif. 

Format resep:`xxx_general_text_benchmark_eval.yaml`.

#### Bawa resep benchmark dataset Anda sendiri
<a name="nova-model-evaluation-config-byo"></a>

Resep-resep ini memungkinkan Anda untuk membawa dataset Anda sendiri untuk benchmarking dan membandingkan output model untuk referensi jawaban menggunakan berbagai jenis metrik. 

Format resep:`xxx_ bring_your_own_dataset_eval.yaml`.

**Bawa persyaratan dataset Anda sendiri**

Format berkas: 
+ `gen_qa.jsonl`File tunggal yang berisi contoh evaluasi. Nama file harus tepat`gen_qa.jsonl`.
+ Anda harus mengunggah kumpulan data Anda ke lokasi S3 tempat pekerjaan pelatihan SageMaker AI dapat diakses.
+ File harus mengikuti format skema yang diperlukan untuk kumpulan data Tanya Jawab umum.

Persyaratan format skema - Setiap baris dalam `.jsonl` file harus berupa objek JSON dengan bidang berikut.
+ Bidang yang diperlukan. 

  `query`: String yang berisi pertanyaan atau instruksi yang membutuhkan jawaban.

  `response`: String yang berisi output model yang diharapkan.
+ Bidang opsional.

  `system`String yang berisi prompt sistem yang mengatur perilaku, peran, atau kepribadian model AI sebelum memproses kueri.

  `images`: Array berisi daftar objek dengan atribut data (string gambar yang dikodekan Base64).

  `metadata`: String yang berisi metadata yang terkait dengan entri untuk tujuan penandaan.

**Entri contoh**

```
{
"system":"You are an English major with top marks in class who likes to give minimal word responses: ",
   "query":"What is the symbol that ends the sentence as a question",
   "response":"?"
}{
"system":"You are a pattern analysis specialist who provides succinct answers: ",
   "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?",
   "response":"32"
}{
"system":"You have great attention to detail and follow instructions accurately: ",
   "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry",
   "response":"of dry"
}{
"system": "Image inference: ",
  "query": "What is the number in the image? Please just use one English word to answer.",
  "response": "two",
  "images": [
    {
      "data": "data:image/png;Base64,iVBORw0KGgoA ..."
    }
  ]
}
```

Untuk menggunakan kumpulan data kustom Anda, ubah resep evaluasi Anda dengan menambahkan bidang wajib berikut tanpa mengubah konfigurasi yang ada:

```
evaluation:
  task: gen_qa
  strategy: gen_qa
  metric: all
```

**Batasan**
+ Hanya satu `.jsonl` file yang diizinkan per evaluasi.
+ File harus benar-benar mengikuti skema yang ditentukan.

##### Bawa metrik Anda sendiri
<a name="nova-model-evaluation-byom"></a>

Anda dapat membawa metrik Anda sendiri untuk sepenuhnya menyesuaikan alur kerja evaluasi model Anda dengan kemampuan pra-pemrosesan, pasca-pemrosesan, dan metrik khusus. Preprocessing memungkinkan Anda untuk memproses data input sebelum mengirimnya ke server inferensi, dan postprocessing memungkinkan Anda untuk menyesuaikan perhitungan metrik dan mengembalikan metrik kustom berdasarkan kebutuhan Anda.

Ikuti langkah-langkah ini untuk membawa metrik Anda sendiri dengan SDK evaluasi khusus.

1. Jika Anda belum melakukannya, [buat AWS Lambda fungsi](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) di tempat Akun AWS pertama Anda.

1. Unduh `nova-custom-eval-layer.zip` file pra-bangun dari [GitHub repositori](https://github.com/aws/nova-custom-eval-sdk/releases). Anda dapat menggunakan SDK evaluasi kustom Nova open-source ini untuk memvalidasi muatan input dan output untuk fungsi kustom Anda dan menyediakan antarmuka terpadu untuk diintegrasikan dengan Nova membawa evaluasi metrik Anda sendiri selama pelatihan.

1. Unggah layer Lambda kustom menggunakan perintah berikut:

   ```
   aws lambda publish-layer-version \
       --layer-name nova-custom-eval-layer \
       --zip-file fileb://nova-custom-eval-layer.zip \
       --compatible-runtimes python3.12 python3.11 python3.10 python3.9
   ```

1. Tambahkan layer ini sebagai layer kustom ke fungsi Lambda Anda, bersama dengan AWS layer yang diperlukan: `AWSLambdaPowertoolsPythonV3-python312-arm64` (diperlukan untuk `pydantic` ketergantungan).

1. Perbarui kode Lambda Anda menggunakan contoh yang disediakan, modifikasi kode sesuai kebutuhan. Kode contoh ini membuat fungsi Lambda untuk evaluasi kustom Nova dengan langkah-langkah preprocessing dan postprocessing untuk evaluasi model.

   ```
   from nova_custom_evaluation_sdk.processors.decorators import preprocess, postprocess
   from nova_custom_evaluation_sdk.lambda_handler import build_lambda_handler
   
   @preprocess
   def preprocessor(event: dict, context) -> dict:
       data = event.get('data', {})
       return {
           "statusCode": 200,
           "body": {
               "system": data.get("system"),
               "prompt": data.get("prompt", ""),
               "gold": data.get("gold", "")
           }
       }
   
   @postprocess
   def postprocessor(event: dict, context) -> dict:
       # data is already validated and extracted from event
       data = event.get('data', [])
       inference_output = data.get('inference_output', '')
       gold = data.get('gold', '')
   
       metrics = []
       inverted_accuracy = 0 if inference_output.lower() == gold.lower() else 1.0
       metrics.append({
           "metric": "inverted_accuracy_custom",
           "value": accuracy
       })
   
       # Add more metrics here
   
       return {
           "statusCode": 200,
           "body": metrics
       }
   
   # Build Lambda handler
   lambda_handler = build_lambda_handler(
       preprocessor=preprocessor,
       postprocessor=postprocessor
   )
   ```

1. Berikan Lambda akses ke pekerjaan evaluasi. Pastikan peran eksekusi yang ditentukan untuk pekerjaan evaluasi mencakup kebijakan pemanggilan fungsi Lambda Anda. Berikut adalah contoh kebijakan.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "LambdaAccess",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction",
               "Condition": {
                   "StringLike": {
                       "aws:PrincipalArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-ARN"
                   }
               }
           },
           {
               "Sid": "DenyNonAWSEventSourcesForLambda",
               "Effect": "Deny",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction",
               "Condition": {
                   "Null": {
                       "lambda:EventSourceToken": false
                   }
               }
           }
       ]
   }
   ```

------

1. Tinjau skema payload Lambda. Tabel berikut mencantumkan permintaan Lambda dan skema respons. Anda dapat memvalidasi skema Anda menggunakan SDK evaluasi kustom Nova.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/nova/latest/userguide/nova-model-evaluation.html)

1. Ubah file resep. Inilah contohnya. 

   ```
   processor:
     lambda_arn: arn:aws:lambda:us-east-1:111122223333:function:name
     lambda_type: "custom_metrics"
     preprocessing:
       enabled: true
     postprocessing:
       enabled: true
     aggregation: average
   ```
   + `lambda-arn`: Nama Sumber Daya Amazon (ARN) untuk fungsi Lambda Anda yang menangani preprocessing dan postprocessing.
   + `lambda_type`: “custom\$1metrics” atau “rft”.
   + `preprocessing`: Apakah akan mengaktifkan operasi pra-pemrosesan khusus.
   + `postprocessing`: Apakah akan mengaktifkan operasi pasca-pemrosesan khusus.
   + `aggregation`: Fungsi agregasi bawaan (opsi yang valid: min, maks, rata-rata, jumlah).

**Batasan**
+ Bawa metrik Anda sendiri hanya berlaku untuk kumpulan data input teks.
+ Kumpulan data masukan multi-modal tidak didukung. 
+ Langkah preprocessing tidak memproses bidang metadata.

#### Nova LLM sebagai resep tolok ukur Hakim
<a name="nova-model-evaluation-config-llm-judge"></a>

Nova LLM Judge adalah fitur evaluasi model yang memungkinkan Anda membandingkan kualitas respons dari satu model dengan respons model dasar menggunakan kumpulan data khusus. [Ini menerima kumpulan data yang berisi petunjuk, respons dasar, dan respons penantang, kemudian menggunakan model Nova Judge untuk memberikan metrik tingkat kemenangan berdasarkan probabilitas Bradley-Terry melalui perbandingan berpasangan.](https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model) Format resep:`xxx_llm_judge_eval.yaml`.

**Persyaratan set data Nova LLM**

Format berkas: 
+ `llm_judge.jsonl`File tunggal yang berisi contoh evaluasi. Nama file harus tepat`llm_judge.jsonl`.
+ Anda harus mengunggah kumpulan data Anda ke lokasi S3 tempat pekerjaan pelatihan SageMaker AI dapat diakses.
+ File harus mengikuti format skema yang diperlukan untuk `llm_judge` kumpulan data.
+ Dataset input harus memastikan semua catatan berada di bawah panjang konteks 12 k.

Format skema - Setiap baris dalam `.jsonl` file harus objek JSON dengan bidang berikut.
+ Bidang yang diperlukan. 

  `prompt`: String yang berisi prompt untuk respons yang dihasilkan.

  `response_A`: String yang berisi respons dasar.

  `response_B`: String yang berisi respons alternatif dibandingkan dengan respons dasar.

Entri contoh

```
{
"prompt": "What is the most effective way to combat climate change?",
"response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.",
"response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less."
}
{
"prompt": "Explain how a computer's CPU works",
"response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.",
"response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations."
}
{
"prompt": "How does photosynthesis work?",
"response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.",
"response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts."
}
```

Untuk menggunakan kumpulan data kustom Anda, ubah resep evaluasi Anda dengan bidang wajib berikut, jangan ubah konten apa pun:

```
evaluation:
  task: llm_judge
  strategy: judge
  metric: all
```

**Batasan**
+ Hanya satu `.jsonl` file yang diizinkan per evaluasi.
+ File harus benar-benar mengikuti skema yang ditentukan.
+ Model Nova Judge sama di seluruh spesifikasi mikro/lite/pro.
+ Model juri khusus saat ini tidak didukung.

##### Nova LLM sebagai Hakim untuk resep benchmark multi-modal (gambar)
<a name="nova-model-evaluation-mm-llm-judge"></a>

Nova LLM Judge for multi-modal (image), kependekan dari Nova MM\$1LLM Judge, adalah fitur evaluasi model yang memungkinkan Anda membandingkan kualitas respons dari satu model dengan respons model dasar menggunakan kumpulan data khusus. [Ini menerima kumpulan data yang berisi petunjuk, respons dasar, dan respons penantang, dan gambar dalam bentuk string yang dikodekan Base64, kemudian menggunakan model Nova Judge untuk memberikan metrik tingkat kemenangan berdasarkan probabilitas Bradley-Terry melalui perbandingan berpasangan.](https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model) Format resep:`xxx_mm_llm_judge_eval.yaml`.

**Persyaratan set data Nova LLM**

Format berkas: 
+ `mm_llm_judge.jsonl`File tunggal yang berisi contoh evaluasi. Nama file harus persis`llm_judge.jsonl`.
+ Anda harus mengunggah kumpulan data Anda ke lokasi S3 tempat pekerjaan pelatihan SageMaker AI dapat mengaksesnya.
+ File harus mengikuti format skema yang diperlukan untuk `mm_llm_judge` kumpulan data.
+ Dataset input harus memastikan semua catatan berada di bawah panjang konteks 12 k, tidak termasuk atribut gambar.

Format skema - Setiap baris dalam `.jsonl` file harus objek JSON dengan bidang berikut.
+ Bidang yang diperlukan. 

  `prompt`: String yang berisi prompt untuk respons yang dihasilkan.

  `images`: Array yang berisi daftar objek dengan atribut data (nilainya adalah string gambar yang dikodekan Base64).

  `response_A`: String yang berisi respons dasar.

  `response_B`: String yang berisi respons alternatif dibandingkan dengan respons dasar.

Entri contoh

Untuk keterbacaan, contoh berikut mencakup baris dan lekukan baru, tetapi dalam kumpulan data yang sebenarnya, setiap catatan harus berada pada satu baris.

```
{
  "prompt": "What is in the image?",
  "images": [
    {
      "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..."
    }
  ],
  "response_A": "a dog.",
  "response_B": "a cat.",
}
{
  "prompt": "How many animals are in each of the images?",
  "images": [
    {
      "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..."
    },
    {
      "data": "data:image/jpeg;Base64,/DKEafe3gihn..."
    }
  ],
  "response_A": "The first image contains one cat and the second image contains one dog",
  "response_B": "The first image has one aminal and the second has one animal"
}
```

Untuk menggunakan kumpulan data kustom Anda, ubah resep evaluasi Anda dengan bidang wajib berikut, jangan ubah konten apa pun:

```
evaluation:
  task: mm_llm_judge
  strategy: judge
  metric: all
```

**Batasan**
+ Hanya satu `.jsonl` file yang diizinkan per evaluasi.
+ File harus benar-benar mengikuti skema yang ditentukan.
+ Model Nova MM Judge hanya mendukung referensi gambar.
+ Model Nova MM Judge sama di seluruh spesifikasi Amazon Nova Micro, Amazon Nova Lite, dan Amazon Nova Pro.
+ Model juri khusus saat ini tidak didukung.
+ URI gambar Amazon S3 tidak didukung.
+ Dataset input harus memastikan semua catatan berada di bawah panjang konteks 12 k, tidak termasuk atribut gambar.

## Menjalankan pekerjaan pelatihan evaluasi
<a name="nova-model-evaluation-notebook"></a>

Mulai pekerjaan pelatihan menggunakan contoh notebook berikut. Silakan lihat buku catatan di bawah ini sebagai contoh untuk menjalankan pekerjaan pelatihan evaluasi. Untuk informasi selengkapnya, lihat [Menggunakan estimator SageMaker AI untuk menjalankan pekerjaan pelatihan](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

### Tabel referensi
<a name="nova-model-evaluation-reference-table"></a>

Sebelum menjalankan buku catatan, lihat tabel referensi berikut untuk memilih URI gambar dan konfigurasi instance.

**Memilih URI gambar**


| Resep | URI citra | 
| --- | --- | 
|  URI gambar evaluasi  | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest | 

**Memilih jenis dan hitungan instans**


| Model | Jenis Tugas | Tipe instans | Jumlah instans yang disarankan | Jumlah instans yang diizinkan | 
| --- | --- | --- | --- | --- | 
| Amazon Nova Mikro | Evaluasi (SFT/DPO) |  g5.12xlarge  | 1 | 1 - 16 | 
| Amazon Nova Lite | Evaluasi (SFT/DPO) |  g5.12xlarge  | 1 | 1 - 16 | 
| Amazon Nova Pro | Evaluasi (SFT/DPO) |  p5.48xlarge  | 1 | 1 - 16 | 

### Notebook sampel
<a name="nova-model-evaluation-sample-notebook"></a>

Contoh notebook berikut menunjukkan bagaimana menjalankan pekerjaan pelatihan evaluasi.

```
# install python SDK

# Do not use sagemaker v3, as sagemaker v3 introduced breaking changes

!pip install sagemaker==2.254.1

import os
import sagemaker,boto3
from sagemaker.inputs import TrainingInput
from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

# Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local
# Assume the file name be `recipe.yaml`

# Populate parameters
# input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location
output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location
instance_type = "instance_type"  # ml.g5.16xlarge as example
instance_count = 1 # The number of instances for inference (set instance_count > 1 for multi-node inference to accelerate evaluation)
job_name = "your job name"
recipe_path = "recipe path" # ./recipe.yaml as example
image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest" # Do not change
output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption

# (Optional) To bring your own dataset and LLM judge for evaluation
# evalInput = TrainingInput(
# s3_data=input_s3_uri,
# distribution='FullyReplicated',
# s3_data_type='S3Prefix'
#)

estimator = PyTorch(
    output_path=output_s3_uri,
    base_job_name=job_name,
    role=role,
    instance_type=instance_type,
    instance_count=instance_count,
    training_recipe=recipe_path,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    output_kms_key=output_kms_key
)
estimator.fit()

# If input dataset exist, pass in inputs
# estimator.fit(inputs={"train": evalInput})
```

## Menilai dan menganalisis hasil evaluasi
<a name="nova-model-evaluation-assess"></a>

Setelah pekerjaan evaluasi Anda selesai dengan sukses, Anda dapat menilai dan menganalisis hasilnya menggunakan langkah-langkah berikut.

**Untuk menilai dan menganalisis hasil, ikuti langkah-langkah ini.**

1. Memahami struktur lokasi output. Hasil disimpan di lokasi keluaran Amazon S3 yang Anda tentukan sebagai file terkompresi:

   ```
   s3://your-bucket/output/benchmark-name/
   └── job_name/
       └── output/
           └── output.tar.gz
   ```

1. Unduh `output.tar.gz` file dari ember Anda. Ekstrak konten untuk mengungkapkan.

   ```
   run_name/
   ├── eval_results/
   |   └── results_[timestamp].json
   │   └── inference_output.jsonl (only present for gen_qa)
   |   └── details/
   |         └── model/
   |              └── <execution-date-time>/
   |                    └──details_<task_name>_#_<datetime>.parquet
   └── tensorboard_results/
       └── eval/
           └── events.out.tfevents.[timestamp]
   ```
   + `results_[timestamp].json`- Keluaran metrik file JSON
   + `details_<task_name>_#_<datetime>.parquet`- File keluaran inferensi (kecuali untuk`strong_reject`)
   + `events.out.tfevents.[timestamp]`- Berkas TensorBoard keluaran
   + `inference_output.jsonl`- File output inferensi dibersihkan (hanya untuk `gen_qa` tugas)

1. Lihat hasil di TensorBoard. Untuk memvisualisasikan metrik evaluasi Anda: 

   1. Unggah folder yang diekstrak ke bucket S3

   1. Arahkan ke SageMaker AI TensorBoard

   1. Pilih “folder S3" Anda

   1. Tambahkan jalur folder S3

   1. Tunggu sinkronisasi selesai

1. Menganalisis output inferensi. Semua tugas evaluasi, kecuali `llm_judge` dan`strong_reject`, akan memiliki bidang berikut untuk analisis dalam output inferensi.
   + `full_prompt`- Permintaan pengguna penuh dikirim ke model yang digunakan untuk tugas evaluasi.
   + `gold`- Bidang yang berisi jawaban yang benar seperti yang ditentukan oleh dataset.
   + `metrics`- Bidang yang berisi metrik yang dievaluasi pada inferensi individu. Nilai yang membutuhkan agregasi tidak akan memiliki nilai pada output inferensi individu.
   + `predictions`- Bidang yang berisi daftar output model untuk prompt yang diberikan.
   + `pred_logits`- Bidang yang berisi token keluaran yang dipertimbangkan dan probabilitas log dari setiap token keluaran yang dikembalikan dalam konten pesan.

   Dengan melihat bidang ini, Anda dapat menentukan penyebab perbedaan metrik dan memahami perilaku model yang disesuaikan.

   Untuk`llm_judge`, file keluaran inferensi berisi bidang berikut di bawah bidang metrik per pasangan evaluasi.
   + `forward_output`- Preferensi mentah hakim saat mengevaluasi secara berurutan (Response\$1a, response\$1b).
   + `backward_output`- Preferensi mentah hakim saat mengevaluasi dalam urutan terbalik (Response\$1b, response\$1a).
   + `Pairwise metrics`- Metrik yang dihitung per pasang evaluasi maju dan mundur termasuk`a_scores`,, `b_scores``ties`, `inference-score` dan. `score`
**catatan**  
Metrik agregat seperti hanya `winrate` tersedia di file hasil ringkasan, bukan per penilaian individu.

   Untuk`gen_qa`, `inference_output.jsonl` file berisi bidang berikut untuk setiap objek JSON:
   + prompt - Prompt akhir yang dikirimkan ke model
   + inferensi - Output inferensi mentah dari model
   + gold - Respon target dari dataset input
   + metadata - String metadata dari dataset input jika disediakan

## Evaluasi praktik terbaik dan pemecahan masalah
<a name="nova-model-evaluation-best-practices"></a>

### Praktik terbaik
<a name="nova-model-evaluation-best-practice"></a>

Berikut ini mencantumkan beberapa praktik terbaik untuk proses evaluasi.
+ Jaga agar jalur keluaran Anda diatur berdasarkan model dan tipe benchmark.
+ Pertahankan konvensi penamaan yang konsisten untuk memudahkan pelacakan.
+ Simpan hasil yang diekstraksi di lokasi yang aman.
+ Pantau status TensorBoard sinkronisasi untuk pemuatan data yang berhasil.

### Pemecahan masalah
<a name="nova-model-evaluation-troubleshoot"></a>

Anda dapat menggunakan grup CloudWatch log `/aws/sagemaker/TrainingJobs` untuk melatih log kesalahan pekerjaan.

#### Kegagalan inti mesin
<a name="nova-model-evaluation-troubleshoot-cuda"></a>

**Masalah:** 

Jika Anda melihat: 

```
RuntimeError: Engine core initialization failed.
```

**Penyebab:** 

Meskipun ini adalah kesalahan umum yang dapat memiliki banyak penyebab, biasanya terjadi ketika ada ketidakcocokan antara pos pemeriksaan model yang Anda coba muat dan jenis model yang ditentukan. Misalnya Anda ingin mengevaluasi pos pemeriksaan model Nova 2.0 lite yang disetel dengan baik tetapi tipe model yang Anda berikan adalah tipe model 1.0. misalnya `amazon.nova-micro-v1:0:128k`

Pemetaan yang benar harus 

```
model_type: amazon.nova-2-lite-v1:0:256k
model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location
```

**Pencegahan**: 

Periksa kembali apakah `model_name_or_path` dipetakan ke kanan `model_type` sebelum mengirimkan pekerjaan evaluasi.

## Subtugas yang tersedia
<a name="nova-model-evaluation-subtasks"></a>

Berikut daftar subtugas yang tersedia untuk evaluasi model di beberapa domain termasuk MMLU (Massive Multitask Language Understanding), BBH (Big Bench Hard), MATH, dan MMMU (Massive Multitask Multimodal Understanding). Subtugas ini memungkinkan Anda menilai kinerja model Anda pada kemampuan dan bidang pengetahuan tertentu.

**MMLU**

```
MMLU_SUBTASKS = [
    "abstract_algebra",
    "anatomy",
    "astronomy",
    "business_ethics",
    "clinical_knowledge",
    "college_biology",
    "college_chemistry",
    "college_computer_science",
    "college_mathematics",
    "college_medicine",
    "college_physics",
    "computer_security",
    "conceptual_physics",
    "econometrics",
    "electrical_engineering",
    "elementary_mathematics",
    "formal_logic",
    "global_facts",
    "high_school_biology",
    "high_school_chemistry",
    "high_school_computer_science",
    "high_school_european_history",
    "high_school_geography",
    "high_school_government_and_politics",
    "high_school_macroeconomics",
    "high_school_mathematics",
    "high_school_microeconomics",
    "high_school_physics",
    "high_school_psychology",
    "high_school_statistics",
    "high_school_us_history",
    "high_school_world_history",
    "human_aging",
    "human_sexuality",
    "international_law",
    "jurisprudence",
    "logical_fallacies",
    "machine_learning",
    "management",
    "marketing",
    "medical_genetics",
    "miscellaneous",
    "moral_disputes",
    "moral_scenarios",
    "nutrition",
    "philosophy",
    "prehistory",
    "professional_accounting",
    "professional_law",
    "professional_medicine",
    "professional_psychology",
    "public_relations",
    "security_studies",
    "sociology",
    "us_foreign_policy",
    "virology",
    "world_religions"
]
```

**BBH**

```
BBH_SUBTASKS = [
    "boolean_expressions",
    "causal_judgement",
    "date_understanding",
    "disambiguation_qa",
    "dyck_languages",
    "formal_fallacies",
    "geometric_shapes",
    "hyperbaton",
    "logical_deduction_five_objects",
    "logical_deduction_seven_objects",
    "logical_deduction_three_objects",
    "movie_recommendation",
    "multistep_arithmetic_two",
    "navigate",
    "object_counting",
    "penguins_in_a_table",
    "reasoning_about_colored_objects",
    "ruin_names",
    "salient_translation_error_detection",
    "snarks",
    "sports_understanding",
    "temporal_sequences",
    "tracking_shuffled_objects_five_objects",
    "tracking_shuffled_objects_seven_objects",
    "tracking_shuffled_objects_three_objects",
    "web_of_lies",
    "word_sorting"
]
```

**Matematika**

```
MATH_SUBTASKS = [
    "algebra",
    "counting_and_probability",
    "geometry",
    "intermediate_algebra",
    "number_theory",
    "prealgebra",
    "precalculus",
```

**MMMU**

```
            MATH_SUBTASKS = [
    "Accounting",
    "Agriculture",
    "Architecture_and_Engineering",
    "Art",
    "Art_Theory",
    "Basic_Medical_Science",
    "Biology",
    "Chemistry",
    "Clinical_Medicine",
    "Computer_Science",
    "Design",
    "Diagnostics_and_Laboratory_Medicine",
    "Economics",
    "Electronics",
    "Energy_and_Power",
    "Finance",
    "Geography",
    "History",
    "Literature",
    "Manage",
    "Marketing",
    "Materials",
    "Math",
    "Mechanical_Engineering",
    "Music",
    "Pharmacy",
    "Physics",
    "Psychology",
    "Public_Health",
    "Sociology",
```

Evaluasi model Nova Anda yang disesuaikan menggunakan berbagai metode dan metrik evaluasi.

**Topics**
+ [Prasyarat](#nova-model-evaluation-prerequisites)
+ [Tugas benchmark yang tersedia](#nova-model-evaluation-benchmark)
+ [Evaluasi konfigurasi spesifik](#nova-model-evaluation-config)
+ [Menjalankan pekerjaan pelatihan evaluasi](#nova-model-evaluation-notebook)
+ [Menilai dan menganalisis hasil evaluasi](#nova-model-evaluation-assess)
+ [Evaluasi praktik terbaik dan pemecahan masalah](#nova-model-evaluation-best-practices)
+ [Subtugas yang tersedia](#nova-model-evaluation-subtasks)
+ [Pelatihan berulang](smtj-iterative-training.md)