Evaluación del modelo entrenado - Amazon SageMaker AI

Evaluación del modelo entrenado

Una fórmula de evaluación es un archivo de configuración YAML que define cómo se ejecuta el trabajo de evaluación de modelos de Amazon Nova. Con esta fórmula, puede evaluar el rendimiento de un modelo básico o entrenado mediante su comparación con puntos de referencia comunes o con sus propios conjuntos de datos personalizados. Las métricas se pueden almacenar en Amazon S3 o en TensorBoard. La evaluación proporciona métricas cuantitativas que le ayudan a evaluar el rendimiento del modelo en diversas tareas para determinar si es necesaria una mayor personalización.

La evaluación de los modelos es un proceso fuera de línea, en el que estos se prueban comparándolos con puntos de referencia fijos con respuestas predefinidas. No se evalúan en tiempo real ni en función de las interacciones de los usuarios en directo. Para evaluaciones en tiempo real, puede evaluar el modelo después de implementarlo en Amazon Bedrock llamando a las API de tiempo de ejecución de Amazon Bedrock.

Tareas de referencia disponibles

Hay un paquete de códigos de ejemplo que muestra cómo calcular métricas de referencia mediante la característica de evaluación de modelos de SageMaker AI para Amazon Nova. Para acceder a los paquetes de códigos, consulte sample-Nova-lighteval-custom-task.

A continuación se muestra una lista de las referencias estándar del sector disponibles y compatibles. Puede especificar las siguientes referencias para el parámetro eval_task:

Referencia

Modalidad

Descripción

Métricas

Strategy (Estrategia)

Subtarea disponible

mmlu

Texto

Comprensión del lenguaje multitarea: evalúa los conocimientos sobre 57 materias.

precisión

zs_cot

mmlu_pro

Texto

MMLU (subconjunto profesional): se centra en dominios profesionales como derecho, medicina, contabilidad e ingeniería.

precisión

zs_cot

No

bbh

Texto

Tareas de razonamiento avanzado: conjunto de problemas complejos que ponen a prueba las habilidades cognitivas y de resolución de problemas de nivel superior.

precisión

zs_cot

gpqa

Texto

Respuesta a preguntas de física general: evalúa la comprensión de conceptos de física y habilidades relacionadas con la resolución de problemas.

precisión

zs_cot

No

math

Texto

Resolución de problemas matemáticos: mide el razonamiento matemático en temas como álgebra, cálculo y problemas verbales.

exact_match

zs_cot

strong_reject

Texto

Tarea de control de calidad: prueba la capacidad del modelo para detectar y rechazar contenido inapropiado, dañino o incorrecto.

desviación

zs

IFEval

Texto

Evaluación de seguimiento de instrucciones: mide la precisión con la que un modelo sigue las instrucciones dadas y completa las tareas según las especificaciones.

precisión

zs

No

gen_qa

Texto

Evaluación personalizada de conjuntos de datos: permite utilizar un conjunto de datos propio para realizar evaluaciones comparativas y comparar resultados del modelo con respuestas de referencia con métricas como ROUGE y BLEU.

all

gen_qa

No

mmmu

Multimodal

Comprensión multidisciplinaria masiva y multimodal (MMMU): referencia de nivel universitario que consta de preguntas de opción múltiple y preguntas abiertas de 30 disciplinas.

precisión

zs_cot

llm_judge

Texto

Comparación de preferencias de LLM como juez: utiliza un modelo Nova Judge para determinar la preferencia entre las respuestas emparejadas (B en comparación con A) para las peticiones, calculando la probabilidad de que se prefiera B a A.

all

judge

No

humaneval

Texto

HumanEval: conjunto de datos de referencia diseñado para evaluar las capacidades de generación de código de modelos de lenguaje de gran tamaño

pass@1

zs

No

Están disponibles las siguientes subtareas de mmlu:

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

Están disponibles las siguientes subtareas de bbh:

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

Están disponibles las siguientes subtareas de math:

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

Comprensión de los parámetros de fórmula

Configuración de una ejecución

