Preparar dados para SFT no Amazon Nova 2
O SFT no Amazon Nova 2 oferece suporte à compreensão de texto, imagem, vídeo e documentos, bem como à chamada de ferramentas, com ou sem suporte de raciocínio. Esta página descreve restrições, formatos compatíveis e melhores práticas para preparar dados de treinamento de SFT para os modelos de compreensão do Amazon Nova 2.
dica
Para validar o formato do conjunto de dados antes de iniciar uma tarefa de treinamento, consulte Ferramentas de validação.
Tópicos
Formato de dados
Os dados do Amazon Nova 2 SFT usam o mesmo formato Converse API do Amazon Nova 1, com a adição de campos opcionais de conteúdo de raciocínio.
Cada linha no arquivo de treinamento JSONL é um objeto JSON com os campos de nível superior a seguir. Expanda uma seção para saber mais:
Obrigatório. O campo messages é uma matriz de objetos de mensagem em que cada um define um turno na conversa. Um objeto de mensagem contém os seguintes campos:
-
role: obrigatório. Define se a mensagem é de
user(o prompt enviado ao modelo) ou deassistant(a resposta do modelo). O primeiro turno deve seruser, o último deve serassistant, e os turnos devem se alternar. -
content: obrigatório. Uma matriz de blocos de conteúdo para este turno.
O campo content é mapeado em uma matriz de blocos de conteúdo. Os dados do Amazon Nova 2 SFT são compatíveis com os seguintes blocos:
Uma matriz opcional que define um prompt de sistema — instruções ou contexto para o modelo sobre a tarefa que ele deve realizar ou a persona que ele deve adotar. Use o mesmo prompt do sistema no treinamento e na inferência para obter os melhores resultados.
"system": [ { "text": "You are a helpful assistant." } ]
Um objeto opcional que define as ferramentas disponíveis para o modelo usar durante a conversa. Cada ferramenta é definida com um nome, uma descrição e um esquema JSON para seus parâmetros de entrada.
"toolConfig": { "tools": [ { "toolSpec": { "name": "tool-name", "description": "tool-description", "inputSchema": { "json": { "type": "object", "properties": { "param": { "type": "string", "description": "param-description" } }, "required": ["param"] } } } } ] }
Obrigatório. Um campo de string que identifica a versão do esquema. Pode ser qualquer valor de string.
"schemaVersion": "bedrock-conversation-2024"
Validar seus dados
Antes de enviar sua tarefa de treinamento, valide seu conjunto de dados para detectar problemas de formatação com antecedência. Para obter as ferramentas de validação disponíveis, consulte Ferramentas de validação.
Exemplos de entrada
Veja a seguir exemplos completos de objetos JSON que mostram como combinar os campos e os blocos de conteúdo para diferentes modalidades.
Recursos compatíveis
A tabela a seguir compara o suporte a recursos para SFT em todas as versões do modelo Nova.
| Recurso | SFT no Nova 2.0 |
|---|---|
| Compreensão de texto | Compatível com Nova 2.0 Lite. Consulte Compreensão geral/de texto. |
| Compreensão de imagens | Compatível com Nova 2.0 Lite. Consulte Compreensão de imagens. |
| Compreensão de vídeos | Compatível com Nova 2.0 Lite. Consulte Compreensão de vídeos. |
| Compreensão do documento | Compatível com Nova 2.0 Lite. Consulte Compreensão do documento. |
| Chamada de ferramentas | Compatível com Nova 2.0 Lite. Consulte Chamada de ferramentas. |
| Reasoning | Compatível com Nova 2.0 Lite. Consulte Reasoning. |
Compreensão geral/de texto
Esta seção resume as restrições gerais para preparar o SFT nos dados de treinamento do Amazon Nova 2.
Restrições
| Restrição | Detalhes |
|---|---|
| Formato dos conjuntos de dados | JSONL (um objeto JSON por linha). Esses nomes de arquivo podem consistir apenas em caracteres alfanuméricos, sublinhados, hifens, barras e pontos. |
| Amostras mínimas | 8 |
| Amostras máximas | 20k |
| Tamanho do contexto | 32k |
| Homogeneidade do conjunto de dados | Um conjunto de dados não pode misturar diferentes modalidades de mídia. Use texto com imagens, texto com vídeos ou texto com documentos, mas não uma combinação. |
| Palavras-chave reservadas | User:, Bot:, Assistant:, System:, <image>, <video>, [EOS]. Prompts contendo essas palavras-chave farão com que a tarefa de treinamento falhe. Substitua-as por palavras-chave diferentes com significados semelhantes. |
Práticas recomendadas
O tamanho mínimo dos dados para o ajuste depende da tarefa (ou seja, complexa ou simples), mas recomendamos que você tenha pelo menos 200 amostras para cada tarefa que deseja que o modelo aprenda.
Recomendamos usar seu prompt otimizado em uma configuração de zero-shot durante o treinamento e a inferência para obter os melhores resultados.
Priorize qualidade em vez de quantidade. Algumas centenas de exemplos consistentes e de alta qualidade normalmente são melhores que milhares de exemplos ruidosos ou contraditórios.
Exemplo de entrada
schemaVersionpode ser qualquer valor de stringOs perfis compatíveis são
usereassistant. O turnosystem(opcional) pode ser um prompt personalizado do sistema fornecido pelo cliente.O primeiro turno em
messagesdeve sempre começar com"role": "user". O último turno é a resposta do bot, indicada por"role": "assistant".
{ "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" } ] } ] }
Compreensão de imagens
O SFT é compatível com o treinamento em tarefas baseadas em imagem, permitindo que seu modelo aprenda a analisar e responder a perguntas sobre imagens.
Restrições
| Restrição | Detalhes |
|---|---|
| Formatos com suporte | PNG, JPEG, GIF, WebP |
| Máximo de imagens por amostra | 10 |
| Tamanho máximo do arquivo de imagem | 10 MB |
| Homogeneidade do conjunto de dados | Uma amostra pode ter imagens e texto, mas não pode ter imagens combinadas com outras modalidades (vídeos, documentos) |
| Localização do S3 | O image.source.s3Location.uri deve estar no mesmo bucket do Amazon S3 que o seu conjunto de dados. Por exemplo, se o conjunto de dados estiver em s3://amzn-s3-demo-bucket/train/train.jsonl, as imagens ou os vídeos deverão estar em s3://amzn-s3-demo-bucket |
Práticas recomendadas
Garanta que as imagens sejam de alta qualidade e relevantes para a tarefa.
Forneça diversos exemplos que abrangem diferentes tipos de imagens e formatos de perguntas
Forneça perguntas claras que façam referência a aspectos específicos do conteúdo da imagem
Exemplo de entrada
{ "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": [ { "text": "The highlighted country is New Zealand" } ] } ] }
Compreensão de vídeos
O 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.
Restrições
| Restrição | Detalhes |
|---|---|
| Formatos com suporte | MOV, MKV, MP4, WebM |
| Máximo de vídeos por amostra | 1 |
| Tamanho máximo do arquivo de vídeo | 50 MB |
| Duração máxima do vídeo | 15 minutos |
| Homogeneidade do conjunto de dados | Um exemplo pode ter vídeo e texto, mas não pode ter vídeo combinado com outras modalidades (imagens, documentos) |
| Localização do S3 | O video.source.s3Location.uri deve estar no mesmo bucket do Amazon S3 que o seu conjunto de dados. Por exemplo, se o conjunto de dados estiver em s3://amzn-s3-demo-bucket/train/train.jsonl, seus vídeos deverão estar em s3://amzn-s3-demo-bucket |
Práticas recomendadas
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.
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?" } ] } ] }
Compreensão do documento
O 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.
Restrições
| Restrição | Detalhes |
|---|---|
| Formato compatível | |
| Tamanho máximo do documento | 10 MB |
| Homogeneidade do conjunto de dados | Um exemplo pode ter documentos e texto, mas não pode ter documentos combinados com outras modalidades (imagens, vídeos). |
| Localização do S3 | O document.source.s3Location.uri deve estar no mesmo bucket do Amazon S3 que o seu conjunto de dados. Por exemplo, se o conjunto de dados estiver em s3://amzn-s3-demo-bucket/train/train.jsonl, seus documentos deverão estar em s3://amzn-s3-demo-bucket |
Práticas recomendadas
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.
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?" } ] } ] }
Chamada de ferramentas
O 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.
Restrições
| Restrição | Detalhes |
|---|---|
| Formatos com suporte | Conteúdo de texto ou JSON para ToolResult |
| 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 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 |
Práticas recomendadas
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.
Exemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "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": [ { "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?" } ] } ] }
Reasoning
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.
Restrições
| Restrição | Detalhes |
|---|---|
| Formato compatível | Somente texto O conteúdo de raciocínio baseado em imagens não é compatível. |
| Posicionamento | Somente turnos do assistente via campo reasoningContent. |
| Formatação | Use texto sem formatação. Evite tags de marcação como <thinking> e </thinking>, a menos que sejam especificamente exigidas por sua tarefa |
Práticas recomendadas
O conteúdo de raciocínio de alta qualidade deve incluir pensamentos intermediários, deduções lógicas, abordagens de resolução de problemas passo a passo e conexões explícitas entre etapas e conclusões.
Você pode incluir
reasoningContentem vários turnos do assistente em conversas de vários turnos.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.
Exemplo de entrada
{ "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." } ] } ] }
Notas adicionais
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.
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 resultados finais ou precisar de maior performance em tarefas de raciocínio complexas.
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ícitas ou quiser otimizar a velocidade e reduzir o uso de tokens.
É 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. 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.
Criar exemplos de treinamento eficazes
Os dados de treinamento devem demonstrar o comportamento que você deseja que o modelo apresente. O STF ensina ao modelo como responder, não o que ele deve saber. Se você estiver criando exemplos de treinamento principalmente para injetar conhecimento factual (por exemplo, “O que o código de erro E-45 significa?” com a resposta “E-45 indica que o tempo limite de um sensor esgotou”), considere se RAG ou engenharia de prompts poderiam obter o mesmo resultado sem ajuste fino.
Ao converter dados de origem para o formato conversacional, siga estes princípios:
-
Comece com consultas de usuários reais. Escreva turnos de usuário que reflitam os prompts reais dos usuários finais para o modelo em produção. Evite perguntas artificiais ou extremamente simplificadas que não reflitam padrões de uso reais.
-
Escreva as melhores respostas do assistente. Cada turno do assistente deve ser a resposta ideal que você deseja que o modelo gere: correta, bem formatada e consistente em tom e estrutura em todos os exemplos.
-
Use o prompt do sistema estrategicamente. Coloque, no turno do sistema, instruções persistentes, como formato de saída, persona e contexto do domínio. Use o mesmo prompt do sistema no treinamento e na inferência para obter os melhores resultados.
-
Mantenha os exemplos focados em uma habilidade por amostra. Se quiser que o modelo classifique, responda a perguntas e resuma, crie conjuntos de exemplos separados para cada habilidade em vez de combinar várias habilidades em um único exemplo.
-
Priorize qualidade em vez de quantidade. Algumas centenas de exemplos consistentes e de alta qualidade normalmente são melhores que milhares de exemplos ruidosos ou contraditórios. Elimine as duplicatas e revise os dados antes do treinamento.
Padrões comuns de transformação de dados
Os padrões a seguir ilustram como converter formatos comuns de dados corporativos em exemplos eficazes de treinamento em SFT.
Padrão 1: registros estruturados para classificação ou pesquisa
Quando seus dados de origem forem uma tabela ou um banco de dados de registros com campos como issue, cause e resolution, formate cada registro como uma pergunta do usuário com os campos de entrada relevantes e a resposta do assistente como os campos de saída pretendidos.
// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a technical support assistant. Given an issue description, identify the most likely root cause and recommended resolution." } ], "messages": [ { "role": "user", "content": [ { "text": "A user reports: 'Application crashes on startup after the latest update.' What is the likely cause and resolution?" } ] }, { "role": "assistant", "content": [ { "text": "Cause: Incompatible configuration file from the previous version.\nResolution: Delete the local configuration cache and restart the application to regenerate default settings." } ] } ] }
Padrão 2: dados hierárquicos ou taxonômicos para perguntas e respostas estruturadas
Quando os dados de origem forem uma hierarquia ou taxonomia de códigos, como árvores de categorias de produtos ou sistemas de classificação, gere perguntas que peçam ao modelo para navegar pela hierarquia. Inclua o contexto de classificação no prompt do sistema ou no turno do usuário.
// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a product catalog assistant. Answer questions about product categories and classifications accurately." } ], "messages": [ { "role": "user", "content": [ { "text": "What top-level category does product code 'EL-4520' belong to, and what subcategories does it include?" } ] }, { "role": "assistant", "content": [ { "text": "Product code EL-4520 belongs to the Electronics category. It includes the subcategories: Audio Equipment, Portable Speakers, and Wireless Accessories." } ] } ] }
Padrão 3: documentos procedimentais para diálogo instrucional
Quando os dados de origem consistirem em procedimentos operacionais padrão, runbooks ou guias passo a passo, converta procedimentos em perguntas orientadas a tarefas. O usuário pergunta como realizar uma tarefa e o assistente fornece as etapas em um formato consistente.
// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an IT operations assistant. Provide step-by-step instructions based on approved runbooks and standard operating procedures." } ], "messages": [ { "role": "user", "content": [ { "text": "How do I reset a user's multi-factor authentication when they have lost access to their device?" } ] }, { "role": "assistant", "content": [ { "text": "Follow these steps to reset a user's multi-factor authentication:\n1. Verify the user's identity using the approved verification procedure.\n2. Disable the existing MFA configuration in the identity management console.\n3. Generate a new temporary access code and send it to the user's verified email.\n4. Instruct the user to log in with the temporary code and re-enroll their new device.\n5. Confirm the new MFA device is working by requesting a test authentication.\n6. Document the reset in the support ticket." } ] } ] }
nota
Nos Padrões 1 e 2, se o conteúdo factual (como códigos, categorias ou resoluções) ainda não estiver nos dados de pré-treinamento do modelo, considere usar RAG para fornecer essas informações na hora da inferência, em vez depender exclusivamente do SFT para memorizá-las. O SFT é mais eficaz para ensinar ao modelo o formato de resposta e o padrão de raciocínio, enquanto a RAG lida com o embasamento factual.