View a markdown version of this page

Ajustar o Nova 2.0 - Amazon Nova

Ajustar o Nova 2.0

Pré-requisitos

Antes de iniciar uma tarefa de treinamento, observe o seguinte:

  • Os buckets do Amazon S3 para armazenar seus dados de entrada e as saídas das tarefas de treinamento. Você pode usar um bucket para ambos ou buckets separados para cada tipo de dados. Seus buckets devem estar na mesma Região da AWS onde você cria todos os outros recursos para treinamento. Para ter mais informações, consulte Criar um bucket de uso geral.

  • Um perfil do IAM com permissões para executar uma tarefa de treinamento. Você deve anexar uma política do IAM com AmazonSageMakerFullAccess. Para obter mais informações, consulte Como usar os perfis de execução do SageMaker AI.

  • Fórmulas básicas do Amazon Nova, consulte Obter fórmulas do Amazon Nova.

O que é SFT?

O ajuste fino supervisionado (SFT) treina um modelo de linguagem usando pares de entrada-saída rotulados. O modelo aprende com exemplos de demonstração que consistem em prompts e respostas, refinando suas capacidades para se alinhar a tarefas específicas, instruções ou comportamentos desejados.

Preparação de dados

Visão geral

Os dados do Nova 2.0 SFT usam o mesmo formato de API Converse do Nova 1.0, com a adição de campos de conteúdo de raciocínio opcionais. Para obter as especificações completas do formato, consulte:

Recursos compatíveis

  • Tipos de entrada: texto, imagem ou vídeo em blocos de conteúdo do usuário

  • Conteúdo do assistente: respostas somente em texto e conteúdo de raciocínio

  • Composição do conjunto de dados: deve ser homogênea. Escolha uma destas opções:

    • Turnos somente com texto

    • Turnos de texto e imagem

    • Turnos de texto e vídeo (compatível com compreensão do documento)

Importante

Você não pode misturar imagens e vídeos no mesmo conjunto de dados ou em turnos diferentes.

Limitações atuais

  • Conteúdo de raciocínio multimodal: embora o formato Converse ofereça suporte a conteúdo de raciocínio baseado em imagem, o Nova 2.0 SFT é compatível somente com conteúdo de raciocínio baseado em texto no campo reasoningText.

  • Conjuntos de validação: você não pode fornecer um conjunto de dados de validação para SFT com o Nova 2.0. Se você fornecer um conjunto de dados de validação, ele será ignorado durante o treinamento. Essa limitação se aplica tanto aos envios de trabalhos programáticos quanto baseados na interface do usuário.

Formatos de mídia compatíveis

  • Imagens: PNG, JPEG, GIF

  • Vídeos: MOV, MKV, MP4

Exemplos de formato de dados

Text-only (Nova 1.0 compatible)
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "text": "The closest country is New Zealand" } ] } ] }
Text with reasoning (Nova 2.0)
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to use my world knowledge of geography to answer this question" } } }, { "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea." } ] } ] }
Image + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } }, { "text": "Which country is highlighted in the image?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will determine the highlighted country by examining its location on the map and using my geographical knowledge" } } }, { "text": "The highlighted country is New Zealand" } ] } ] }
Video + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } }, { "text": "What is shown in this video?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will analyze the video content to identify key elements" } } }, { "text": "The video shows a map with New Zealand highlighted" } ] } ] }

Chamada de ferramentas

O Nova 2.0 SFT é compatível com modelos de treinamento em padrões de chamada de ferramentas, permitindo que seu modelo aprenda quando e como invocar ferramentas ou funções externas.

Formato de dados para chamada de ferramentas

Os dados de treinamento de chamada de ferramentas incluem uma seção toolConfig que define as ferramentas disponíveis, além de turnos de conversa que demonstram os padrões de uso da ferramenta.

Exemplo de entrada

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

Requisitos de chamada de ferramentas

Ao criar dados de treinamento de chamada de ferramentas, siga estes requisitos:

Requisito Descrição
Posicionamento do ToolUse O ToolUse deve aparecer somente nos turnos do assistente
Posicionamento do ToolResult O ToolResult deve aparecer somente nos turnos do usuário
Formato do ToolResult O ToolResult deve ser somente texto ou JSON; outras modalidades não são compatíveis com os modelos Nova
Formato do inputSchema O inputSchema dentro no toolSpec deve ser um objeto de esquema JSON válido
Correspondência do toolUseId Cada ToolResult deve fazer referência a um toolUseId válido de um assistente ToolUse anterior, com cada toolUseId usado exatamente uma vez por conversa

Observações importantes

  • Garanta que suas definições de ferramentas sejam consistentes em todas as amostras de treinamento

  • O modelo aprende padrões de invocação de ferramentas das demonstrações que você fornece

  • Inclua diversos exemplos de quando usar cada ferramenta e de quando não usá-las

Compreensão do documento

O Nova 2.0 SFT é compatível com o treinamento em tarefas baseadas em documentos, permitindo que seu modelo aprenda a analisar e responder a perguntas sobre documentos PDF.

Formato de dados para compreensão do documento