A continuación se ofrece una configuración de ejecución general y una explicación de los parámetros que intervienen.

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: (obligatorio) nombre descriptivo del trabajo de evaluación. Ayuda a identificar el trabajo en la consola de AWS.

  • model_type: (obligatorio) especifica la variante del modelo de Amazon Nova que se va a utilizar. No modifique manualmente este campo. Las opciones son:

    • amazon.nova-micro-v1:0:128k

    • amazon.nova-lite-v1:0:300k

    • amazon.nova-pro-v1:0:300k

  • model_name_or_path: (obligatorio) ruta al modelo base o ruta de S3 para el punto de comprobación entrenado posteriormente. Las opciones son:

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • (Ruta de S3 para el punto de comprobación entrenado posteriormente) s3://<escrow bucket>/<job id>/outputs/checkpoints

  • replicas: (obligatorio) número de instancias de computación que desea utilizar para entrenamiento distribuido. Debe establecer este valor en 1 porque no se admite el uso de varios nodos.

  • data_s3_path: (obligatorio) ruta de S3 al conjunto de datos de entrada. Deje este parámetro en blanco a menos que esté utilizando la fórmula uso del conjunto de datos propio o LLM como juez.

  • output_s3_path: (obligatorio) ruta de S3 para almacenar artefactos de evaluación de salida. Tenga en cuenta que el bucket de S3 de salida debe crearlo la misma cuenta que está creando el trabajo.

Configuración de evaluación

A continuación se ofrece una configuración de evaluación de modelos y una explicación de los parámetros que intervienen.

evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
  • task: (obligatorio) Especifica la referencia o la tarea de evaluación que se va a utilizar.

    Lista de tareas admitidas:

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • mmmu

    • llm_judge

    • humaneval

  • strategy: (obligatorio) define el enfoque de evaluación:

    • zs_cot: cadena de pensamientos de cero intentos: enfoque para realizar peticiones a modelos de lenguaje de gran tamaño que fomenta el razonamiento paso a paso sin necesidad de ejemplos explícitos.

    • zs: cero intentos: enfoque para resolver un problema sin ejemplos de entrenamiento anteriores.

    • gen_qa: estrategia específica para crear fórmulas de conjuntos de datos propias.

    • judge: estrategia específica para LLM de Amazon Nova como fórmulas de Judge.

  • subtask: (opcional y eliminable) especifica una subtarea específica para determinadas tareas de evaluación. Elimine esta opción de la fórmula si la tarea no tiene ninguna subtarea.

  • metric: (obligatorio) métrica de evaluación que se va a utilizar.

    • accuracy: porcentaje de respuestas correctas

    • exact_match: (para referencia math), devuelve la velocidad a la que las cadenas de entrada previstas coinciden exactamente con sus referencias.

    • deflection: (para referencia strong reject), devuelve la deflexión relativa al modelo base y la diferencia en las métricas de importancia.

    • pass@1: (para referencia humaneval) es una métrica que se utiliza para medir el porcentaje de casos en los que la predicción de mayor confianza del modelo coincide con la respuesta correcta.

    • all: devuelve las siguientes métricas:

      • Para gen_qa y uso de su propia referencia de conjunto de datos, devuelve las siguientes métricas:

        • rouge1: mide la superposición de unigramas (palabras individuales) entre texto generado y de referencia.

        • rouge2: mide la superposición de bigramas (dos palabras consecutivas) entre texto generado y de referencia.

        • rougeL: mide la subsecuencia común más larga entre textos, por lo que puede haber lagunas en la coincidencia.

        • exact_match: puntuación binaria (0 o 1) que indica si el texto generado coincide exactamente con el texto de referencia, carácter por carácter.

        • quasi_exact_match: similar a la coincidencia exacta, pero más flexible, pues suele ignorar el uso de mayúsculas y minúsculas, los signos de puntuación y los espacios en blanco.

        • f1_score: media armónica de precisión y recuperación que mide la superposición de palabras entre respuestas previstas y de referencia.

        • f1_score_quasi: similar a f1_score, pero con una coincidencia más flexible, utiliza una comparación de texto normalizada que no tiene en cuenta pequeñas diferencias.

        • bleu: mide la precisión de las coincidencias de n-gramas entre texto generado y de referencia, suele utilizarse en la evaluación de traducciones.

      • Para llm_judge y uso de su propia referencia de conjunto de datos, devuelve las siguientes métricas:

        • a_scores: número de aciertos para response_A en pasadas de evaluación hacia delante y hacia atrás.

        • a_scores_stderr: error estándar de response_A scores en juicios por pares.

        • b_scores: número de aciertos para response_B en pasadas de evaluación hacia delante y hacia atrás.

        • b_scores_stderr: error estándar de response_B scores en juicios por pares.

        • ties: número de juicios en los que se evalúa response_A y response_B como iguales.

        • ties_stderr: error estándar de ties en juicios por pares.

        • inference_error: número de juicios que no se han podido evaluar adecuadamente.

        • inference_error_stderr: error estándar de errores de inferencia en todos los juicios.

        • score: puntuación global basada en aciertos de pasadas hacia adelante y hacia atrás para response_B.

        • score_stderr: error estándar de puntuación global en juicios por pares.

        • winrate: probabilidad de que se prefiera response_B a response_A calculada utilizando probabilidad de Bradley-Terry.

        • lower_rate: límite inferior (percentil 2,5) de la tasa de aciertos estimada a partir del muestreo de inicio.

