SFT no Nova 2.0
O Amazon Nova Lite 2.0 traz recursos aprimorados para ajuste fino supervisionado, incluindo modo de raciocínio avançado, melhor compreensão multimodal e tratamento de contexto estendido. O SFT no Nova 2.0 permite que você adapte esses recursos avançados aos seus casos de uso específicos, mantendo o desempenho superior do modelo em tarefas complexas.
Os principais recursos do SFT no Nova 2.0 incluem:
-
Suporte ao modo de raciocínio: treine modelos para gerar rastros de raciocínio explícitos antes das respostas finais para aprimorar as capacidades analíticas.
-
Treinamento multimodal avançado: ajuste a compreensão de documentos (PDF), a compreensão de vídeos e as tarefas baseadas em imagens com maior precisão.
-
Recursos de chamada de ferramentas: treine modelos para usar ferramentas externas e chamadas de funções de forma eficaz em fluxos de trabalho complexos.
-
Compatibilidade com contexto estendido: aproveite janelas de contexto mais longas com melhor estabilidade e precisão para aplicações com uso intensivo de documentos.
nota
Para obter mais informações sobre quais imagens de contêineres ou exemplos de fórmulas usar, acesse Fórmulas do Amazon Nova.
Tópicos
Confira abaixo um exemplo de fórmula para o SFT. Você pode encontrar essa fórmula e outras no repositório de fórmulas
run: name: my-full-rank-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # only and not compatible with SageMaker Training Jobs replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs) mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-full-rank-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-full-rank-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: ${oc.select:training_config.max_steps} # How many training steps the checkpoint will be saved save_top_k: 5 # Keep top K best checkpoints. Note supported only for 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 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "null" # Disable LoRA for PEFT
Seleção do modo de raciocínio (somente Nova 2.0)
O Amazon Nova 2.0 é compatível com o modo de raciocínio para recursos analíticos aprimorados:
-
Modo de raciocínio (habilitado):
-
Definir
reasoning_enabled: truena configuração de treinamento -
O modelo treina para gerar rastros de raciocínio antes das respostas finais
-
Melhora o desempenho em tarefas complexas de raciocínio
-
-
Modo sem raciocínio (desabilitado):
-
Definir
reasoning_enabled: falseou omitir o parâmetro (padrão) -
SFT padrão sem raciocínio explícito
-
Adequado para tarefas que não se beneficiam do raciocínio passo a passo
-
nota
-
Quando o raciocínio está habilitado, ele opera com alto esforço de raciocínio. Não há uma opção de baixo raciocínio para o SFT.
-
O conteúdo de raciocínio multimodal não é compatível com o SFT. O modo de raciocínio se aplica a entradas somente de texto.
É permitido treinar o Amazon 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 Amazon Nova aprende primariamente a gerar as respostas apresentadas nos dados sem aplicar o raciocínio.
Se estiver treinando o Amazon Nova em um conjunto de dados sem raciocínio, mas ainda quiser usar o raciocínio durante a inferência:
-
Desabilite o raciocínio durante o treinamento (
reasoning_enabled: false) -
Habilite o raciocínio posteriormente durante a inferência
Embora essa abordagem permita o raciocínio no momento da inferência, ela não garante um melhor desempenho em comparação com a inferência sem raciocínio.
Prática recomendada: habilite o raciocínio para treinamento e inferência ao usar conjuntos de dados de raciocínio, e desabilite-o para ambos ao usar conjuntos de dados sem raciocínio.
nota
Para obter mais informações sobre quais imagens de contêineres ou exemplos de fórmulas usar, acesse Fórmulas do Amazon Nova.
Formato de dados de chamada de ferramentas
O SFT é compatível com modelos de treinamento para usar ferramentas (chamada de função). Confira abaixo um exemplo de formato de entrada para chamada de ferramentas:
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?" } ] } ] }
Considerações importantes sobre dados de chamada de ferramentas:
-
O ToolUse deve aparecer somente nos turnos do assistente
-
O ToolResult deve aparecer somente nos turnos do usuário
-
O ToolResult deve ser somente texto ou JSON; atualmente, outras modalidades não são compatíveis com os modelos do Amazon Nova
-
O inputSchema dentro no toolSpec deve ser um objeto de esquema JSON válido
-
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
nota
Para obter mais informações sobre quais imagens de contêineres ou exemplos de fórmulas usar, acesse Fórmulas do Amazon Nova.
Formato de dados para compreensão de documentos
O SFT é compatível com modelos de treinamento em tarefas de compreensão de documentos. Confira abaixo um exemplo de formato de entrada:
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": [ { "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" } ] } ] }
Considerações importantes sobre a compreensão de documentos:
-
Somente arquivos PDF são compatíveis
-
O tamanho máximo do documento é de 10 MB
-
Um exemplo pode conter documentos e texto, mas não pode misturar documentos com outras modalidades (como imagens ou vídeo)
nota
Para obter mais informações sobre quais imagens de contêineres ou exemplos de fórmulas usar, acesse Fórmulas do Amazon Nova.
Compreensão de vídeos para o SFT
O SFT é compatível com modelos de ajuste fino para tarefas de compreensão de vídeo. Confira abaixo um exemplo de formato de entrada:
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": [ { "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" } ] } ] }
Considerações importantes sobre compreensão de vídeos:
-
Os vídeos podem ter um máximo de 50 MB
-
Os vídeos podem ter até 15 minutos de duração
-
Somente um vídeo é permitido por exemplo; não há compatibilidade com vários vídeos no mesmo exemplo
-
Um exemplo pode conter vídeo e texto, mas não pode misturar vídeo com outras modalidades (como imagens ou documentos)
nota
Para obter mais informações sobre quais imagens de contêineres ou exemplos de fórmulas usar, acesse Fórmulas do Amazon Nova.
Instruções de upload de dados
Faça upload de conjuntos de dados de treinamento e validação para um bucket do S3. Especifique esses locais no bloco run da fórmula:
## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"
Observação: substitua <bucket-name>, <training-directory>, <validation-directory>, <training-file> e <validation-file> por caminhos reais do S3.
Observação: no momento, os conjuntos de dados de validação não são compatíveis com o SFT com o Amazon Nova 2.0. Se um conjunto de dados de validação for fornecido, ele será ignorado.
Criação de uma tarefa de ajuste fino
Defina o modelo base usando os campos model_type e model_name_or_path no bloco run:
## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...
Parâmetros de ajuste do SFT
Os parâmetros que estão disponíveis para ajuste com o SFT incluem:
Configuração da execução
-
name: um nome descritivo para a tarefa de treinamento. Isso ajuda a identificar sua tarefa no Console de Gerenciamento da AWS.
-
model_type: a variante do modelo do Amazon Nova a ser usada. As opções disponíveis são
amazon.nova-2-lite-v1:0:256k. -
model_name_or_path: o caminho para o modelo de base a ser usado em seu treinamento. As opções disponíveis são
nova-lite-2/prodou o caminho do S3 para o ponto de verificação pós-treinamento (s3://customer-escrow-bucket-unique_id/training_run_name). -
replicas: o número de instâncias de computação a serem usadas no treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Lite 2.0 é compatível com 4, 8, 16 ou 32 réplicas.
-
data_s3_path: o local no S3 do conjunto de dados de treinamento, que é um arquivo JSONL. Esse arquivo deve residir na mesma conta e região da AWS que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.
-
validation_data_s3_path: (opcional) o local no S3 do conjunto de dados de validação, que é um arquivo JSONL. Esse arquivo deve estar na mesma conta e região que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.
-
output_s3_path: o local do S3 onde o manifesto e os logs do TensorBoard são armazenados. Todos os locais do S3 fornecidos devem estar na mesma conta da AWS e região da AWS.
-
mlflow_tracking_uri: o ARN da aplicação MLFlow a ser usada para o registro em log do MLFlow.
-
mlflow_experiment_name: nome do experimento do MLFlow.
-
mlflow_run_name: nome de execução do MLFlow.
Configuração do treinamento
-
max_steps: o número de etapas de treinamento a serem executadas. Cada etapa treinará o modelo com a quantidade de elementos definida no
global_batch_size. -
save_steps: a frequência (em etapas) na qual os pontos de verificação do modelo são salvos durante o treinamento.
-
save_top_k: o número máximo dos melhores pontos de verificação a serem retidos com base nas métricas de validação.
-
max_length: o tamanho máximo da sequência em tokens. Isso determina o tamanho da janela de contexto para treinamento. O valor máximo permitido é 32.768 tokens para o SFT.
Sequências mais longas melhorarão a eficiência do treinamento à custa de maiores requisitos de memória. Recomendamos que você faça a correspondência do parâmetro max_length com sua distribuição de dados.
-
global_batch_size: o número total de exemplos de treinamento processados juntos em uma única etapa de propagação (forward ou backward) em todos os dispositivos e operadores.
Esse valor multiplica o tamanho do lote por dispositivo e o número de dispositivos. Isso afeta a estabilidade do treinamento e o throughput. Recomendamos que você comece com um tamanho de lote que caiba confortavelmente na memória e possa ter a escala aumentada verticalmente a partir daí. Para dados específicos do domínio, lotes maiores podem suavizar demais os gradientes.
-
reasoning_enabled: sinalizador booleano para habilitar recursos de raciocínio durante o treinamento.
Programador da taxa de aprendizado
-
warmup_steps: o número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento.
-
min_lr: a taxa mínima de aprendizado ao término do decaimento. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.
Configuração do otimizador
-
lr: a taxa de aprendizado, que controla o tamanho da etapa durante a otimização. Recomendamos valores entre 1e-6 e 1e-4 para um obter bom desempenho. Os valores válidos estão entre 0 e 1, inclusive.
-
weight_decay: a força de regularização de L2. Valores mais altos (entre 0,01 e 0,1) aumentam a regularização.
-
adam_beta1: a taxa de decaimento exponencial para as estimativas do primeiro momento no otimizador Adam. O padrão é de 0.9.
-
adam_beta2: a taxa de decaimento exponencial para as estimativas do segundo momento no otimizador Adam. A padrão é 0.95.
Configuração do PEFT
-
peft_scheme: o esquema de ajuste fino com eficiência de parâmetros a ser usado. As opções são
'null'para ajuste fino de full-rank oulorapara ajuste fino baseado em LoRA.
Ajuste LoRA (quando peft_scheme é 'lora')
-
alpha: o parâmetro de escala LoRA. Controla a magnitude da adaptação de low-rank. Os valores típicos variam de 8 a 128.
-
lora_plus_lr_ratio: a taxa de aprendizado para a otimização via LoRA+. Esse multiplicador ajusta a taxa de aprendizado especificamente para os parâmetros LoRA.
Orientações de hiperparâmetros
Use os seguintes hiperparâmetros recomendados com base na abordagem de treinamento:
Treinamento de full-rank
-
Épocas: 1
-
Taxa de aprendizado (lr): 1e-5
-
Taxa mínima de aprendizado (min_lr): 1e-6
LoRA (Low-Rank Adaptation)
-
Épocas: 2
-
Taxa de aprendizado (lr): 5e-5
-
Taxa mínima de aprendizado (min_lr): 1e-6
Observação: ajuste esses valores com base no tamanho do conjunto de dados e no desempenho da validação. Monitore as métricas de treinamento para evitar sobreajuste.