View a markdown version of this page

Valuta con punteggi preimpostati e personalizzati - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Valuta con punteggi preimpostati e personalizzati

Quando si utilizza il tipo di valutazione Custom Scorer, SageMaker Evaluation supporta due scorer integrati (denominati anche «funzioni di ricompensa») Prime Math e Prime Code presi dalla libreria di formazione volcengine/verl RL, oppure uno scorer personalizzato implementato come funzione Lambda.

Built-in Valutatori

Matematica Prime

Prime Math Scorer si aspetta un set di dati JSONL personalizzato di voci contenente una domanda di matematica e la prompt/query risposta corretta come verità fondamentale. Il set di dati può essere uno qualsiasi dei formati supportati menzionati in. Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)

Esempio di inserimento del set di dati (esteso per maggiore chiarezza):

{ "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 }

Codice Prime

Il primo code scorer si aspetta un set di dati JSONL personalizzato di voci contenente un problema di codifica e casi di test specificati nel campo. metadata Struttura i test case con il nome della funzione previsto per ogni voce, gli input di esempio e gli output previsti.

Esempio di inserimento del set di dati (esteso per maggiore chiarezza):

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

Punteggi personalizzati (Bring Your Own Metrics)

Personalizza completamente il flusso di lavoro di valutazione del modello con una logica di post-elaborazione personalizzata che ti consente di calcolare metriche personalizzate in base alle tue esigenze. È necessario implementare lo scorer personalizzato come funzione AWS Lambda che accetta le risposte del modello e restituisce i punteggi di ricompensa.

Esempio di Lambda Input Payload

Il payload ricevuto dalla funzione AWS Lambda Custom Scorer rispecchia il formato del set di dati di valutazione. SageMaker L'intelligenza artificiale rileva il formato del set di dati e invia ogni campione alla tua Lambda nella forma corrispondente, con l'aggiunta della risposta generata dal modello. La tua Lambda deve leggere la risposta dai campi che corrispondono al formato del set di dati che stai utilizzando.

Il contenitore richiama la tua Lambda una volta per campione, passando un elenco che contiene un singolo oggetto campione. La tua Lambda deve iterare l'elenco, ma attualmente contiene esattamente un elemento per chiamata. Le sezioni seguenti mostrano il payload ricevuto da Lambda per ogni formato di set di dati supportato.

Formato OpenAI Chat

[ { "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" } } ]

Note sul payload OpenAI:

  • La risposta del modello è l'ultimo assistant messaggio. Il contenitore aggiunge la risposta del modello come nuovo turno di assistente.

  • Se il set di dati termina già con un messaggio assistente (il turno di verità fondamentale), il payload contiene due messaggi di assistenza finali: il turno di verità fondamentale originale seguito dalla risposta del modello.

  • La verità fondamentale viene fornita anche al livello più alto (la copia normalizzata in fase di esecuzione). reference_answer.text

  • idè un identificatore generato dal contenitore (presente per questo formato).

formato 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" } } } ]

Note sul payload verl:

  • La risposta del modello è inserita response (e viene aggiunta anche come ultima risposta)assistant. prompt

  • La verità fondamentale viene sempre emessa a. extra_info.reference_answer.text È {"text": ""} quando il set di dati non fornisce alcuna verità fondamentale. Leggi la verità fondamentale da questo campo.

  • data_sourceil valore predefinito è "customized" quando la voce del set di dati non lo imposta.

  • reward_modele altri campi specifici di verl (id,, abilityattributes,difficulty) vengono trasmessi solo se presenti nella voce del set di dati. Non vengono aggiunti per impostazione predefinita.

Formato Hugging Face Prompt-Completion

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

Note sul payload Hugging Face: Prompt-Completion

  • La risposta del modello è presente completion (il contenitore sovrascrive il completamento originale del set di dati con la risposta del modello).

  • La verità fondamentale è reference_answer.text (il completamento originale del set di dati).

Formato Hugging Face Preference

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

Note sul payload Hugging Face Preference:

  • La risposta del modello è arrivata. completion

  • La coppia originale chosen e quella rejected preferita vengono trasmesse.

  • La verità fondamentale è reference_answer.text (risolta dachosen).

SageMaker Formato di valutazione 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" } } ]

Note sul payload di valutazione dell' SageMaker IA:

  • La risposta del modello è arrivata. model_response Tutti i campi del set di dati originale vengono trasmessi invariati (query,response, systemcategory, emetadata).

  • La verità fondamentale appare in due campi di primo livello con lo stesso valore: l'originale response e. reference_answer.text Leggi entrambi.