Configuración de inferencias

A continuación se ofrece una configuración de inferencia y una explicación de los parámetros que intervienen. Todos los parámetros son opcionales.

inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
  • max_new_tokens: número máximo de tokens que se generarán. Debe ser un número entero.

  • top_k: número de tokens de mayor probabilidad que se deben tener en cuenta. Debe ser un número entero.

  • top_p: umbral de probabilidad acumulada para el muestreo de tokens. Debe ser un valor flotante entre 0,0 and 1,0, ambos inclusive.

  • temperature: asignación al azar en selección de tokens. Los valores más altos introducen más asignación al azar. Use 0 para hacer que los resultados sean deterministas. Este valor debe ser flotante con un mínimo de 0.

Tenga en cuenta que para humaneval recomendamos la siguiente configuración de inferencia:

inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0

Ejemplos de fórmula de evaluación

Amazon Nova proporciona cuatro tipos de fórmulas de evaluación, que están disponibles en el repositorio de fórmulas de HyperPod en GitHub.

Fórmulas de referencia de texto general

Estas fórmulas le permiten evaluar las capacidades fundamentales de los modelos de Amazon Nova a través de un amplio conjunto de referencias solo de texto. Se proporcionan en formato xxx_general_text_benchmark_eval.yaml.

Fórmula de referencia multimodal general

Estas fórmulas le permiten evaluar las capacidades fundamentales de los modelos de Amazon Nova a través de un amplio conjunto de referencias multimodales. Se proporcionan en formato xxx_general_multi_modal_benchmark_eval.yaml.

Fórmula de referencia de uso de conjunto de datos propio

Estas fórmulas le permiten utilizar su propio conjunto de datos como referencia y comparar las salidas del modelo con las respuestas de referencia utilizando diferentes tipos de métricas. Se proporcionan en formato xxx_bring_your_own_dataset_eval.yaml.

Estos son los requisitos para utilizar un conjunto de datos propio:

  • Requisitos de formato de archivo

    • Debe incluir un único archivo gen_qa.jsonl que contenga ejemplos de evaluación.

    • El conjunto de datos debe cargarse en una ubicación de S3 a la que pueda acceder el trabajo de entrenamiento de SageMaker AI.

    • El archivo debe seguir el formato de esquema requerido para un conjunto de datos general de preguntas y respuestas.

  • Requisitos de formato de esquema: cada línea del archivo JSONL debe ser un objeto JSON con los siguientes campos:

    • query: (obligatorio) cadena que contiene la pregunta o la instrucción que necesita una respuesta

    • response: (obligatorio) cadena que contiene la salida esperada del modelo

    • system: (opcional) cadena que contiene la petición del sistema que establece el comportamiento, el rol o la personalidad del modelo de IA antes de que procese la consulta

Esta es una entrada de ejemplo de uso del conjunto de datos propio

{ "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 un conjunto de datos personalizado, modifique la fórmula de evaluación con los siguientes campos obligatorios, sin cambiar ningún contenido:

evaluation: task: gen_qa strategy: gen_qa metric: all

Se aplican las siguientes restricciones:

  • Solo se permite un archivo JSONL por evaluación.

  • El archivo debe seguir estrictamente el esquema definido.

  • Límite de longitud del contexto: para cada muestra del conjunto de datos, la longitud del contexto (incluidas las peticiones de consulta y del sistema) debe ser inferior a 3500

Fórmula de referencia de LLM como juez de Amazon Nova

LLM como juez de Amazon Nova es una característica de evaluación de modelos que permite a los clientes comparar la calidad de las respuestas de un modelo con la respuesta de un modelo de referencia en un conjunto de datos personalizado. Incluye un conjunto de datos con peticiones, respuestas de referencia y respuestas de desafío, y utiliza un modelo de Nova Judge para proporcionar una métrica de tasa de aciertos basada en probabilidad de Bradley-Terry con comparaciones por pares.

Las fórmulas se proporcionan en formato xxx_llm_judge_eval.yaml.

Estos son los requisitos del LLM como juez:

  • Requisitos de formato de archivo

    • Incluya un solo archivo llm_judge.jsonl que contenga ejemplos de evaluación. El nombre de archivo debe ser llm_judge.jsonl.

    • El conjunto de datos debe cargarse en una ubicación de S3 a la que pueda acceder SageMaker AI HyperPod RIG.

    • El archivo debe seguir el formato de esquema requerido para el conjunto de datos llm_judge.jsonl.

    • El conjunto de datos de entrada debe garantizar que todos los registros tengan una longitud de contexto inferior a 12 000.

  • Requisitos de formato de esquema: cada línea del archivo JSONL debe ser un objeto JSON con los siguientes campos:

    • prompt: (obligatorio) cadena que contiene la petición de la respuesta generada.

    • response_A: cadena que contiene la respuesta de referencia.

    • response_B: cadena que contiene la respuesta alternativa que se comparará con la respuesta de referencia.

Esta es una entrada de ejemplo de LLM como juez

{ "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 un conjunto de datos personalizado, modifique la fórmula de evaluación con los siguientes campos obligatorios, sin cambiar ningún contenido:

evaluation: task: llm_judge strategy: judge metric: all

Se aplican las siguientes restricciones:

  • Solo se permite un archivo JSONL por evaluación.

  • El archivo debe seguir estrictamente el esquema definido.

  • Los modelos de Juez de Amazon Nova son iguales en todas las especificaciones de familias de modelos (es decir, Lite, Micro y Pro).

  • No se admiten modelos de juez personalizados en este momento.

  • Límite de longitud del contexto: para cada muestra del conjunto de datos, la longitud del contexto (incluidas las peticiones de consulta y del sistema) debe ser inferior a 7000

Inicio de un trabajo de evaluación

A continuación se ofrece una sugerencia de configuración del tipo de instancia y del tipo de modelo de evaluación:

# 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]

También debería poder ver el estado del trabajo a través de la consola de clúster de Amazon EKS.

Acceso y análisis de los resultados de la evaluación

Una vez que el trabajo de evaluación haya finalizado satisfactoriamente, podrá acceder a los resultados y analizarlos utilizando la información de esta sección. En función de la output_s3_path (por ejemplo, s3://output_path/) definida en la fórmula, la estructura de salida es la siguiente:

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]

Los resultados de las métricas se almacenan en la ubicación de salida de S3 especificada s3://output_path/job_name/eval-result/result-timestamp.json.

Los resultados de Tensorboard se almacenan en la ruta de S3 s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip.

Todos los resultados de inferencia, excepto llm_judge y strong_reject, se almacenan en la ruta de S3: s3://output_path/job_name/eval-result/details/model/taskname.parquet.

Para gen_qa, el archivo inference_output.jsonl contiene los siguientes campos para cada objeto JSON:

  • petición: última petición enviada al modelo

  • inferencia: salida de inferencia sin procesar del modelo

Para visualizar las métricas de evaluación en Tensorboard, siga estos pasos:

  1. Navegue hasta SageMaker AI Tensorboard.

  2. Seleccione Carpetas de S3.

  3. Agregue la ruta de la carpeta de S3, por ejemplo s3://output_path/job-name/eval-tensorboard-result/eval.

  4. Espere a que se complete la sincronización.

Hay disponibles series temporales, escalares y visualizaciones de texto.

Recomendamos que siga las siguientes prácticas recomendadas:

  • Mantenga las rutas de salida organizadas por modelo y tipo de referencia.

  • Mantenga convenciones de nomenclatura coherentes para facilitar el seguimiento.

  • Guarde los resultados extraídos en un lugar seguro.

  • Supervise el estado de sincronización de TensorBoard para que los datos se carguen correctamente.

Los registros de errores de trabajo de HyperPod se encuentran en el grupo de registros de CloudWatch /aws/sagemaker/Clusters/cluster-id.