Destilação do Amazon Nova - Amazon Nova

Destilação do Amazon Nova

Este guia de início rápido ajuda você a começar a usar a destilação de modelos do Amazon Nova usando o ajuste fino supervisionado (SFT) no SageMaker AI.

A destilação de modelos é um método do SageMaker AI que transfere conhecimento de modelos grandes e avançados para modelos menores e eficientes. Com os modelos do Amazon Nova, um modelo maior "instrutor" (como o Amazon Nova Pro) transfere seus recursos para um modelo menor "aprendiz" (como o Amazon Nova Lite ou o Amazon Nova Micro). Isso cria um modelo personalizado que mantém a alta performance usando menos recursos.

Componentes principais

O processo de destilação envolve principalmente dois tipos de modelo:

Os modelos instrutores servem como fonte de conhecimento e incluem:

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

  • (amazon.nova-premier-v1:0)

Os modelos aprendizes recebem e implementam o conhecimento:

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

  • Amazon Nova Micro (amazon.nova-micro-v1:0:128k)

  • Amazon Nova Pro (amazon.nova-pro-v1:0:300k): disponível somente ao usar o modelo instrutor.

Casos de uso

O modo de destilação é particularmente útil quando:

  • Sua aplicação tem requisitos rígidos de latência, custo e precisão.

  • Você precisa de um modelo personalizado para tarefas específicas, mas não tem dados de treinamento rotulados de alta qualidade suficientes.

  • Você deseja igualar o desempenho dos modelos avançados e, ao mesmo tempo, manter a eficiência dos modelos menores.

Pré-requisitos

  • Conta da AWS com acesso aos modelos do Amazon Nova e cotas de serviço apropriadas (no mínimo seis instâncias P5 e 1 R5).

  • Perfil do IAM com permissões para tarefas de treinamento do SageMaker.

  • Um bucket do Amazon S3 para armazenar os dados de saída.

Configuração do aumento de dados

A fase de aumento de dados usa tarefas de treinamento do SageMaker para gerar dados de treinamento de alta qualidade usando o modelo instrutor. Esta seção detalha o processo de configuração e os requisitos.

perfil do IAM

Para criar perfis do IAM e anexar políticas, consulte a seção Criar funções e anexar políticas (console). Se você usa a AWS CLI, siga as instruções em create-role e attach-role-policy. Para ter mais informações, consulte Como usar as funções de execução do SageMaker AI no Guia do Desenvolvedor do SageMaker AI.

A seguir são apresentados exemplos de para sua referência.

Criar um perfil de execução do SageMaker AI

O perfil é criado com uma relação de confiança que permite que o SageMaker AI e o Amazon Bedrock o assumam. Isso permite que esses serviços atuem em seu nome ao executar trabalhos de inferência em lote.

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

Anexar as políticas necessárias

# 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

Anexe a política em linha a seguir ao perfil de execução do cliente necessário para o contêiner de destilação.

  • Permissões do AWS KMS: permite que o perfil interaja com o AWS Key Management Service, necessário para acessar recursos criptografados ou gerenciar chaves de criptografia.

  • IAM:PassRole: essa permissão geralmente é necessária quando um serviço precisa transmitir esse perfil para outro serviço, um padrão comum em integrações de serviços da AWS.

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": "*" } ] }

Configuração da Amazon VPC

Para criar a configuração da Amazon VPC para tarefas de treinamento do SageMaker usando o Console de gerenciamento da AWS, siga as instruções em Configurar sua VPC privada para o treinamento do SageMaker AI (console).

Criar uma 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)

Criar um grupo de segurança

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)

Criar endpoints da VPC para os serviços abaixo

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 endpoint:

  • Selecione a Distillation-VPC.

  • Escolha as sub-redes privadas.

  • Selecione o grupo de segurança Distillation-SG.

Chaves do AWS KMS

Ao trabalhar com a inferência em lote do Amazon Bedrock, é necessária uma chave do AWS KMS para segurança e conformidade dos dados. Os trabalhos de inferência em lote do Amazon Bedrock exigem que os buckets de entrada e saída do Amazon S3 sejam criptografados com chaves do AWS KMS para garantir a proteção de dados em repouso.

