Destilación de Amazon Nova - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Destilación de Amazon Nova

Esta guía de inicio rápido le ayuda a empezar con la destilación modelo Amazon Nova mediante el ajuste fino supervisado (SFT) en IA. SageMaker

La destilación de modelos es un método que transfiere el conocimiento de modelos grandes y avanzados a modelos más pequeños y eficientes. Con los modelos Amazon Nova, un modelo instructor más grande (como Amazon Nova Pro o Amazon Nova Premier) transfiere sus capacidades a un modelo aprendiz más pequeño (como Amazon Nova Lite o Amazon Nova Micro). Esto crea un modelo personalizado que mantiene un alto rendimiento y utiliza menos recursos.

Componentes principales

El proceso de destilación incluye principalmente dos tipos de modelos:

Los modelos instructores sirven como fuente de conocimiento e incluyen:

  • Amazon Nova Pro (Amazon). nova-pro-v1:0)

  • Amazon Nova Premier (amazon). nova-premier-v1:0)

Los modelos aprendices reciben e implementan los conocimientos:

  • Amazon Nova Lite (Amazon). nova-lite-v1:0:300 k)

  • Amazon Nova Micro (Amazon). nova-micro-v1:00:128 (km)

  • Amazon Nova Pro (Amazon). nova-pro-v1:0:300 k) - Disponible solo cuando se utiliza Amazon Nova Premier como profesor

Casos de uso

La destilación de modo es particularmente beneficiosa cuando:

  • Su aplicación tiene requisitos estrictos de latencia, costo y precisión.

  • Necesita un modelo personalizado para tareas específicas, pero carece de suficientes datos de entrenamiento etiquetados de alta calidad.

  • Desea hacer coincidir el rendimiento de los modelos avanzados mientras mantiene la eficacia de los modelos más pequeños.

Requisitos previos

  • Cuenta de AWScon acceso a los modelos de Amazon Nova y a las cuotas de servicio adecuadas (mínimo 6 instancias P5 y 1 R5).

  • Función de IAM con permisos para SageMaker trabajos de formación.

  • Un bucket de Amazon S3 para almacenar los datos de entrenamiento y salidas.

Configuración del aumento de datos

La fase de aumento de datos utiliza los trabajos de SageMaker formación para generar datos de formación de alta calidad utilizando el modelo docente. En esta sección se detallan el proceso de configuración y los requisitos.

rol de IAM

Para crear roles de IAM y asociar políticas, consulte Creación de roles y asociación de políticas (consola). Si lo usaAWS CLI, siga las instrucciones de create-role y. attach-role-policy Para obtener más información, consulte Cómo utilizar las funciones de ejecución de SageMaker IA en la Guía para desarrolladores de SageMaker IA.

A continuación se muestran algunos comandos de ejemplo para su referencia.

Cree un rol de ejecución de SageMaker IA

El rol se crea con una relación de confianza que permite a SageMaker AI, Amazon Bedrock, asumir este rol. Esto permite que estos servicios actúen en su nombre al ejecutar trabajos de inferencia en lotes.

