As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Avalie com pontuadores predefinidos e personalizados
Ao usar o tipo de avaliação Custom Scorer, o SageMaker Evaluation suporta dois pontuadores integrados (também chamados de “funções de recompensa”), Prime Math e Prime Code, retirados da biblioteca de treinamento volcengine/verl
Built-in Marcadores
Matemática primária
O principal marcador de matemática espera um conjunto de dados JSONL personalizado de entradas contendo uma pergunta matemática como a prompt/query e a resposta correta como verdade básica. O conjunto de dados pode ser qualquer um dos formatos compatíveis mencionados emFormatos de conjunto de dados suportados para Bring-Your-Own-Dataset tarefas (BYOD).
Exemplo de entrada do conjunto de dados (expandido para maior clareza):
{ "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 }
Código Prime
O marcador de código principal espera um conjunto de dados JSONL personalizado de entradas contendo um problema de codificação e casos de teste especificados no campo. metadata Estruture os casos de teste com o nome da função esperada para cada entrada, amostras de entrada e saídas esperadas.
Exemplo de entrada do conjunto de dados (expandido para maior clareza):
{ "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]"] } }
Pontuadores personalizados (traga suas próprias métricas)
Personalize totalmente seu fluxo de trabalho de avaliação de modelo com uma lógica de pós-processamento personalizada, que permite calcular métricas personalizadas de acordo com suas necessidades. Você deve implementar seu marcador personalizado como uma função do AWS Lambda que aceita respostas do modelo e retorna pontuações de recompensa.
Exemplo de carga útil de entrada Lambda
A carga útil que sua função AWS Lambda de pontuação personalizada recebe reflete o formato do seu conjunto de dados de avaliação. SageMaker A IA detecta o formato do seu conjunto de dados e envia cada amostra para seu Lambda na forma correspondente, com a resposta gerada pelo modelo anexada. Seu Lambda deve ler a resposta dos campos que correspondem ao formato do conjunto de dados que você está usando.
O contêiner invoca seu Lambda uma vez por amostra, passando uma lista que contém um único objeto de amostra. Seu Lambda precisa iterar a lista, mas atualmente ele contém exatamente um item por invocação. As seções a seguir mostram a carga que seu Lambda recebe para cada formato de conjunto de dados compatível.
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" } } ]
Notas sobre a carga útil do OpenAI:
A resposta do modelo é a última
assistantmensagem. O contêiner anexa a resposta do modelo como uma nova curva de assistente.Se seu conjunto de dados já terminar com uma mensagem assistente (a virada da verdade fundamental), a carga útil conterá duas mensagens assistentes finais: a versão original da verdade fundamental seguida pela resposta do modelo.
A verdade básica também é fornecida no nível superior
reference_answer.text(a cópia normalizada em tempo de execução).idé um identificador gerado por contêiner (presente nesse formato).
formato verbal
[ { "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" } } } ]
Notas sobre a carga útil do verl:
A resposta do modelo está em
response(e também anexada como aassistantcurva finalprompt).A verdade fundamental é sempre emitida em
extra_info.reference_answer.text. É{"text": ""}quando o conjunto de dados não fornece nenhuma verdade fundamental. Leia a verdade fundamental neste campo.data_sourceo padrão é"customized"quando a entrada do conjunto de dados não o define.reward_modele outros campos específicos do verl (id,,abilityattributes,difficulty) são transmitidos somente se estiverem presentes na entrada do conjunto de dados. Eles não são adicionados por padrão.
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" } } ]
Notas sobre a carga útil do Hugging Face Prompt-Completion :
A resposta do modelo está em
completion(o contêiner substitui a conclusão original do conjunto de dados pela resposta do modelo).A verdade fundamental está em
reference_answer.text(a conclusão original do conjunto de dados).
Formato de preferência de rosto abraçado
[ { "id": "123", "prompt": "What is the capital of France?", "completion": "The capital of France is Paris.", "chosen": "Paris", "rejected": "London", "reference_answer": { "text": "Paris" } } ]
Notas sobre a carga útil do Hugging Face Preference:
A resposta do modelo está em
completion.O par original
chosene o parrejectedpreferencial são transmitidos.A verdade fundamental está em
reference_answer.text(resolvida a partir dechosen).
SageMaker Formato de avaliação de IA
[ { "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" } } ]
Notas sobre a carga útil da avaliação de SageMaker IA:
A resposta do modelo está em
model_response. Todos os campos do conjunto de dados original são passados inalterados (query,response,systemcategory, emetadata).A verdade fundamental aparece em dois campos de nível superior com o mesmo valor: o original
responsee.reference_answer.textLeia também.
nota
Essas são as cargas que seu Lambda recebe. SageMaker A IA pega cada entrada do seu conjunto de dados de avaliação, anexa a resposta gerada pelo modelo e a envia ao seu marcador. Veja Formatos de conjunto de dados suportados para Bring-Your-Own-Dataset tarefas (BYOD) como criar cada formato de conjunto de dados. Escreva seu Lambda para analisar os campos do formato que seu conjunto de dados usa.
Exemplo de carga útil de saída Lambda
Sua função AWS Lambda deve retornar um objeto de resultado por amostra de entrada. O contêiner de avaliação de SageMaker IA aceita um dos dois envelopes de resposta:
Opção A — Lista bruta (recomendada)
[ { "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" } ] } ]
Opção B — API Gateway-style wrapper
Nesse formato, body é a JSON-encoded string da lista de resultados. Esse é o formato emitido pelo modelo “Create Reward Function” do Studio.
{ "statusCode": 200, "body": "[{\"id\": \"123\", \"aggregate_reward_score\": 0.85, \"metrics_list\": [...]}]" }
As notas a seguir se aplicam aos dois envelopes de resposta:
Na Opção B,
bodydeve ser uma string JSON (não um objeto JSON aninhado) estatusCodedeve ser.200Um status diferente de 200 faz com que o contêiner de avaliação trate essa amostra como uma falha: ela é incluídabyoc_failure_counte suas métricas personalizadas são eliminadas, mas o trabalho geral de avaliação ainda é concluído.metrics_listé opcional; quando presente, cada entrada deve incluirnamevalue, etype("Reward"ou"Metric").Cada resultado
iddeve corresponder à amostra de entradaid.
Definição personalizada do Lambda
Encontre um exemplo de um marcador personalizado totalmente implementado com amostra de entrada e saída esperada em: #nova -reward-llm-judge-example https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html
Use o esqueleto a seguir como ponto de partida para sua própria função.
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" } ] } """
Campos de entrada e saída
Campos de entrada
| Campo | Description | Notas adicionais |
|---|---|---|
| id | Identificador único do exemplo | Ecoou de volta na saída. String. Presente para os formatos OpenAI, Hugging Face e SageMaker AI Evaluation; para verl, ele aparece somente se definido na entrada do conjunto de dados. |
| resposta_referência.texto | Verdade fundamental normalizada para a amostra | Presente em todos os formatos (nível superior para a maioria; abaixo extra_info para verl). O valor é "" quando o conjunto de dados não fornece nenhuma verdade básica. Leia a verdade fundamental neste campo. |
| mensagens | Histórico de bate-papo solicitado (somente OpenAI-format conjuntos de dados) | Matriz de objetos de mensagem. A resposta do modelo é a última assistant mensagem. |
| messages[].role | Quem fala a mensagem | Valores comuns: “user”, “assistant”, “system” |
| messages[].content | O conteúdo do texto da mensagem | String simples |
| prompt | Solicitação de entrada (formatos Hugging Face: string; verl: matriz de bate-papo) | Para verl, a resposta do modelo também é anexada como a curva finalassistant. |
| completion | Resposta do modelo (formatos Hugging Face Prompt-Completion e Preference) | O contêiner substitui a conclusão original do conjunto de dados pela resposta do modelo. |
| escolhido ou rejeitado | Respostas preferidas e rejeitadas (formato Hugging Face Preference) | Transmitido do conjunto de dados. A verdade fundamental é resolvida a partir dechosen. |
| resposta | Resposta do modelo (verl) /resposta verdadeira (SageMaker avaliação de IA) | Na avaliação de SageMaker IA, isso contém a verdade básica original (mesmo valor dereference_answer.text). |
| modelo_resposta | Resposta gerada pelo modelo (formato de avaliação de SageMaker IA) | String |
| fonte de dados, modelo_recompensa, informação_adicional | campos muito específicos | data_sourceo padrão é “personalizado”. reward_model e outros campos verl são transmitidos somente se estiverem presentes na entrada do conjunto de dados. |
| metadata | Free-form informações para auxiliar na classificação | Objeto; campos opcionais transmitidos do seu conjunto de dados |
Campos de saída
| Campo | Description | Notas adicionais |
|---|---|---|
| id | Mesmo identificador do exemplo de entrada | Deve corresponder à entrada |
| aggregate_reward_score | Pontuação geral do exemplo | Flutuante (por exemplo, 0,0 a 1,0, ou intervalo definido pela tarefa) |
| metrics_list | Pontuações de componentes que compõem o agregado | Matriz de objetos de métricas |
Permissões obrigatórias
Certifique-se de que a função de SageMaker execução que você usa para executar a avaliação tenha permissões do AWS Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Certifique-se de que a função de execução AWS da sua função Lambda tenha permissões básicas de execução do Lambda, bem como permissões adicionais que você possa precisar para qualquer chamada AWS downstream.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }