Avaliando seu modelo treinado - 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á.

Avaliando seu 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. 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 o tempo de execução do Amazon Bedrock. APIs

Tarefas de benchmark disponíveis

Está disponível um pacote de código de amostra que demonstra como calcular métricas de referência usando o recurso de avaliação de modelos de SageMaker IA para Amazon Nova. Para acessar os pacotes de código, consulte Amostra-n ova-lighteval-custom-task.

Aqui está uma lista dos benchmarks padrão do setor disponíveis e suportados. Você pode especificar os seguintes benchmarks no eval_task parâmetro:

Comparativo

Modalidade

Descrição

Métricas

Strategy

Subtarefa disponível

mmlu

Texto

Compreensão de linguagem multitarefa — testa o conhecimento em 57 disciplinas.

precisão

zs_cot

Sim

mmlu_pro

Texto

MMLU — Subconjunto Profissional — Concentra-se em domínios profissionais como direito, medicina, contabilidade e engenharia.

precisão

zs_cot

Não

bbh

Texto

Tarefas de raciocínio avançado — Uma coleção de problemas desafiadores que testam habilidades cognitivas e de resolução de problemas de alto nível.

precisão

zs_cot

Sim

gpqa

Texto

Resposta a perguntas de física geral — Avalia a compreensão dos conceitos de física e das habilidades relacionadas à resolução de problemas.

precisão

zs_cot

Não

math

Texto

Resolução de problemas matemáticos — mede o raciocínio matemático em vários tópicos, incluindo álgebra, cálculo e problemas com palavras.

correspondência_exata

zs_cot

Sim

rejeição_forte

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 após a instrução — mede a precisão com que um modelo segue as instruções dadas e conclui as tarefas de acordo com as especificações.

precisão

zs

Não

gen_qa

Texto

Avaliação personalizada do conjunto de dados — permite que você traga seu próprio conjunto de dados para fins de benchmarking, comparando as saídas do modelo com as respostas de referência com métricas como ROUGE e BLEU.

tudo

gen_qa

Não

mamãe

Multimodal

Compreensão multimodal multidisciplinar massiva (MMMU) — Referência de nível universitário que compreende perguntas abertas e de múltipla escolha de 30 disciplinas.

precisão

zs_cot

Sim

llm_judge

Texto

LLM-as-a-Judge Comparação de preferências — usa um modelo Nova Judge para determinar a preferência entre respostas emparelhadas (B em comparação com A) para suas solicitações, calculando a probabilidade de B ter preferência sobre A.

tudo

juiz

Não

humano

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

passe @1

zs

Não

As seguintes mmlu subtarefas 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 bbh subtarefas 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 math subtarefas estão disponíveis:

MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]

Entendendo os parâmetros da receita

Configuração da execução

A seguir está uma configuração geral de execução e uma explicação dos 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 seu trabalho de avaliação. Isso ajuda a identificar seu trabalho no AWS console.

  • model_type: (Obrigatório) Especifica a variante do modelo 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 básico ou o caminho 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 posto de controle 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 para treinamento distribuído. Você deve definir esse valor como 1 porque não há suporte para 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 Bring Your Own Dataset ou o LLM como receita para juízes.

  • output_s3_path: (Obrigatório) O caminho do S3 para armazenar artefatos de avaliação de saída. Observe que o bucket S3 de saída deve ser criado pela mesma conta que está criando o trabalho.

Configuração de avaliação

A seguir está uma configuração de avaliação do modelo e uma explicação dos parâmetros envolvidos.

evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
  • task: (Obrigatório) Especifica o benchmark de avaliação ou a tarefa a ser usada.

    Lista de tarefas suportadas:

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • rejeição_forte

    • gen_qa

    • ifeval

    • mamãe

    • llm_judge

    • humano

  • strategy: (Obrigatório) Define a abordagem de avaliação:

    • zs_cot: Zero-shot Chain-of-Thought - Uma abordagem para gerar grandes modelos de linguagem que incentiva step-by-step o raciocínio 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 receitas de conjuntos de dados.

    • juiz: Uma estratégia específica para o Amazon Nova LLM como receitas de juízes.

  • subtask: (Opcional e removível) Especifica uma subtarefa específica para determinadas tarefas de avaliação. Remova isso da sua receita se sua tarefa não tiver subtarefas.

  • metric: (Obrigatório) A métrica de avaliação a ser usada.

    • precisão: Porcentagem de respostas corretas

    • exact_match: (Para math benchmark), retorna a taxa na qual as cadeias de caracteres previstas de entrada correspondem exatamente às suas referências.

    • deflexão: (Para strong reject referência), retorna a deflexão relativa ao modelo base e a diferença nas métricas de significância.

    • pass @1: (Para humaneval benchmark) é uma métrica usada para medir a porcentagem de casos em que a previsão de maior confiança do modelo corresponde à resposta correta.

    • all: retorna as seguintes métricas:

      • Para gen_qa trazer seu próprio benchmark de conjunto de dados, retorne 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 bigramas (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 ignorando 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 evocação, medindo 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, usando 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 usadas na avaliação da tradução.

      • Para llm_judge trazer seu próprio benchmark de conjunto de dados, retorne as seguintes métricas:

        • a_scores: Número de vitórias em passes de avaliação response_A cruzados para frente e para trás.

        • a_scores_stderr: Erro padrão de julgamentos response_A scores entre pares.

        • b_scores: Número de vitórias em passes de avaliação response_B cruzados para frente e para trás.

        • b_scores_stderr: Erro padrão de julgamentos response_B scores entre pares.

        • ties: Número de julgamentos em que response_A e response_B são avaliados como iguais.

        • ties_stderr: Erro padrão de empates em julgamentos de pares.

        • inference_error: Contagem de julgamentos que não puderam ser avaliados adequadamente.

        • inference_error_stderr: Erro padrão de erros de inferência em todos os julgamentos.

        • score: Pontuação agregada com base nas vitórias dos passes para frente e para trás para. response_B

        • score_stderr: Erro padrão da pontuação agregada em julgamentos em pares.

        • winrate: a probabilidade de que a resposta_B seja preferida em relação à resposta_a calculada usando a probabilidade de Bradley-Terry.

        • lower_rate: Limite inferior (2,5º percentil) da taxa de vitória estimada a partir da amostragem de bootstrap.

Configuração de inferência

A seguir está uma configuração de inferência e uma explicação dos 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. Isso deve ser um número inteiro.

  • top_k: o número de tokens de maior probabilidade a serem considerados. Isso deve ser um número inteiro.

  • top_p: O limite de probabilidade cumulativa para amostragem de tokens. Isso deve ser um flutuador entre 0,0 e 1,0, inclusive.

  • temperature: Aleatoriedade na seleção de tokens. Valores maiores introduzem mais aleatoriedade. Use 0 para tornar os resultados determinísticos. Esse valor deve ser um float com um valor mínimo de 0.

Observe quehumaneval, para isso, recomendamos a seguinte configuração de inferência:

inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0

Exemplos de receitas de avaliação

A Amazon Nova fornece quatro tipos de receitas de avaliação, que estão disponíveis no GitHub repositório de HyperPod receitas.

Receitas gerais de benchmark de texto

Essas receitas permitem que você avalie os recursos fundamentais dos modelos Amazon Nova em um conjunto abrangente de benchmarks somente de texto. Eles são fornecidos no formatoxxx_general_text_benchmark_eval.yaml.

Receita geral de referência multimodal

Essas receitas permitem que você avalie as capacidades fundamentais dos modelos Amazon Nova em um conjunto abrangente de benchmarks multimodais. Eles são fornecidos no formatoxxx_general_multi_modal_benchmark_eval.yaml.

Traga sua própria receita de referência de conjunto de dados

Essas receitas permitem que você traga seu próprio conjunto de dados para fins de benchmarking e compare os resultados do modelo com as respostas de referência usando diferentes tipos de métricas. Eles são fornecidos no formatoxxx_bring_your_own_dataset_eval.yaml.

A seguir estão os requisitos para trazer seu próprio conjunto de dados:

  • Requisitos de formato de arquivo

    • Você deve incluir um único gen_qa.jsonl arquivo contendo exemplos de avaliação.

    • Seu conjunto de dados deve ser carregado em um local do S3 onde o trabalho de treinamento de SageMaker IA 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 do esquema - Cada linha no arquivo JSONL deve ser um objeto JSON com os seguintes campos:

    • query: (Obrigatório) Cadeia de caracteres contendo a pergunta ou instrução que precisa de uma resposta

    • response: (Obrigatório) String contendo a saída esperada do modelo

    • system: (Opcional) Cadeia de caracteres contendo o prompt do sistema que define o comportamento, a função ou a personalidade do modelo de IA antes de processar a consulta

Aqui está 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 receita de avaliação com os seguintes campos obrigatórios, 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 solicitações de consulta do sistema +) deve ser menor que 3,5 mil

Amazon Nova LLM como receita de referência para juízes

O Amazon Nova LLM as a Judge é um recurso de avaliação de modelos que permite aos clientes comparar a qualidade das respostas de um modelo com a resposta de um modelo básico em um conjunto de dados personalizado. Ele usa um conjunto de dados com solicitações, respostas básicas e respostas do desafiador e usa um modelo Nova Judge para fornecer uma métrica de taxa de vitórias com base na probabilidade de Bradley-Terry com comparações entre pares.

As receitas são fornecidas no formatoxxx_llm_judge_eval.yaml.

A seguir estão os requisitos do LLM como juiz:

  • Requisitos de formato de arquivo

    • Inclua um único llm_judge.jsonl arquivo contendo 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 SageMaker AI HyperPod RIG possa acessar.

    • O arquivo deve seguir o formato de esquema exigido para o llm_judge.jsonl conjunto de dados.

    • O conjunto de dados de entrada deve garantir que todos os registros tenham menos de 12k de comprimento de contexto.

  • Requisitos de formato do esquema - Cada linha no 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 da linha de base.

    • response_B: uma sequência contendo a resposta alternativa deve ser comparada com a resposta inicial.

Aqui está um exemplo de entrada de LLM como juiz

{ "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 sua receita de avaliação com os seguintes campos obrigatórios, 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 Amazon Nova Judge são iguais em todas as especificações da família de modelos (ou seja, Lite, Micro e Pro).

  • No momento, não há suporte para modelos personalizados de juízes.

  • Limite de tamanho do contexto: para cada amostra no conjunto de dados, o tamanho do contexto (incluindo solicitações de consulta do sistema +) deve ser menor que 7k

Comece um trabalho de avaliação

Veja a seguir uma sugestão do tipo de instância de avaliação e da 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-name cluster-name # Submit the Job using the recipe for eval # Namespace by default should be kubeflow hyperpod start-job [--namespace namespace] --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 [--namespace namespace] [--all-namespaces] # Getting Job details hyperpod get-job --job-name job-name [--namespace namespace] [--verbose] # Listing Pods hyperpod list-pods --job-name job-name --namespace namespace # Cancel Job hyperpod cancel-job --job-name job-name [--namespace namespace]

Você também deve poder visualizar o status do trabalho por meio do console de cluster do Amazon EKS.

Acesse e visualize seus resultados

Depois que seu trabalho de avaliação for concluído com êxito, você poderá acessar e analisar os resultados usando as informações desta seção. Com base no output_s3_path (comos3://output_path/) definido na receita, a estrutura de saída é a seguinte:

job_name/ ├── eval-result/ │ └── job-name/ │ └── results_[timestamp].json │ └── details/ │ └── model/ │ └── execution-date-time/ │ └──details_task_name_#_datetime.parquet └── eval-tensorboard-result/ └── job-name/ └── eval/ └── events.out.tfevents.[timestamp]

Os resultados das métricas são armazenados no local de saída especificado do S3 s3://output_path/job_name/eval-result/result-timestamp.json

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

As saídas de inferência, esperadas por strong_reject egen_qa, são armazenadas no caminho do S3. s3://output_path/job_name/eval-result/details/model/taskname.parquet

Para visualizar suas métricas de avaliação no Tensorboard, conclua as seguintes etapas:

  1. Navegue até o SageMaker AI Tensorboard.

  2. Selecione as pastas do S3.

  3. Adicione o caminho da pasta do S3, por exemplos3://output_path/job-name/eval-tensorboard-result/eval.

  4. Aguarde a conclusão da sincronização.

As séries temporais, os escalares e as visualizações de texto estão disponíveis.

Recomendamos seguir estas práticas recomendadas:

  • Mantenha seus caminhos de saída organizados por modelo e tipo de benchmark.

  • Mantenha convenções de nomenclatura consistentes para facilitar o rastreamento.

  • Salve os resultados extraídos em um local seguro.

  • Monitore o status da TensorBoard sincronização para verificar se o carregamento de dados foi bem-sucedido.

Você pode encontrar registros de erros de HyperPod trabalho no grupo de CloudWatch registros/aws/sagemaker/Clusters/cluster-id.