View a markdown version of this page

Avalie com pontuadores predefinidos e personalizados - SageMaker Inteligência Artificial da Amazon

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/verlRL, ou seu próprio marcador personalizado implementado como uma função Lambda.

Built-in Marcadores

Matemática principal

O principal marcador matemático espera um conjunto de dados JSONL personalizado de entradas contendo uma pergunta matemática como a prompt/query e a resposta correta como verdade fundamental. O conjunto de dados pode ser qualquer um dos formatos compatíveis mencionados emFormatos de conjunto de dados compatíveis 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 esperado para cada entrada, entradas de amostra 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 modelos 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 AWS Lambda que aceita respostas do modelo e retorna pontuações de recompensa.

Exemplo de carga útil de entrada Lambda

Seu AWS Lambda personalizado espera entradas no formato OpenAI. Exemplo:

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

Exemplo de carga útil de saída Lambda

O contêiner de SageMaker avaliação espera que suas respostas do Lambda sigam este 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" } ] }

Definição personalizada de 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 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" } ] } """

Campos de entrada e saída

Campos de entrada

Campo Description Notas adicionais
id Identificador único do exemplo Ecoou de volta na saída. Formato de string
mensagens Histórico sequencial do chat no formato OpenAI Matriz de objetos de mensagem
messages[].role Quem fala a mensagem Valores comuns: “user”, “assistant”, “system”
messages[].content O conteúdo do texto da mensagem String simples
metadata Free-form informações para auxiliar na classificação Objeto; campos opcionais dos dados de treinamento

Campos de saída

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 sua função de execução AWS da 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 downstream. AWS

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