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, o il proprio scorer personalizzato implementato come funzione Lambda.

Scorer integrati

Prime Math

Prime Math Scorer si aspetta un set di dati JSONL personalizzato contenente una domanda di matematica e la prompt/query risposta corretta come verità fondamentale. Il set di dati può essere uno 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 (ampliato 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 principale

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

Esempio di inserimento del set di dati (ampliato 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]"] } }

Scorer 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 su misura per le tue esigenze. È necessario implementare lo scorer personalizzato come una funzione AWS Lambda che accetta le risposte del modello e restituisce punteggi di ricompensa.

Esempio di payload di ingresso Lambda

La tua AWS Lambda personalizzata prevede input nel formato OpenAI. Esempio:

{ "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Amazon, I do not have a dedicated security team..." } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } }

Esempio di payload di uscita Lambda

Il contenitore di SageMaker valutazione si aspetta che le risposte Lambda seguano questo formato:

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

Definizione Lambda personalizzata

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

Utilizzate lo scheletro seguente 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 in OpenAI format 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..." } ], # This section is the same as your training dataset "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional 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 Ripreso in uscita. Formato delle stringhe
messages Cronologia chat ordinata in formato OpenAI Matrice di oggetti di messaggio
messages [] .role Relatore del messaggio Valori comuni: «utente», «assistente», «sistema»
messaggi [] .content Contenuto testuale del messaggio Stringa normale
metadati Informazioni in formato libero per facilitare la valutazione Oggetto; campi opzionali trasmessi dai dati di addestramento

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 funzione AWS Lambda disponga delle autorizzazioni di esecuzione Lambda di base, oltre alle autorizzazioni aggiuntive che potresti richiedere per qualsiasi chiamata downstream. AWS

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