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á.
Ajuste 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. Certifique-se de que seus buckets estejam no mesmo Região da AWS local em que 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 funções SageMaker de execução. -
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 solicitações e respostas, refinando seus recursos para se alinhar a tarefas, instruções ou comportamentos desejados específicos.
Preparação de dados
Visão geral do
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
-
Viradas de texto e imagem
-
Transformações de texto e vídeo (suporta a 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 suporta somente 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 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
Chamada de ferramentas
O Nova 2.0 SFT oferece suporte a 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 toolConfig seção que define as ferramentas disponíveis, além de turnos de conversa que demonstram os padrões de uso da ferramenta.
Entrada de amostra
{ "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 | Description |
|---|---|
| ToolUse colocação | ToolUse deve aparecer somente nos turnos de assistente |
| ToolResult colocação | ToolResult deve aparecer somente nos turnos do usuário |
| ToolResult formato | ToolResult deve ser somente texto ou JSON. Outras modalidades não são suportadas para modelos Nova |
| Formato do esquema de entrada | O InputSchema dentro do ToolSpec deve ser um objeto de esquema JSON válido |
| toolUseId combinando | Cada um ToolResult deve fazer referência a um válido toolUseId de um assistente anterior ToolUse, com cada um 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 a partir das demonstrações que você fornece
-
Inclua diversos exemplos de quando usar cada ferramenta e quando não usar ferramentas
Compreensão do documento
O Nova 2.0 SFT oferece suporte ao 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.
Entrada de amostra
{ "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": [ { "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?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }
Limitações de compreensão de documentos
| Limitação | Detalhes |
|---|---|
| Formato suportado | Somente arquivos PDF |
| Tamanho máximo do documento | 10 MB |
| Mistura de modalidades | Uma amostra pode ter documentos e texto, mas não pode ter documentos misturados com outras modalidades (imagens, vídeos) |
Práticas recomendadas para 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 oferece suporte ao 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 compreensão de vídeo
Os dados de treinamento de compreensão em vídeo 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.
Entrada de amostra
{ "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": [ { "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?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }
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 amostra | Somente um vídeo é permitido por amostra. Não há suporte para vários vídeos na mesma amostra |
| Mistura de modalidades | Uma amostra 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 para compreensão de vídeo
-
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 versus não raciocínio
Entendendo o conteúdo de raciocínio
O conteúdo de raciocínio (também chamado chain-of-thought) captura as etapas intermediárias do pensamento do modelo antes de gerar uma resposta final. assistantPor sua vez, use o reasoningContent campo para incluir esses traços 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 finais
Você pode incluir reasoningContent vários turnos de assistente em conversas de vários turnos.
Diretrizes de formatação
-
Use texto simples para raciocinar o conteúdo
-
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 ativar o modo de raciocínio
Defina reasoning_enabled: true em sua configuração de treinamento quando:
-
Seus dados de treinamento têm tokens de raciocínio
-
Você quer que o modelo gere tokens de pensamento antes de produzir os resultados finais
-
Você precisa melhorar o desempenho em tarefas complexas de raciocínio
É permitido treinar o Nova em um conjunto de dados não fundamentadoreasoning_enabled = true. No entanto, isso pode fazer com que o modelo perca suas capacidades de raciocínio, pois a Nova aprende principalmente a gerar as respostas apresentadas nos dados sem aplicar o raciocínio. Se você deseja treinar o Nova em um conjunto de dados sem raciocínio, mas ainda espera raciocínio durante a inferência, você pode desativar 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. Em geral, ative o raciocínio para treinamento e inferência ao usar conjuntos de dados de raciocínio e desative-o para ambos ao usar conjuntos de dados sem raciocínio.
Defina reasoning_enabled: false quando:
-
Seus dados de treinamento não têm fichas de raciocínio
-
Você está treinando em tarefas simples que não se beneficiam de etapas de raciocínio explícito
-
Você deseja otimizar a velocidade e reduzir o uso de tokens
Gerando dados de raciocínio
Se seu conjunto de dados não tiver traços de raciocínio, você poderá criá-los usando um modelo capaz de raciocinar, como o Nova Premier. Forneça seus pares de entrada e saída ao modelo e capture seu processo de raciocínio para criar um conjunto de dados com raciocínio aumentado.
Usando tokens de raciocínio para treinamento
Ao treinar com o modo de raciocínio ativado, 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
-
Step-by-step abordagens de resolução de problemas
-
Conexões explícitas entre 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.000 a 10.000 amostras
-
Amostras mínimas — 200
-
Prioridade — Qualidade acima da quantidade. Garanta que os exemplos sejam precisos e bem anotados
-
Alinhamento de aplicativos — o conjunto de dados deve refletir de perto seus casos de uso de produção
Diversidade
Inclua diversos exemplos que:
-
Cubra toda a gama de entradas esperadas
-
Representa diferentes níveis de dificuldade
-
Inclua casos extremos e variações
-
Evite o ajuste excessivo a padrões estreitos
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 seu aplicativo
Conversas em vários turnos
Para conjuntos de dados de várias voltas, 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 em todos os turnos de conversa
Lista de verificação de qualidade
-
Tamanho suficiente do conjunto de dados (amostras de 2K-10K)
-
Diversos exemplos que abrangem todos os casos de uso
-
Formatação de saída clara e consistente
-
Etiquetas e anotações precisas
-
Representante dos cenários de produção
-
Livre de contradições ou ambigüidades
Carregar seus dados
Os conjuntos de dados devem ser enviados para um bucket que possa ser acessado por meio de trabalhos SageMaker de treinamento. Para obter informações sobre como definir as permissões corretas, consulte Pré-requisitos.
Começando um trabalho de treinamento
Seleção de hiperparâmetros e atualização da receita
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 receita do SageMaker Hyperpod Recipes
Use a v2.254.1 do SageMaker PySDK para compatibilidade estrita com o treinamento Nova. A atualização do SDK para a versão v3.0 resultará em alterações significativas. Support para v3 do SageMaker PySDK estará disponível em breve.
Entrada de amostra
!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 receita também contém basicamente os mesmos hiperparâmetros do Nova 1.0. Os hiperparâmetros notáveis são:
-
max_steps— O 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: ativa o modo de raciocínio (equivalente ao raciocínio elevado) -
false: Desativa o modo de raciocínio
Nota: Para o SFT, não há controle granular sobre os níveis de esforço de raciocínio. A configuração
reasoning_enabled: truepermite a capacidade total de raciocínio. -
-
peft.peft_scheme— Definir isso como “lora” permite o ajuste fino baseado em PEFT. Defini-lo como nulo (sem aspas) permite o ajuste fino do Full-Rank.
Comece o trabalho 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}" 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, 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 é suportada para o ajuste fino supervisionado do Nova 2.0.
Para começar o trabalho:
-
Atualize a receita com seus caminhos e hiperparâmetros do conjunto de dados
-
Execute as células especificadas no notebook para enviar o trabalho de treinamento
O notebook gerencia o envio de trabalhos e fornece rastreamento de status.