Nota

Questi sono i payload ricevuti dalla tua Lambda. SageMaker L'intelligenza artificiale prende ogni voce dal tuo set di dati di valutazione, aggiunge la risposta generata dal modello e la invia al tuo valutatore. Scopri come Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD) creare ogni formato di set di dati. Scrivi la tua Lambda per analizzare i campi del formato utilizzato dal tuo set di dati.

Esempio di payload di output Lambda

La funzione AWS Lambda deve restituire un oggetto risultato per campione di input. Il contenitore di valutazione SageMaker AI accetta una delle due buste di risposta:

Opzione A — Elenco non elaborato (consigliato)

[ { "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" } ] } ]

Opzione B — API Gateway-style wrapper

In questo formato, body è la JSON-encoded stringa dell'elenco dei risultati. Questo è il formato emesso dal modello «Create Reward Function» di Studio.

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

Le seguenti note si applicano a entrambe le buste di risposta:

  • Nell'opzione B, body deve essere una stringa JSON (non un oggetto JSON annidato) e deve esserlo. statusCode 200 Uno stato diverso da 200 fa sì che il contenitore di valutazione consideri il campione come un errore: viene conteggiato byoc_failure_count e le relative metriche personalizzate vengono eliminate, ma il processo di valutazione complessivo viene comunque completato.

  • metrics_listè facoltativo; se presente, ogni voce deve includere namevalue, e type (o). "Reward" "Metric"

  • Ogni risultato id deve corrispondere a quello del campione di inputid.

Definizione Lambda personalizzata

Trova un esempio di scorer personalizzato completamente implementato con input di esempio e output previsto su: #nova -reward-llm-judge-example https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html

Utilizzate il seguente schema come punto di partenza per la vostra funzione.

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" } ] } """

Campi di input e output

Campi di input

Campo Description Note aggiuntive
id Identificatore univoco per il campione Riprodotto nell'output. Stringa. Presente per i formati OpenAI, Hugging Face e SageMaker AI Evaluation; per verl appare solo se impostato nella voce del set di dati.
reference_answer.text Verità fondamentale normalizzata per il campione Presente in tutti i formati (di primo livello per la maggior parte; under extra_info per verl). Il valore è "" quando il set di dati non fornisce alcuna verità fondamentale. Leggi la verità fondamentale da questo campo.
messages Cronologia chat ordinata (solo OpenAI-format set di dati) Matrice di oggetti messaggio. La risposta del modello è l'ultimo assistant messaggio.
messaggi [] .role Relatore del messaggio Valori comuni: «utente», «assistente», «sistema»
messaggi [] .content Contenuto testuale del messaggio Stringa normale
prompt Richiesta di input (formati Hugging Face: string; verl: chat array) Per verl, la risposta del modello viene aggiunta anche come turno finale. assistant
completion Risposta del modello (formati Hugging Face Prompt-Completion e Preference) Il contenitore sovrascrive il completamento originale del set di dati con la risposta del modello.
scelto o rifiutato Risposte preferite e rifiutate (formato Hugging Face Preference) Passato dal set di dati. La verità fondamentale si risolve da. chosen
risposta Risposta del modello (verl) /risposta fondamentale (valutazione AI) SageMaker Nella valutazione dell' SageMaker IA, ciò vale per la verità fondamentale originale (lo stesso valore di). reference_answer.text
model_response Risposta generata dal modello (formato di valutazione SageMaker AI) Stringa
data_source, reward_model, extra_info campi specifici di verl data_sourceil valore predefinito è «personalizzato». reward_model e altri campi verl vengono passati solo se presenti nella voce del set di dati.
metadati Free-form informazioni per agevolare la classificazione Oggetto; campi opzionali trasmessi dal set di dati

Campi di output

Campi di output
Campo Description Note aggiuntive
id Stesso identificatore del campione di input Deve corrispondere all'input
aggregate_reward_score Punteggio complessivo del campione Float (ad esempio, 0,0—1,0 o intervallo definito dall'attività)
metrics_list Punteggi dei componenti che compongono l'aggregato Matrice di oggetti metrici

Autorizzazioni richieste

Assicurati che il ruolo di SageMaker esecuzione che usi per eseguire la valutazione disponga delle autorizzazioni AWS Lambda.

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

Assicurati che il ruolo di esecuzione della tua AWS Lambda Function disponga delle autorizzazioni di esecuzione Lambda di base, oltre alle autorizzazioni aggiuntive di cui potresti aver bisogno per qualsiasi chiamata downstream. AWS

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