View a markdown version of this page

Evaluasi dengan Preset dan Custom Scorer - Amazon SageMaker AI

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

Evaluasi dengan Preset dan Custom Scorer

Saat menggunakan jenis evaluasi Custom Scorer, SageMaker Evaluasi mendukung dua pencetak skor bawaan (juga disebut sebagai “fungsi hadiah”) Prime Math dan Prime Code yang diambil dari pustaka pelatihan volcengine/verl RL, atau pencetak skor khusus Anda sendiri yang diimplementasikan sebagai Fungsi Lambda.

Built-in Pencetak gol

Matematika Utama

Pencetak skor matematika utama mengharapkan kumpulan data JSONL khusus dari entri yang berisi pertanyaan matematika sebagai prompt/query dan jawaban yang benar sebagai kebenaran dasar. Dataset dapat berupa salah satu format yang didukung yang disebutkan diFormat Dataset yang Didukung untuk Bring-Your-Own-Dataset Tugas (BYOD).

Contoh entri dataset (diperluas untuk kejelasan):

{ "system":"You are a math expert: ", "query":"How many vertical asymptotes does the graph of $y=\\frac{2}{x^2+x-6}$ have?", "response":"2" # Ground truth aka correct answer }

Kode Utama

Pencetak kode utama mengharapkan kumpulan data JSONL khusus dari entri yang berisi masalah pengkodean dan kasus uji yang ditentukan di metadata bidang. Struktur kasus uji dengan nama fungsi yang diharapkan untuk setiap entri, input sampel, dan output yang diharapkan.

Contoh entri dataset (diperluas untuk kejelasan):

{ "system":"\\nWhen tackling complex reasoning tasks, you have access to the following actions. Use them as needed to progress through your thought process.\\n\\n[ASSESS]\\n\\n[ADVANCE]\\n\\n[VERIFY]\\n\\n[SIMPLIFY]\\n\\n[SYNTHESIZE]\\n\\n[PIVOT]\\n\\n[OUTPUT]\\n\\nYou should strictly follow the format below:\\n\\n[ACTION NAME]\\n\\n# Your action step 1\\n\\n# Your action step 2\\n\\n# Your action step 3\\n\\n...\\n\\nNext action: [NEXT ACTION NAME]\\n\\n", "query":"A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are 1, 2, 6, 24, 120,\\nGiven a number N, the task is to return the list/vector of the factorial numbers smaller than or equal to N.\\nExample 1:\\nInput: N = 3\\nOutput: 1 2\\nExplanation: The first factorial number is \\n1 which is less than equal to N. The second \\nnumber is 2 which is less than equal to N,\\nbut the third factorial number is 6 which \\nis greater than N. So we print only 1 and 2.\\nExample 2:\\nInput: N = 6\\nOutput: 1 2 6\\nExplanation: The first three factorial \\nnumbers are less than equal to N but \\nthe fourth factorial number 24 is \\ngreater than N. So we print only first \\nthree factorial numbers.\\nYour Task: \\nYou don't need to read input or print anything. Your task is to complete the function factorialNumbers() which takes an integer N as an input parameter and return the list/vector of the factorial numbers smaller than or equal to N.\\nExpected Time Complexity: O(K), Where K is the number of factorial numbers.\\nExpected Auxiliary Space: O(1)\\nConstraints:\\n1<=N<=10^{18}\\n\\nWrite Python code to solve the problem. Present the code in \\n```python\\nYour code\\n```\\nat the end.", "response": "", # Dummy string for ground truth. Provide a value if you want NLP metrics like ROUGE, BLEU, and F1. ### Define test cases in metadata field "metadata": { "fn_name": "factorialNumbers", "inputs": ["5"], "outputs": ["[1, 2]"] } }

Pencetak Skor Kustom (Bawa Metrik Anda Sendiri)

Sepenuhnya menyesuaikan alur kerja evaluasi model Anda dengan logika pasca-pemrosesan khusus yang memungkinkan Anda menghitung metrik khusus yang disesuaikan dengan kebutuhan Anda. Anda harus menerapkan pencetak skor khusus Anda sebagai fungsi AWS Lambda yang menerima respons model dan mengembalikan skor hadiah.

Contoh Muatan Masukan Lambda

Muatan yang diterima fungsi AWS Lambda pencetak skor kustom Anda mencerminkan format kumpulan data evaluasi Anda. SageMaker AI mendeteksi format dataset Anda dan mengirimkan setiap sampel ke Lambda Anda dalam bentuk yang sesuai, dengan jawaban yang dihasilkan model ditambahkan. Lambda Anda harus membaca respons dari bidang yang cocok dengan format dataset yang Anda gunakan.

Wadah memanggil Lambda Anda sekali per sampel, melewati daftar yang berisi objek sampel tunggal. Lambda Anda harus mengulangi daftar, tetapi saat ini berisi tepat satu item per pemanggilan. Bagian berikut menunjukkan payload yang diterima Lambda Anda untuk setiap format dataset yang didukung.

Format Obrolan OpenAI

[ { "id": "123", "messages": [ { "role": "system", "content": "You are helpful." }, { "role": "user", "content": "What is the capital of France?" }, { "role": "assistant", "content": "Paris" }, { "role": "assistant", "content": "The capital of France is Paris." } ], "reference_answer": { "text": "Paris" } } ]

Catatan tentang payload OpenAI:

  • Jawaban model adalah assistant pesan terakhir. Wadah menambahkan respons model sebagai giliran asisten baru.

  • Jika dataset Anda sudah berakhir dengan pesan asisten (giliran ground-truth), payload berisi dua pesan asisten terakhir—giliran dasar kebenaran asli diikuti oleh respons model.

  • Kebenaran dasar juga disediakan di tingkat atas reference_answer.text (salinan yang dinormalisasi runtime).

  • idadalah pengidentifikasi yang dihasilkan wadah (hadir untuk format ini).

format verl

[ { "data_source": "openai/gsm8k", "prompt": [ { "role": "user", "content": "What is the capital of France?" }, { "role": "assistant", "content": "The capital of France is Paris." } ], "response": "The capital of France is Paris.", "reward_model": { "style": "rule", "ground_truth": "Paris" }, "extra_info": { "reference_answer": { "text": "Paris" }, "processor_config": { "aggregation": "mean" } } } ]

Catatan tentang payload verl:

  • Jawaban model ada di response (dan juga ditambahkan sebagai assistant giliran terakhirprompt).

  • Kebenaran dasar selalu dipancarkanextra_info.reference_answer.text. Itu adalah {"text": ""} ketika kumpulan data tidak memberikan kebenaran dasar. Baca kebenaran dasar dari bidang ini.

  • data_sourcedefault "customized" saat entri dataset tidak mengaturnya.

  • reward_modeldan bidang spesifik vert lainnya (id,, abilityattributes,difficulty) dilewatkan hanya jika ada dalam entri dataset. Mereka tidak ditambahkan secara default.

Format Wajah Berpelukan Prompt-Completion

[ { "id": "123", "prompt": "What is the capital of France?", "completion": "The capital of France is Paris.", "reference_answer": { "text": "Paris" } } ]

Catatan tentang muatan Hugging Face Prompt-Completion :

  • Jawaban model ada di completion (wadah mengganti penyelesaian asli kumpulan data dengan respons model).

  • Kebenaran dasar ada di reference_answer.text (penyelesaian asli dataset).

Format Preferensi Wajah Memeluk

[ { "id": "123", "prompt": "What is the capital of France?", "completion": "The capital of France is Paris.", "chosen": "Paris", "rejected": "London", "reference_answer": { "text": "Paris" } } ]

Catatan tentang payload Hugging Face Preference:

  • Jawaban model ada dicompletion.

  • Pasangan asli chosen dan rejected preferensi dilewatkan.

  • Kebenaran dasar ada reference_answer.text (diselesaikan darichosen).

SageMaker Format Evaluasi AI

[ { "id": "123", "model_response": "The capital of France is Paris.", "query": "What is the capital of France?", "response": "Paris", "system": "You are a helpful assistant.", "reference_answer": { "text": "Paris" } } ]

Catatan tentang muatan Evaluasi SageMaker AI:

  • Jawaban model ada dimodel_response. Semua bidang dataset asli dilewatkan melalui (query,,, response systemcategory, danmetadata) yang tidak berubah.

  • Kebenaran dasar muncul di dua bidang tingkat atas dengan nilai yang sama: asliresponse, danreference_answer.text. Baca juga.

catatan

Ini adalah muatan yang diterima Lambda Anda. SageMaker AI mengambil setiap entri dari kumpulan data evaluasi Anda, menambahkan respons yang dihasilkan model, dan mengirimkannya ke pencetak gol Anda. Lihat Format Dataset yang Didukung untuk Bring-Your-Own-Dataset Tugas (BYOD) cara menulis setiap format kumpulan data. Tulis Lambda Anda untuk mengurai bidang format yang digunakan dataset Anda.

Contoh Muatan Keluaran Lambda

Fungsi AWS Lambda Anda harus mengembalikan satu objek hasil per sampel masukan. Wad SageMaker ah eval AI menerima salah satu dari dua amplop respons:

Opsi A - Daftar mentah (disarankan)

[ { "id": "123", "aggregate_reward_score": 0.85, "metrics_list": [ { "name": "factual_accuracy", "value": 0.9, "type": "Reward" }, { "name": "format_compliance", "value": 0.8, "type": "Metric" } ] } ]

Opsi B - Gateway-style pembungkus API

Dalam format ini, body adalah JSON-encoded string dari daftar hasil. Ini adalah format yang dipancarkan oleh template Studio “Buat Fungsi Hadiah”.

{ "statusCode": 200, "body": "[{\"id\": \"123\", \"aggregate_reward_score\": 0.85, \"metrics_list\": [...]}]" }

Catatan berikut berlaku untuk kedua amplop respons:

  • Dalam Opsi B, body harus berupa string JSON (bukan objek JSON bersarang), dan statusCode harus 200 demikian. Status non-200 menyebabkan wadah eval memperlakukan sampel itu sebagai kegagalan: sampel dihitung byoc_failure_count dan metrik kustomnya dihapus, tetapi pekerjaan evaluasi keseluruhan masih selesai.

  • metrics_listbersifat opsional; bila ada, setiap entri harus menyer name takanvalue,, dan type ("Reward"atau"Metric").

  • Setiap hasil id harus sesuai dengan sampel inputid.

Definisi Lambda Kustom

Temukan contoh pencetak skor khusus yang diimplementasikan sepenuhnya dengan input sampel dan output yang diharapkan di: https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html #nova -reward-llm-judge-example

Gunakan kerangka berikut sebagai titik awal untuk fungsi Anda sendiri.

def lambda_handler(event, context): return lambda_grader(event) def lambda_grader(samples: list[dict]) -> list[dict]: """ Args: Samples: List of dictionaries; each sample's shape mirrors your evaluation dataset format (OpenAI, verl, Hugging Face Prompt-Completion, Hugging Face Preference, or SageMaker Evaluation). See the Sample Lambda Input Payload section above for the per-format shape. # Example shown is the OpenAI format; other dataset formats use different fields. Example input: { "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Company, I do not have a dedicated security team..." } ], # reference_answer contents vary by dataset; reference_answer.text holds the normalized ground truth "reference_answer": { "text": "No, as an AI developed by Company, I do not have a dedicated security team." } } Returns: List of dictionaries with reward scores: { "id": str, # Same id as input sample "aggregate_reward_score": float, # Overall score for the sample "metrics_list": [ # OPTIONAL: Component scores { "name": str, # Name of the component score "value": float, # Value of the component score "type": str # "Reward" or "Metric" } ] } """

Bidang input dan output

Bidang masukan

Bidang Deskripsi Catatan tambahan
id Pengidentifikasi unik untuk sampel Gema kembali dalam output. String. Hadir untuk format OpenAI, Hugging Face, dan SageMaker AI Evaluation; untuk verl hanya muncul jika disetel dalam entri dataset.
reference_answer.text Kebenaran dasar yang dinormalisasi untuk sampel Hadir dalam setiap format (tingkat atas untuk sebagian besar; di bawah extra_info untuk verl). Nilai adalah "" ketika kumpulan data tidak memberikan kebenaran dasar. Baca kebenaran dasar dari bidang ini.
pesan Riwayat obrolan yang dipesan (hanya OpenAI-format kumpulan data) Array objek pesan. Respons model adalah assistant pesan terakhir.
pesan [] .role Pembicara pesan Nilai umum: “pengguna”, “asisten”, “sistem”
pesan [] .content Isi teks pesan Tali polos
cepat Prompt masukan (Format Hugging Face: string; verl: array obrolan) Untuk verl, respons model juga ditambahkan sebagai giliran terakhirassistant.
completion Respons model (format Memeluk Wajah Prompt-Completion dan Preferensi) Wadah mengganti penyelesaian asli dataset dengan respons model.
dipilih atau ditolak Tanggapan yang disukai dan ditolak (format Preferensi Wajah Memeluk) Dilewati dari dataset. Kebenaran dasar diselesaikan darichosen.
response Respons model (verl) /respon kebenaran dasar (SageMaker Evaluasi AI) Dalam Evaluasi SageMaker AI ini memegang kebenaran dasar asli (nilai yang sama denganreference_answer.text).
model_respons Respons yang dihasilkan model (format Evaluasi SageMaker AI) String
sumber data, model_hadiah, ekstra_info bidang khusus verl data_sourcedefaultnya adalah “disesuaikan.” reward_model dan bidang verl lainnya dilewatkan hanya jika ada di entri dataset.
Metadata Free-form informasi untuk membantu penilaian Objek; bidang opsional yang dilewatkan dari dataset Anda

Bidang keluaran

Bidang Output
Bidang Deskripsi Catatan tambahan
id Pengidentifikasi yang sama dengan sampel masukan Harus cocok dengan input
agregate_reward_score Skor keseluruhan untuk sampel Float (misalnya, 0,0-1,0 atau rentang yang ditentukan tugas)
metrik_list Skor komponen yang membentuk agregat Array objek metrik

Izin yang Diperlukan

Pastikan peran SageMaker eksekusi yang Anda gunakan untuk menjalankan evaluasi memiliki izin AWS Lambda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }

Pastikan peran eksekusi AWS Lambda Function Anda memiliki izin eksekusi Lambda dasar, serta izin tambahan yang mungkin Anda perlukan untuk panggilan hilir AWS apa pun.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }