Preparação de dados para ajuste fino multimodal
Importante
Antes de começar a preparar seu conjunto de dados, certifique-se de que o ajuste fino supervisionado (SFT) é a abordagem certa para seu caso de uso. O SFT ensina novos comportamentos, formatos de resposta e padrões de raciocínio ao modelo. Não ensina ao modelo novos conhecimentos factuais. Se seu objetivo principal for apresentar fatos, terminologia ou conhecimentos específicos de um domínio que o modelo ainda não conhece, considere o uso da geração aumentada via recuperação (RAG) para fornecer esse contexto na hora da inferência. Para obter orientação para escolher entre SFT, ajuste fino de reforço (RFT) e RAG, consulte Personalização do Amazon Nova em tarefas de treinamento do SageMaker.
Confira abaixo as diretrizes e os requisitos para preparar dados para o ajuste dos modelos de compreensão:
-
O tamanho mínimo dos dados para o ajuste depende da tarefa (ou seja, complexa ou simples), mas recomendamos que você tenha pelo menos cem 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.
-
Os conjuntos de dados de treinamento e validação devem ser arquivos JSONL, em que cada linha é um objeto JSON correspondente a um registro. Esses nomes de arquivo podem consistir apenas em caracteres alfanuméricos, sublinhados, hifens, barras e pontos.
-
Restrições de imagem e vídeo
-
O conjunto de dados não pode conter diferentes modalidades de mídia. Ou seja, o conjunto de dados pode ser texto com imagens ou texto com vídeos.
-
Uma amostra (registro único em mensagens) pode ter várias imagens
-
Uma amostra (registro único em mensagens) pode ter apenas um vídeo
-
-
schemaVersionpode ser qualquer valor de string -
O turno
system(opcional) pode ser um prompt personalizado do sistema fornecido pelo cliente. -
Os perfis compatíveis são
usereassistant. -
O primeiro turno em
messagesdeve sempre começar com"role": "user". O último turno é a resposta do bot, indicada por"role": "assistant". -
O
image.source.s3Location.urie ovideo.source.s3Location.uridevem estar acessíveis ao Amazon Bedrock. -
Seu perfil de serviço do Amazon Bedrock deve ser capaz de acessar os arquivos de imagem no Amazon S3. Para obter mais informações sobre a concessão de acesso, consulte Create a service role for model customization
-
As imagens ou os vídeos devem 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 ems3://amzn-s3-demo-bucket -
Os termos
User:,Bot:,Assistant:,System:,<image>,<video>e[EOS]são palavras-chave reservadas. Se um prompt do usuário ou do sistema começar com uma dessas palavras-chave ou se elas ocorrerem em qualquer posição no prompt, a tarefa de treinamento não terá sucesso devido a problemas de dados. Se você precisar usar essas palavras-chave para seu caso de uso, substitua-as por outras com significado semelhante para que o treinamento possa prosseguir.
nota
Para validar seu conjunto de dados antes de enviar um trabalho de ajuste fino, você pode usar o script de validação do conjunto de dados
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.
Formatos de exemplo de conjunto de dados
Os exemplos de formatos de conjunto de dados a seguir fornecem um guia para você seguir.
O exemplo a seguir é para um ajuste personalizado somente com texto.
// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What is the capital of Mars?" } ] }, { "role": "assistant", "content": [ { "text": "Mars does not have a capital. Perhaps it will one day." } ] } ] }
O exemplo a seguir é para um ajuste personalizado de texto e uma única imagem.
// train.jsonl{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "You are a smart assistant that answers questions respectfully" }], "messages": [{ "role": "user", "content": [{ "text": "What does the text in this image say?" }, { "image": { "format": "png", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.png", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "content": [{ "text": "The text in the attached image says 'LOL'." }] } ] }
O exemplo a seguir é para um ajuste personalizado de texto e vídeo.
{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "You are a helpful assistant designed to answer questions crisply and to the point" }], "messages": [{ "role": "user", "content": [{ "text": "How many white items are visible in this video?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "content": [{ "text": "There are at least eight visible items that are white" }] } ] }
Restrições de conjunto de dados
O Amazon Nova aplica as restrições a seguir nas personalizações de modelos para modelos de compreensão.
Modelo |
Amostras mínimas |
Amostras máximas |
Tamanho do contexto |
|---|---|---|---|
Amazon Nova Micro |
8 |
20k |
32k |
Amazon Nova Lite |
8 |
20k |
32k |
Amazon Nova Pro |
8 |
20k |
32k |
Máximo de imagens |
10/amostra |
Tamanho máximo do arquivo de imagem |
10 MB |
Máximo de vídeos |
1/amostra |
Duração máxima do vídeo |
90 segundos |
Tamanho máximo do arquivo de vídeo |
50 MB |
Formatos de mídia compatíveis
-
Imagem:
png,jpeg,gif,webp -
Vídeo:
mov,mkv,mp4,webm