Crie uma chave do KMS usando a AWS CLI com este comando:

# Create KMS key aws kms create-key \ --description "KMS key for Nova distillation"

O comando exibirá as principais informações, incluindo o ARN. Resultado do exemplo:

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

Salve o ARN da chave do KMS da saída, pois você precisará dele para criar o bucket do Amazon S3 na próxima seção.

Bucket do Amazon S3

Você precisa de dois tipos de armazenamento no Amazon S3. O bucket do Amazon S3 gerenciado pelo cliente armazena seus dados de entrada e arquivos de saída manifest.json. Você cria e gerencia esse bucket e pode usar um único bucket para entrada e saída. Esse bucket deve ser configurado com criptografia do KMS, pois armazenará dados de saída sensíveis e será usado por trabalhos de inferência em lote do Amazon Bedrock. O Amazon Bedrock exige buckets criptografados pelo KMS para processar trabalhos de inferência em lote.

O bucket do Amazon S3 gerenciado pelo serviço armazena os pesos do modelo. Um bucket do Amazon S3 gerenciado pelo serviço é criado automaticamente durante sua primeira tarefa de treinamento. Ele tem controles de acesso restritos com caminhos específicos acessíveis somente por meio de arquivos de manifesto.

Para criar um bucket em uma Região da AWS específica, use o comando create-bucket da CLI.

Exemplo de comando para criar um bucket do Amazon S3 com criptografia do AWS KMS. Substitua {kms_key_arn} pelo ARN da chave do AWS KMS. Você precisará criar uma chave do AWS KMS primeiro, caso ainda não tenha criado.

aws s3api create-bucket \ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{kms_key_arn}" }, "BucketKeyEnabled": true } ] }'

Iniciar uma tarefa de treinamento do SageMaker

Antes de iniciar uma tarefa de treinamento, prepare seus dados.

Requisito de formato de dados: o conjunto de dados de entrada deve estar no formato JSONL. Cada linha deve conter uma amostra no formato inverso. Para ter mais informações, consulte Preparar dados para destilar modelos de compreensão.

Restrições de conjunto de dados

  • Prompts mínimos: 100.

  • Tamanho máximo do arquivo: 2 GB.

  • Tamanho máximo da linha: 180 KB.

  • Formato de arquivo: somente JSONL.

Para fazer upload dos dados de entrada, execute o comando a seguir.

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

Fórmula de aumento de dados

Você pode obter a fórmula de destilação no repositório de fórmulas. A fórmula de destilação está no diretório recipes-collection/recipes/fine-tuning/nova. O processo de aumento de dados é controlado por um arquivo de configuração YAML. Abaixo é apresentada uma explicação detalhada de cada parâmetro. Todos os campos são obrigatórios.

Parameter Descrição
name

Um nome descritivo para sua tarefa de treinamento. Isso ajuda a identificar sua tarefa no Console de gerenciamento da AWS.

distillation_data

Ativa o trabalho de destilação de dados. Não modifique esse campo.

maxNumberOfPrompts

O número máximo de prompts no conjunto de dados.

maxResponseLength

O comprimento máximo de resposta por prompt (tokens).

maxInputFileSizeInGB

O tamanho máximo do arquivo de entrada (em GB).

maxLineLengthInKB

O tamanho máximo de uma única linha no arquivo de entrada (em KB).

maxStudentModelFineTuningContextLengthInTokens

O tamanho máximo da janela de contexto (tokens) para o modelo aprendiz. O valor não deve exceder a capacidade do modelo aprendiz. Você pode definir esse valor como 32 mil ou 64 mil com base na capacidade do modelo aprendiz.

teacherModelId

Ao definir o ID do modelo instrutor, selecione entre os dois abaixo:

  • Para o Amazon Nova Premier: “us.amazon.nova-premier-v1:0” para a região IAD. Observação: essa opção só está disponível na região IAD.

  • Para o Amazon Nova Pro: “"us.amazon.nova-pro-v1:0” para a região IAD e “eu.amazon.nova-pro-v1:0” para a região do ARN.

temperatura