Os dados de treinamento de compreensão de documentos incluem referências de documentos nos blocos de conteúdo do usuário, com o modelo aprendendo a extrair e raciocinar sobre o conteúdo do documento.

Exemplo de entrada

{ { "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to find the relevant section in the document to answer the question." } } }, { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] } }

Limitações de compreensão de documentos

Limitação Detalhes
Formato compatível Somente arquivos PDF
Tamanho máximo do documento 10 MB
Combinação de modalidades Um exemplo pode ter documentos e texto, mas não pode ter documentos combinados com outras modalidades (imagens, vídeos)

Práticas recomendadas da compreensão de documentos

  • Certifique-se de que os documentos estejam claramente formatados e que o texto possa ser extraído

  • Forneça diversos exemplos que abrangem diferentes tipos de documentos e formatos de perguntas

  • Inclua conteúdo de raciocínio para ajudar o modelo a aprender padrões de análise de documentos

Compreensão de vídeos

O Nova 2.0 SFT é compatível com o treinamento em tarefas baseadas em vídeo, permitindo que seu modelo aprenda a analisar e responder a perguntas sobre conteúdo de vídeo.

Formato de dados para a compreensão de vídeos

Os dados de treinamento de compreensão de vídeos incluem referências de vídeo nos blocos de conteúdo do usuário, com o modelo aprendendo a extrair informações e raciocinar sobre o conteúdo do vídeo.

Exemplo de entrada

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to find the relevant section in the video to answer the question." } } }, { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }

Limitações de compreensão de vídeo

Limitação Detalhes
Tamanho máximo do vídeo 50 MB
Duração máxima do vídeo 15 minutos
Vídeos por exemplo É permitido somente um vídeo por exemplo. Inexistência de suporte para vários vídeos no mesmo exemplo
Combinação de modalidades Um exemplo pode ter vídeo e texto, mas não pode ter vídeo combinado com outras modalidades (imagens, documentos)

Formatos de vídeo compatíveis

  • MOV

  • MKV

  • MP4

Práticas recomendadas de compreensão de vídeos

  • Mantenha os vídeos concisos e focados no conteúdo relevante para sua tarefa

  • Certifique-se de que a qualidade do vídeo seja suficiente para que o modelo extraia informações significativas

  • Forneça perguntas claras que façam referência a aspectos específicos do conteúdo do vídeo

  • Inclua diversos exemplos que abrangem diferentes tipos de vídeo e formatos de perguntas

Modos de raciocínio vs não raciocínio

Compreensão do conteúdo de raciocínio

O conteúdo de raciocínio (também chamado de encadeamento de pensamentos) captura as etapas intermediárias do pensamento do modelo antes de gerar uma resposta final. Na vez do assistant, use o campo reasoningContent para incluir esses rastros de raciocínio.

Como a perda é calculada

  • Com conteúdo de raciocínio: a perda de treinamento inclui tokens de raciocínio e tokens de saída final

  • Conteúdo sem raciocínio: a perda de treinamento é calculada apenas com base nos tokens de saída final

Você pode incluir reasoningContent em vários turnos do assistente em conversas de vários turnos.

Diretrizes de formatação

  • Use texto simples para o conteúdo de raciocínio

  • Evite tags de marcação como <thinking> e </thinking>, a menos que sejam especificamente exigidas por sua tarefa

  • Garanta que o conteúdo do raciocínio seja claro e relevante para o processo de solução de problemas

Quando habilitar o modo de raciocínio

Defina reasoning_enabled: true em sua configuração de treinamento quando:

  • Seus dados de treinamento tiverem tokens de raciocínio

  • Você quiser que o modelo gere tokens de pensamento antes de produzir as saídas finais

  • Você precisar melhorar o desempenho em tarefas complexas de raciocínio

É permitido treinar o Nova em um conjunto de dados sem raciocínio com reasoning_enabled = true. No entanto, isso pode fazer com que o modelo perca suas capacidades de raciocínio, pois o Nova aprende principalmente a gerar as respostas presentes nos dados sem aplicar o raciocínio. Se você deseja treinar o Nova em um conjunto de dados sem raciocínio, mas ainda espera tê-lo durante a inferência, você pode desabilitar o raciocínio durante o treinamento (reasoning_enabled = false), mas habilitá-lo para inferência. Embora essa abordagem permita que o raciocínio seja usado no momento da inferência, ela não garante um melhor desempenho em comparação com a inferência sem raciocínio. No geral, habilite o raciocínio para o treinamento e a inferência ao usar conjuntos de dados de raciocínio, e desabilite-o para ambos ao usar conjuntos de dados sem raciocínio.

Defina reasoning_enabled: false quando:

  • Seus dados de treinamento não tiverem tokens de raciocínio

  • Você estiver treinando em tarefas simples que não se beneficiam de etapas de raciocínio explícito

  • Você quiser otimizar a velocidade e reduzir o uso de tokens

Geração de dados de raciocínio

Se seu conjunto de dados não tiver rastros de raciocínio, você poderá criá-los usando um modelo capaz de raciocinar, como o Nova Premier. Forneça seus pares de entrada-saída ao modelo e capture seu processo de raciocínio para criar um conjunto de dados com raciocínio aumentado.