aws iam create-role \ --role-name NovaCustomizationRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["sagemaker.amazonaws.com", "bedrock.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }'

Asociación de las políticas necesarias

# Attach AmazonSageMakerFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess # Attach AmazonBedrockFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess # Attach S3 access policy aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess # Attach AmazonEC2FullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess

Asocie la siguiente política insertada al rol de ejecución del cliente necesario para el contenedor de destilación.

  • AWS KMSpermisos: permite que el rol interactúe con el servicio de administración de AWS claves, necesario para acceder a los recursos cifrados o administrar las claves de cifrado.

  • IAM:PassRole: Este permiso suele ser necesario cuando un servicio necesita transferir esta función a otro servicio, un patrón habitual en las integraciones de AWS servicios.

aws iam put-role-policy \ --role-name NovaCustomizationRole \ --policy-name Distillation-Additional-Permissions\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*" } ] }

Configuración de Amazon VPC

Para crear una configuración de Amazon VPC para trabajos de formación de SageMaker IA mediante laConsola de administración de AWS, siga las instrucciones de Configure Your Private VPC for SageMaker Training (consola).

Creación de una nueva Amazon VPC

Name: Distillation-VPC IPv4 CIDR: 10.0.0.0/16 (or your preferred range) Availability Zones: 2 Public Subnets: 2 Private Subnets: 2 NAT Gateways: 1 (in one AZ)

Cree un grupo de seguridad

Name: Distillation-SG Description: Security group for data distillation jobs Inbound Rules: Allow all traffic from self Outbound Rules: Allow all traffic (0.0.0.0/0)

Creación de un punto de conexión de VPC para los siguientes servicios

com.amazonaws.[region].s3 com.amazonaws.[region].sagemaker.api com.amazonaws.[region].sagemaker.runtime com.amazonaws.[region].bedrock.api com.amazonaws.[region].bedrock.runtime com.amazonaws.[region].sts com.amazonaws.[region].logs com.amazonaws.[region].ecr.api com.amazonaws.[region].ecr.dkr

Para cada punto de conexión:

  • Seleccione su Distillation-VPC

  • Elija una de las subredes privadas

  • Seleccione el grupo de seguridad Distillation-SG

Claves de AWS KMS

Cuando se trabaja con la inferencia de lotes de Amazon Bedrock, se necesita una AWS KMS clave para garantizar la seguridad y el cumplimiento de los datos. Los trabajos de inferencia por lotes de Amazon Bedrock requieren que los depósitos de Amazon S3 de entrada y salida estén cifrados con AWS KMS claves para garantizar la protección de los datos en reposo.

Cree una clave KMS AWS CLI con este comando:

# Create KMS key aws kms create-key \ --description "KMS key for Amazon Bedrock batch inference Amazon S3 bucket" \ --region us-east-1

El comando generará la información clave, incluido el ARN. Ejemplo de código de salida:

{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }
nota

Guarde el ARN de la clave de KMS del resultado, ya que lo necesitará para crear el bucket de Amazon S3 en la siguiente sección.

Bucket de Amazon S3

Necesita dos tipos de almacenamiento de Amazon S3. El bucket de Amazon S3 administrado por el cliente almacena los datos de entrada y los archivos manifest.json de salida. Usted crea y administra este bucket y puede utilizar un único bucket tanto para la entrada como para la salida. Este bucket debe configurarse con cifrado de KMS, ya que almacenará datos de salida confidenciales y se utilizará en los trabajos de inferencia en lotes de Amazon Bedrock. Amazon Bedrock requiere buckets cifrados con KMS para procesar las tareas de inferencia en lotes.

El bucket de Amazon S3 administrado por servicios almacena las ponderaciones de los modelos. Durante su primer trabajo de entrenamiento, se crea automáticamente un bucket de Amazon S3 administrado por servicios. Cuenta con controles de acceso restringidos con rutas específicas a las que solo se puede acceder a través de archivos de manifiesto.

Para crear un depósito en un depósito específicoRegión de AWS, utilice el comando CLI create-bucket.

Ejemplo de comando para crear un bucket de Amazon S3 con AWS KMS cifrado. {kms_key_arn}Sustitúyalo por el ARN de tu AWS KMS clave. Primero tendrás que crear una AWS KMS clave si aún no lo has hecho.

aws s3api create-bucket \ --bucket {my_bucket_name} \ --region {aws_region} \ --create-bucket-configuration LocationConstraint={aws_region} \ --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{kms_key_arn}" }, "BucketKeyEnabled": true } ] }'

Empezar un trabajo SageMaker de formación

Antes de empezar un trabajo de entrenamiento, prepare los datos.

Requisito de formato de datos: el conjunto de datos de entrada debe estar en formato JSONL y cada línea debe contener una muestra en formato conversacional. Para obtener más información, consulte Preparación de datos para destilar modelos de comprensión.

Restricciones del conjunto de datos

  • Mínimo de peticiones: 100

  • Tamaño máximo de archivo: 2 GB

  • Longitud máxima de línea: 180 KB

  • Formato de archivo: solo JSONL

Ejecute el siguiente comando para cargar los datos de entrada.

aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive

Fórmula de aumento de datos

Puede obtener la receta de destilación en el repositorio de SageMaker HyperPod recetas. La fórmula de destilación se encuentra en el directorio: recipes-collection/recipes/fine-tuning/nova. El proceso de aumento de datos se controla mediante un archivo de configuración YAML. A continuación se muestra una explicación detallada de cada parámetro. Todos los campos son obligatorios.

Parámetro Description (Descripción)
name (nombre)

Un nombre descriptivo para su trabajo de entrenamiento. Esto ayuda a identificar su trabajo en elConsola de administración de AWS.

distillation_data

Habilita el trabajo de destilación de datos, no modifique este campo.

maxNumberOfIndicaciones

El número máximo de peticiones en el conjunto de datos.

maxResponseLength

La longitud máxima de respuesta por peticiones (tokens).

maxInputFileSizeInGB

El tamaño máximo del archivo de entrada (en GB).

maxLineLengthEn KB

El tamaño máximo de una sola línea del archivo de entrada (en KB).

maxStudentModelFineTuningContextLengthInTokens

El tamaño máximo de la ventana de contexto (tokens) para el modelo aprendiz. El valor no debe superar la capacidad del modelo aprendiz. Puede establecer este valor en 32 000 o 64 000 en función de la capacidad del modelo aprendiz.

teacherModelId

Al configurar el ID del modelo instructor, seleccione una de estas dos opciones:

  • Para Amazon Nova Premier: «us.amazon. nova-premier-v1:0 "para la región IAD. Nota: Esto solo está disponible en la región de la IAD.

  • Para Amazon Nova Pro: «us.amazon. nova-pro-v1:0 "para la región IAD y «eu.amazon». nova-pro-v1:0 "para la región ARN.

temperature

Controla la aleatoriedad de las respuestas (se recomienda 0,7 para mantener el equilibrio).

top_p

Umbral de probabilidad acumulada para el muestreo de tokens (se recomienda 0,9).

customer_bucket

Cubo de input/output datos de Amazon S3.

kms_key

AWS KMSclave para cifrar la salida en S3. La inferencia por lotes de Bedrock la necesitaba para almacenar la salida devuelta por el trabajo de inferencia.

Limitación

Para un modelo instructor como Nova Premier: solo se admite en la región de la IAD (us-east-1) debido a que la inferencia en lotes de Amazon Bedrock no está disponible en la región ARN (eu-north-1).

prácticas recomendadas

Preparación de datos

  • Incluya 100 ejemplos etiquetados de alta calidad para guiar el modelo instructor

  • Elimine las etiquetas de mala calidad antes de enviarlas

  • Siga las prácticas recomendadas para peticiones de comprensión de textos

  • Pruebe las peticiones con el modelo instructor antes de iniciar la destilación

Selección de modelo

  • Utilice Nova Pro como instructor para casos de uso general

  • Considere Nova Premier para obtener conocimientos de dominio especializados

  • Elija el modelo aprendiz en función de los requisitos de latencia y costo

Optimización del rendimiento

  • Comience con la temperatura recomendada (0,7) y top_p (0.9)

  • Valide la calidad aumentada de los datos antes del refinamiento

  • Siga las instrucciones de Selección de hiperparámetros para ajustar los hiperparámetros

Comienzo de un trabajo con PySDK

En el siguiente ejemplo de cuaderno se muestra cómo realizar un trabajo de SageMaker formación para la destilación. Para obtener más información, consulte Utilizar un estimador de SageMaker IA para ejecutar un trabajo de formación.

import os import sagemaker,boto3 from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # SETUP job_name = <Your_job_name> # Must be unique for every run input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file output_s3_uri = <S3 URI to your output bucket> + job_name image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances instance_count = 1 # Must be 1, do not change role_arn = <IAM role to execute the job with> recipe_path = <Local path to your recipe> # Execution estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) # The keys must be "train". estimator.fit(inputs={"train": trainingInput})

CloudWatch registros

Los registros están disponibles en Amazon CloudWatch en el grupo de /aws/sagemaker/TrainingJobs registros de suCuenta de AWS. Verá un archivo de registro por host utilizado para su trabajo de entrenamiento.

Entrenamiento correcto

Si el trabajo de entrenamiento se ha realizado correctamente, verá el mensaje de registro "Training is complete" al final del registro.

El bucket de salida especificado contendrá los siguientes archivos:

  • distillation_data/manifest.json: contiene la ubicación de los datos aumentados. Puede utilizar este conjunto de datos para iniciar un trabajo de refinamiento de Amazon Nova. Solo se admite el entrenamiento de SFT con este conjunto de datos.

    { "distillation_data": "s3://customer_escrow_bucket/job_id/distillation_data/" }
  • distillation_data/sample_training_data.jsonl: este archivo JSONL contiene 50 muestras de datos aumentados para obtener una vista previa que le ayudará a determinar la calidad de los datos.

  • distillation_data/training_config.json: este archivo contiene los hiperparámetros recomendados para los trabajos de refinamiento de Amazon Nova. A continuación se muestra un ejemplo de un archivo:

    { "epochCount": 5, "learningRate": 1e-05, "batchSize": 1, "learningRateWarmupSteps": 1 }

Validación de la calidad de los datos aumentados

Antes de proceder al refinamiento, es fundamental validar la calidad de los datos aumentados:

  1. Revise el archivo sample_training_data.jsonl en el bucket de salida. Este archivo contiene 50 muestras aleatorias del conjunto de datos aumentado.

  2. Inspeccione manualmente estas muestras para comprobar su relevancia, coherencia y alineación con su caso de uso.

  3. Si la calidad no cumple sus expectativas, es posible que deba ajustar los datos de entrada o los parámetros de destilación y volver a ejecutar el proceso de aumento de datos.

Una vez que se complete el aumento de datos, la segunda fase consiste en ajustar el modelo de los estudiantes con Amazon. SageMaker HyperPod Para obtener más información, consulte Refinamiento supervisado (SFT).

En la fórmula de entrenamiento de SFT, puede pasar la ruta del conjunto de datos devuelta del trabajo anterior.

data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"

También se anula la configuración de entrenamiento recomendada generada en el paso anterior.

Limitaciones

  • Solo es compatible con la técnica de refinamiento de SFT Nova en estos datos aumentados.

  • Solo es compatible con la técnica de ajuste fino de SFT Nova en Amazon. SageMaker HyperPod

  • No es compatible con la destilación multimodal.

  • No es compatible con modelos instructor personalizados.