Controla a aleatoriedade da resposta (recomenda-se 0,7 para equilíbrio).

top_p

Limite de probabilidade cumulativa para a amostragem de tokens (recomenda-se 0,9).

customer_bucket

Bucket do Amazon S3 para dados entrada e saída.

kms_key

Chave do AWS KMSpara criptografar a saída no S3. Isso é exigido pela inferência em lote do Bedrock para armazenar a saída exibida pelo trabalho de inferência.

Limitação

Para modelo instrutor como o Nova Premier: compatível apenas com a região IAD (us-east-1), pois a inferência em lote do Amazon Bedrock não está disponível na região do ARN (eu-north-1).

Práticas recomendadas

Preparação de dados

  • Inclua cem exemplos rotulados de alta qualidade para orientar o modelo instrutor.

  • Remova rótulos de baixa qualidade antes do envio.

  • Siga as práticas recomendadas para criar prompts de compreensão de texto.

  • Teste prompts com o modelo instrutor antes de iniciar a destilação.

Seleção de modelo

  • Use o Nova Pro como instrutor para casos de uso geral.

  • Considere o Nova Premier para obter conhecimento especializado do domínio.

  • Escolha o modelo aprendiz com base nos requisitos de latência e custo.

Otimização de desempenho

  • Comece com a temperatura recomendada (0,7) e top_p (0,9).

  • Valide a qualidade aumentada dos dados antes de fazer o ajuste fino.

  • Siga as diretrizes em Selecionar hiperparâmetros para ajustar os hiperparâmetros.

Iniciar um trabalho com o PySDK

O exemplo de caderno a seguir demonstra como executar uma tarefa de treinamento do SageMaker para destilação. Para ter mais informações, consulte Usar um estimador do SageMaker AI para executar uma tarefa de treinamento.

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 Logs

Os logs estão disponíveis no Amazon CloudWatch sob o grupo de logs /aws/sagemaker/TrainingJobs em sua Conta da AWS. Você verá um arquivo de log por host usado para sua tarefa de treinamento.

Treinamento bem-sucedido

Para uma tarefa de treinamento bem-sucedida, você verá a mensagem de log “Training is complete” no final do log.

O bucket de saída contém os seguintes arquivos:

  • distillation_data/manifest.json: contém a localização dos dados aumentados. Você pode usar esse conjunto de dados para iniciar uma tarefa de ajuste fino do Amazon Nova. Somente o treinamento de SFT é permitido com esse conjunto de dados.

    { "distillation_data": "s3://customer_escrow_bucket/job_id/distillation_data/" }
  • distillation_data/sample_training_data.jsonl: esse arquivo JSONL contém cinquenta amostras de dados aumentados para visualização, para ajudar você a determinar a qualidade dos dados.

  • distillation_data/training_config.json: esse arquivo contém hiperparâmetros recomendados para tarefas de ajuste fino do Amazon Nova. O seguinte é um arquivo de exemplo:

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

Validar a qualidade dos dados aumentados

Antes de prosseguir com o ajuste fino, é crucial validar a qualidade dos dados aumentados:

  1. Analise o arquivo sample_training_data.jsonl no bucket de saída. Esse arquivo contém cinquenta amostras aleatórias do conjunto de dados aumentado.

  2. Inspecione manualmente essas amostras em busca de relevância, coerência e alinhamento com seu caso de uso.

  3. Se a qualidade não atender às suas expectativas, talvez seja necessário ajustar os dados de entrada ou os parâmetros de destilação e executar novamente o processo de aumento de dados.

Depois que o aumento dos dados é concluído, a segunda fase envolve o ajuste fino do modelo aprendiz usando o Amazon SageMaker HyperPod. Para obter mais informações, consulte Ajuste fino supervisionado (SFT).

Na fórmula de treinamento de SFT, você pode transmitir o caminho do conjunto de dados exibido da tarefa anterior.

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

Além disso, substitua a configuração de treinamento recomendada gerada na etapa anterior.

Limitações

  • Só permite a técnica de ajuste fino supervisionado (SFT) do Nova nesses dados aumentados.

  • Não é possível usar destilação multimodal.

  • Não é possível usar modelos instrutores personalizados.