Uso de tokens de raciocínio para treinamento

Ao treinar com o modo de raciocínio habilitado, o modelo aprende a separar o raciocínio interno da resposta final. O processo de treinamento:

  • Organiza os dados como triplos: entrada, raciocínio e resposta

  • Otimiza usando a perda de previsão padrão do próximo token tanto dos tokens de raciocínio quanto dos tokens de resposta

  • Incentiva o modelo a raciocinar internamente antes de gerar respostas

Conteúdo de raciocínio eficaz

O conteúdo de raciocínio de alta qualidade deve incluir:

  • Pensamentos e análises intermediários

  • Deduções lógicas e etapas de inferência

  • Abordagens de solução de problemas passo a passo

  • Conexões explícitas entre as etapas e conclusões

Isso ajuda o modelo a desenvolver a capacidade de “pensar antes de responder”.

Diretrizes de preparação de conjuntos de dados

Tamanho e qualidade

  • Tamanho recomendado: 2 mil a 10 mil exemplos

  • Mínimo de exemplos: 200

  • Prioridade: qualidade acima da quantidade. Garanta exemplos precisos e com anotação de qualidade

  • Alinhamento de aplicações: o conjunto de dados deve refletir de perto seus casos de uso de produção

Diversidade

Inclua diversos exemplos que:

  • Abranjam toda a gama de entradas esperadas

  • Representem diferentes níveis de dificuldade

  • Incluam variações e casos de borda

  • Evitem o sobreajuste a padrões limitados

Formatação de saída

Especifique claramente o formato de saída desejado nas respostas do assistente:

  • estruturas JSON

  • Tabelas

  • Formato CSV

  • Formatos personalizados específicos para sua aplicação

Conversas em vários turnos

Para conjuntos de dados de várias turnos, lembre-se:

  • A perda é calculada somente nos turnos do assistente, não nos turnos do usuário

  • Cada resposta do assistente deve ser formatada corretamente

  • Mantenha a consistência nos turnos das conversas

Lista de verificação de qualidade

  • Tamanho suficiente do conjunto de dados (2 mil a 10 mil exemplos)

  • Diversos exemplos que abrangem todos os casos de uso

  • Formatação de saída clara e consistente

  • Rótulos e anotações precisos

  • Representativo dos cenários de produção

  • Livre de contradições ou ambiguidades

Carregar seus dados

Os conjuntos de dados devem ser enviados para um bucket que possa ser acessado pelas tarefas de treinamento do SageMaker. Para obter mais informações sobre como configurar as permissões corretas, consulte Pré-requisitos.

Início de uma tarefa de treinamento

Seleção de hiperparâmetros e atualização da fórmula

A configuração do Nova 2.0 é basicamente a mesma do Nova 1.0. Depois que os dados de entrada forem enviados para o S3, use a fórmula das Fórmulas do SageMaker HyperPod na pasta Ajuste fino. Para o Nova 2.0, confira a seguir alguns dos principais hiperparâmetros que você pode atualizar com base no caso de uso. O que se segue é um exemplo da fórmula de SFT PEFT do Nova 2.0. Para o URI da imagem do contêiner, use 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-V2-latest para executar um trabalho de ajuste fino de SFT.

Use a v2.254.1 do SageMaker AI PySDK para obter compatibilidade total com o treinamento do Nova. A atualização do SDK para a v3.0 resultará em alterações disruptivas. A compatibilidade com a v3 do SageMaker AI PySDK estará disponível em breve.

Exemplo de entrada

!pip install sagemaker==2.254.1
run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0

A fórmula também contém basicamente os mesmos hiperparâmetros do Nova 1.0. Os principais hiperparâmetros são:

  • max_steps: número de etapas para as quais você deseja executar o trabalho. Geralmente, para uma época (uma execução em todo o conjunto de dados), o número de etapas = número de amostras de dados/tamanho global do lote. Quanto maior o número de etapas e menor o tamanho do lote global, mais tempo o trabalho levará para ser executado.

  • reasoning_enabled: controla o modo de raciocínio para seu conjunto de dados. Opções:

    • true: habilita o modo de raciocínio (equivalente ao raciocínio elevado)

    • false: desabilita o modo de raciocínio

    Observação: para o SFT, não há controle granular sobre os níveis de esforço de raciocínio. A configuração reasoning_enabled: true habilita a capacidade total de raciocínio.

  • peft.peft_scheme: definir como “lora” habilita o ajuste fino baseado em PEFT. Defini-lo como nulo (sem aspas) habilita o ajuste fino de full-rank.

Iniciar a tarefa de treinamento

from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
nota

A aprovação de um conjunto de dados de validação não é compatível com o ajuste fino supervisionado do Nova 2.0.

Para começar a tarefa:

  • Atualize a fórmula com seus caminhos e hiperparâmetros do conjunto de dados

  • Execute as células especificadas no caderno para enviar a tarefa de treinamento

O caderno gerencia o envio de tarefas e fornece o rastreamento de status.