Avaliar o modelo treinado
Uma receita de avaliação é um arquivo de configuração YAML que define como a tarefa de avaliação de modelo do Amazon Nova é executada. Com essa receita, você pode avaliar a performance de um modelo básico ou treinado em relação a benchmarks comuns ou em relação a seus próprios conjuntos de dados personalizados. As métricas podem ser armazenadas no Amazon S3 ou no TensorBoard. A avaliação fornece métricas quantitativas que ajudam a avaliar a performance do modelo em várias tarefas para determinar se é necessária alguma personalização adicional.
A avaliação de modelo é um processo off-line em que os modelos são testados em relação a benchmarks fixos com respostas predefinidas. Eles não são avaliados em tempo real ou em relação às interações ao vivo do usuário. Para avaliações em tempo real, você pode avaliar o modelo depois de implantado no Amazon Bedrock chamando as APIs de runtime do Amazon Bedrock.
Tópicos
Tarefas de referência disponíveis
Um pacote de código de amostra está disponível para demonstrar como calcular métricas de referência usando o recurso de avaliação de modelo do SageMaker AI para o Amazon Nova. Para acessar os pacotes de código, consulte sample-Nova-lighteval-custom-task
Veja aqui uma lista de referências padrão do setor disponíveis e compatíveis. É possível especificar as seguintes referências no parâmetro eval_task:
Referência |
Modalidade |
Descrição |
Métricas |
Estratégia |
Subtarefa disponível |
|---|---|---|---|---|---|
mmlu |
Texto |
Compreensão de linguagem multitarefa: testa o conhecimento em 57 disciplinas. |
accuracy |
zs_cot |
Sim |
mmlu_pro |
Texto |
MMLU (subconjunto profissional): concentra-se em domínios profissionais como direito, medicina, contabilidade e engenharia. |
accuracy |
zs_cot |
Não |
bbh |
Texto |
Tarefas de raciocínio avançado: um conjunto de problemas desafiadores que testam habilidades cognitivas e de resolução de problemas de nível mais alto. |
accuracy |
zs_cot |
Sim |
gpqa |
Texto |
Resposta a perguntas de física geral: avalia a compreensão de conceitos de física e habilidades relacionadas à resolução de problemas. |
accuracy |
zs_cot |
Não |
math |
Texto |
Resolução de problemas matemáticos: mede o raciocínio matemático em vários tópicos, como álgebra, cálculo e problemas de palavras. |
exact_match |
zs_cot |
Sim |
strong_reject |
Texto |
Tarefa de controle de qualidade: testa a capacidade do modelo de detectar e rejeitar conteúdo impróprio, prejudicial ou incorreto. |
deflection |
zs |
Sim |
IFEval |
Texto |
Avaliação de seguimento de instruções: avalia com que precisão um modelo segue as instruções dadas e conclui as tarefas conforme as especificações. |
accuracy |
zs |
Não |
gen_qa |
Texto |
Avaliação personalizada do conjunto de dados: permite que você utilize seu próprio conjunto de dados para fins de avaliação comparativa, comparando as saídas do modelo para respostas de referência com métricas como ROUGE e BLEU. |
todas |
gen_qa |
Não |
mmmu |
Multimodal |
Massive Multidiscipline Multimodal Understanding (MMMU): referência de nível universitário que compreende perguntas abertas e de múltipla escolha de trinta disciplinas. |
accuracy |
zs_cot |
Sim |
llm_judge |
Texto |
Comparação de preferências do LLM como avaliador: usa um modelo avaliador do Nova para determinar a preferência entre respostas emparelhadas (B em comparação com A) para os prompts, calculando a probabilidade de B ser preferida em relação a A. |
todas |
avaliador |
Não |
humaneval |
Texto |
HumanEval: um conjunto de dados de referência projetado para avaliar as capacidades de geração de código de grandes modelos de linguagem. |
passar@1 |
zs |
Não |
As seguintes subtarefas mmlu estão disponíveis:
MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]
As seguintes subtarefas bbh estão disponíveis:
BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]
As seguintes subtarefas math estão disponíveis:
MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]
Noções básicas sobre parâmetros de fórmula
Configuração da execução
A seguir está uma configuração geral de execução e uma explicação sobre os parâmetros envolvidos.
run: name: eval_job_name model_type: amazon.nova-micro-v1:0:128k model_name_or_path: nova-micro/prod replicas: 1 data_s3_path: "" output_s3_path: s3://output_path
-
name: (obrigatório) um nome descritivo para sua tarefa de avaliação. Isso ajuda a identificar sua tarefa no Console da AWS. -
model_type: (obrigatório) Especifica a variante do modelo do Amazon Nova a ser usada. Não modifique manualmente esse campo. Entre as opções estão:-
amazon.nova-micro-v1:0:128k -
amazon.nova-lite-v1:0:300k -
amazon.nova-pro-v1:0:300k
-
-
model_name_or_path: (obrigatório) o caminho para o modelo de base ou o caminho do S3 para o ponto de verificação pós-treinado. Entre as opções estão:-
nova-micro/prod -
nova-lite/prod -
nova-pro/prod -
(Caminho S3 para o ponto de verificação pós-treinado)
s3://<escrow bucket>/<job id>/outputs/checkpoints
-
-
replicas: (obrigatório) o número de instâncias de computação a serem usadas no treinamento distribuído. Você deve definir esse valor como 1 porque não é possível usar vários nós. -
data_s3_path: (obrigatório) o caminho do S3 para o conjunto de dados de entrada. Deixe esse parâmetro vazio, a menos que você esteja usando o traga seu próprio conjunto de dados ou o LLM como avaliador. -
output_s3_path: (obrigatório) o caminho do S3 para armazenar artefatos de avaliação de saída. Observe que o bucket de saída do S3 deve ser criado pela mesma conta que está criando a tarefa.
Configuração da avaliação
A seguir é apresentada uma configuração avaliação de modelo e uma explicação sobre os parâmetros envolvidos.
evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
-
task: (obrigatório) especifica a referência ou tarefa de avaliação a ser usada.Lista de tarefas compatíveis:
-
mmlu
-
mmlu_pro
-
bbh
-
gpqa
-
math
-
strong_reject
-
gen_qa
-
ifeval
-
mmmu
-
llm_judge
-
humaneval
-
-
strategy: (obrigatório) define a abordagem de avaliação.-
zs_cot: cadeia de pensamento zero shot, uma abordagem de utilização de prompts em grandes modelos de linguagem que incentiva o raciocínio passo a passo sem exigir exemplos explícitos.
-
zs: zero shot, uma abordagem para resolver um problema sem nenhum exemplo de treinamento prévio.
-
gen_qa: uma estratégia específica para trazer suas próprias fórmulas de conjuntos de dados.
-
judge: uma estratégia específica para LLM como avaliador do Amazon Nova.
-
-
subtask: (opcional e removível) estipula uma subtarefa específica para determinadas tarefas de avaliação. Remova da sua fórmula se sua tarefa não tiver subtarefas. -
metric: (obrigatório) a métrica de avaliação a ser usada.-
accuracy: porcentagem de respostas corretas.
-
exact_match: (para a referência
math) exibe a taxa na qual as strings previstas de entrada correspondem exatamente às respectivas referências. -
deflection: (para a referência
strong reject), exibe a deflexão relativa ao modelo base e a diferença nas métricas de significância. -
pass@1: (para a referência
humaneval) é uma métrica usada para medir a porcentagem de casos em que a predição de maior confiança do modelo corresponde à resposta correta. -
all: exibe as seguintes métricas:-
Para a referência
gen_qae trazer seu próprio conjunto de dados, exibe as seguintes métricas:-
rouge1: mede a sobreposição de unigramas (palavras únicas) entre o texto gerado e o texto de referência. -
rouge2: mede a sobreposição de unigramas (duas palavras consecutivas) entre o texto gerado e o texto de referência. -
rougeL: mede a maior subsequência comum entre textos, permitindo lacunas na correspondência. -
exact_match: pontuação binária (0 ou 1) indicando se o texto gerado corresponde exatamente ao texto de referência, caractere por caractere. -
quasi_exact_match: semelhante à correspondência exata, mas mais tolerante. Geralmente ignora diferenças de maiúsculas e minúsculas, pontuação e espaço em branco. -
f1_score: média harmônica de precisão e recall. Mede a sobreposição de palavras entre as respostas previstas e de referência. -
f1_score_quasi: semelhante ao f1_score, mas com uma correspondência mais branda. Usa a comparação de texto normalizada que ignora pequenas diferenças. -
bleu: mede a precisão das correspondências de n-gramas entre o texto gerado e o texto de referência. É comumente usada em avaliação de tradução.
-
-
Para a referência
llm_judgee trazer seu próprio conjunto de dados, exibe as seguintes métricas:-
a_scores: número de acertos daresponse_Aem passagens de avaliação para frente e para trás. -
a_scores_stderr: erro padrão deresponse_A scoresem avaliações de pares. -
b_scores: número de acertos daresponse_Bem passagens de avaliação para frente e para trás. -
b_scores_stderr: erro padrão deresponse_B scoresem avaliações de pares. -
ties: número de avaliações em que aresponse_Ae aresponse_Bsão avaliadas como iguais. -
ties_stderr: erro padrão de empates em avaliações de pares. -
inference_error: contagem de avaliações que não puderam ser concluídas adequadamente. -
inference_error_stderr: erro padrão de erros de inferência em todos as avaliações. -
score: pontuação agregada com base nos acertos dos passes para frente e para trás daresponse_B. -
score_stderr: erro padrão da pontuação agregada em avaliações de pares. -
winrate: a probabilidade de que a response_B será preferida em relação à response_A calculada por meio da probabilidade de Bradley-Terry. -
lower_rate: limite inferior (2,5º percentil) da taxa de acerto estimada da amostragem de bootstrap.
-
-
-
Configuração de inferência
A seguir é apresentada uma configuração de inferência e uma explicação sobre os parâmetros envolvidos. Todos os parâmetros são opcionais.
inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
-
max_new_tokens: o número máximo de tokens a serem gerados. Deve ser um número inteiro. -
top_k: o número de tokens de maior probabilidade a serem considerados. Deve ser um número inteiro. -
top_p: o limite de probabilidade cumulativa para a amostragem de tokens. Deve ser um número de ponto flutuante entre 0,0 e 1,0, inclusive. -
temperature: aleatoriedade na seleção de tokens. Valores maiores aumentam a aleatoriedade. Use 0 que os resultados sejam determinísticos. Esse valor deve ser um número de ponto flutuante com um valor mínimo de 0.
Observe que, para humaneval, recomendamos a seguinte configuração de inferência:
inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0
Exemplos de fórmula de avaliação
O Amazon Nova oferece quatro tipos de fórmula de avaliação, que estão disponíveis no repositório de fórmulas do HyperPod no GitHub.
Fórmulas gerais de referência de texto
Essas fórmulas permitem que você avalie as capacidades fundamentais dos modelos do Amazon Nova em um conjunto abrangente de referências somente de texto. Elas são fornecidas no formato xxx_general_text_benchmark_eval.yaml.
Fórmula geral de referência multimodal
Essas fórmulas permitem que você avalie as capacidades fundamentais dos modelos do Amazon Nova em um conjunto abrangente de referências multimodais. Elas são fornecidas no formato xxx_general_multi_modal_benchmark_eval.yaml.
Fórmula de referência de traga seu próprio conjunto de dados
Essas fórmulas permitem que você traga seu próprio conjunto de dados para fins de avaliação comparativa e compare os resultados do modelo com as respostas de referência usando diferentes tipos de métrica. Elas são fornecidas no formato xxx_bring_your_own_dataset_eval.yaml.
A seguir são apresentados os requisitos para trazer seu próprio conjunto de dados:
-
Requisitos de formato de arquivo
-
Você deve incluir um único arquivo
gen_qa.jsonlcontendo exemplos de avaliação. -
Seu conjunto de dados deve ser carregado em um local do S3 onde a tarefa de treinamento do SageMaker AI possa acessá-lo.
-
O arquivo deve seguir o formato de esquema exigido para um conjunto de dados geral de perguntas e respostas.
-
-
Requisitos de formato de esquema: cada linha do arquivo JSONL deve ser um objeto JSON com os seguintes campos:
-
query: (obrigatório) string contendo a pergunta ou instrução que precisa de uma resposta. -
response: (obrigatório) string contendo a saída esperada do modelo. -
system: (opcional) string contendo o prompt do sistema que define o comportamento, o perfil ou a personalidade do modelo de IA antes de processar a consulta.
-
Este é um exemplo de entrada para trazer seu próprio conjunto de dados.
{ "system":"You are a english major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" } { "system":"You are a pattern analysis specialist that provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" } { "system":"You have great attention to detail that follows instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }
Para usar seu conjunto de dados personalizado, modifique sua fórmula de avaliação com os campos obrigatórios a seguir. Não altere nenhum conteúdo.
evaluation: task: gen_qa strategy: gen_qa metric: all
As limitações a seguir se aplicam a:
-
Somente um arquivo JSONL é permitido por avaliação.
-
O arquivo deve seguir rigorosamente o esquema definido.
-
Limite de tamanho do contexto: para cada amostra no conjunto de dados, o tamanho do contexto (incluindo prompts do sistema + consulta) deve ser inferior a 3,5 mil.
Fórmula de referência do LLM como avaliador do Amazon Nova
O LLM como avaliador do Amazon Nova é um recurso de avaliação de modelo que permite aos clientes comparar a qualidade das respostas de um modelo com a resposta de um modelo de referência em um conjunto de dados personalizado. Ele usa um conjunto de dados com prompts, respostas de referência e respostas do contestador e usa um modelo avaliador do Nova para fornecer uma métrica de taxa de acertos com base na probabilidade de Bradley-Terry
As fórmulas são fornecidas no formato xxx_llm_judge_eval.yaml.
Estes são os requisitos do LLM como avaliador:
-
Requisitos de formato de arquivo
-
Inclua um único arquivo
llm_judge.jsonlcontendo exemplos de avaliação. O nome do arquivo deve serllm_judge.jsonl. -
Seu conjunto de dados deve ser carregado em um local do S3 que o RIG do SageMaker AI HyperPod possa acessar.
-
O arquivo deve seguir o formato de esquema exigido para o conjunto de dados
llm_judge.jsonl. -
O conjunto de dados de entrada deve garantir que todos os registros tenham menos de 12 mil de comprimento de contexto.
-
-
Requisitos de formato de esquema: cada linha do arquivo JSONL deve ser um objeto JSON com os seguintes campos:
-
prompt: (obrigatório) uma string contendo o prompt para a resposta gerada. -
response_A: uma string contendo a resposta de referência. -
response_B: uma string contendo a resposta alternativa a ser comparada com a resposta de referência.
-
Este é um exemplo de entrada de LLM como avaliador.
{ "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }
Para usar seu conjunto de dados personalizado, modifique a fórmula de avaliação com os campos obrigatórios a seguir. Não altere nenhum conteúdo.
evaluation: task: llm_judge strategy: judge metric: all
As limitações a seguir se aplicam a:
-
Somente um arquivo JSONL é permitido por avaliação.
-
O arquivo deve seguir rigorosamente o esquema definido.
-
Os modelos avaliadores do Amazon Nova são os mesmos em todas as especificações da família de modelos (ou seja, Lite, Micro e Pro).
-
No momento, não é possível usar modelos avaliadores.
-
Limite de tamanho do contexto: para cada amostra no conjunto de dados, o tamanho do contexto (incluindo prompts do sistema + consulta) deve ser inferior a 7 mil.
Iniciar um trabalho de avaliação
Veja a seguir um tipo de instância de avaliação e uma configuração do tipo de modelo:
# Install Dependencies (Helm - https://helm.sh/docs/intro/install/) curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh # Install the HyperPod CLI git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git git checkout -b release_v2 cd sagemaker-hyperpod-cli pip install . # Verify the installation hyperpod --help # Connect to a HyperPod Cluster hyperpod connect-cluster --cluster-namecluster-name# Submit the Job using the recipe for eval # Namespace by default should be kubeflow hyperpod start-job [--namespacenamespace] --recipe evaluation/nova/nova_micro_p5_48xl_general_text_benchmark_eval --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name":custom-run-name, "recipes.run.model_type":model_type, "recipes.run.model_name_or_path" "model name or finetune checkpoint s3uri, "recipes.run.data_s3_path":s3 for input data only for genqa and llm_judge, must be full S3 path that include filename, }' # List jobs hyperpod list-jobs [--namespacenamespace] [--all-namespaces] # Getting Job details hyperpod get-job --job-namejob-name[--namespacenamespace] [--verbose] # Listing Pods hyperpod list-pods --job-namejob-name--namespacenamespace# Cancel Job hyperpod cancel-job --job-namejob-name[--namespacenamespace]
Você também deve poder visualizar o status do trabalho por meio do console de cluster do Amazon EKS.
Acessar e analisar os resultados da avaliação
Depois que seu trabalho de avaliação for concluído com êxito, você poderá acessar e analisar os resultados usando as informações nesta seção. Com base no output_s3_path (como s3://output_path/) definido na fórmula, a estrutura de saída é a seguinte:
job_name/ ├── eval-result/ │ └── results_[timestamp].json │ └── inference_output.jsonl (only present for gen_qa) │ └── details/ │ └── model/ │ └── execution-date-time/ │ └──details_task_name_#_datetime.parquet └── tensorboard-results/ └── eval/ └── events.out.tfevents.[timestamp]
Os resultados das métricas são armazenados no local de saída s3://output_path/job_name/eval-result/result-timestamp.json especificado do S3.
Os resultados do TensorBoard são armazenados no caminho do S3 s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip.
Todas as saídas de inferência, exceto llm_judge e strong_reject, são armazenadas no caminho do S3: s3://output_path/job_name/eval-result/details/model/taskname.parquet.
Para gen_qa, o arquivo inference_output.jsonl contém os seguintes campos para cada objeto JSON:
-
prompt: o prompt final enviado ao modelo.
-
inferência: a saída bruta de inferência do modelo.
Para visualizar suas métricas de avaliação no TensorBoard, conclua as seguintes etapas:
-
Navegue até o TensorBoard no SageMaker AI.
-
Selecione Pastas do S3.
-
Adicione o caminho da pasta do S3; por exemplo,
s3://output_path/job-name/eval-tensorboard-result/eval. -
Aguarde a conclusão da sincronização.
As visualizações de séries temporais, escalares e de texto estão disponíveis.
Recomendamos seguir estas práticas recomendadas:
-
Mantenha seus caminhos de saída organizados por modelo e tipo de referência.
-
Mantenha convenções de nomenclatura consistentes para facilitar o rastreamento.
-
Salve os resultados extraídos em um local seguro.
-
Monitore o status de sincronização do TensorBoard para garantir que os dados sejam carregados com êxito.
Você pode encontrar os logs de erro de tarefa do HyperPod no grupo de logs /aws/sagemaker/Clusters/cluster-id do CloudWatch.