Preparar os conjuntos de dados de treinamento para destilação - Amazon Bedrock

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á.

Preparar os conjuntos de dados de treinamento para destilação

Antes de começar um trabalho de personalização de modelo, é necessário preparar no mínimo um conjunto de dados de treinamento. Para preparar os conjuntos de dados de entrada para o modelo personalizado, crie arquivos .jsonl, em que cada linha é um objeto JSON correspondente a um registro. Os arquivos criados devem estar em conformidade com o formato de destilação de modelos e o modelo escolhido. Os registros internos também devem estar em conformidade com os requisitos de tamanho.

Forneça os dados de entrada como prompts. O Amazon Bedrock usa os dados de entrada para gerar respostas do modelo instrutor e usa as respostas geradas para ajustar o modelo aprendiz. Para ter mais informações sobre as entradas que o Amazon Bedrock usa e escolher uma opção que funcione melhor para seu caso de uso, consulte Como funciona a Destilação de Modelos do Amazon Bedrock. Há algumas opções para preparar seu conjunto de dados de entrada.

nota

Os modelos do Amazon Nova têm requisitos diferentes para destilação. Para ter mais informações, consulte Destilar modelos do Amazon Nova.

Os modelos listados em Modelos e regiões em que é possível usar a Destilação de Modelos do Amazon Bedrock suportam somente a text-to-text modalidade.

Durante a destilação de modelos, o Amazon Bedrock gera um conjunto de dados sintético que ele usa para ajustar o modelo aprendiz para seu caso de uso específico. Para obter mais informações, consulte Como funciona a Destilação de Modelos do Amazon Bedrock.

Você pode otimizar o processo de geração de dados sintéticos formatando os prompts de entrada para o caso de uso desejado. Por exemplo, se o caso de uso do modelo destilado fosse geração aumentada via recuperação (RAG), você formataria os prompts de forma diferente do que se quisesse que o modelo se concentrasse nos casos de uso do agente.

Veja a seguir exemplos de como é possível formatar os prompts de entrada para casos de uso de RAG ou agente.

RAG prompt example
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a financial analyst charged with answering questions about 10K and 10Q SEC filings. Given the context below, answer the following question." } ], "messages": [ { "role": "user", "content": [ { "text": "<context>\nDocument 1: Multiple legal actions have been filed against us as a result of the October 29, 2018 accident of Lion Air Flight 610 and the March 10, 2019 accident of Ethiopian Airlines Flight 302.\n</context>\n\n<question>Has Boeing reported any materially important ongoing legal battles from FY2022?</question>" } ] } ] }
Agent prompt example
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": 'You are an expert in composing functions. You are given a question and a set of possible functions. Based on the question, you will need to make one or more function/tool calls to achieve the purpose. Here is a list of functions in JSON format that you can invoke. [ { "name": "lookup_weather", "description: "Lookup weather to a specific location", "parameters": { "type": "dict", "required": [ "city" ], "properties": { "location": { "type": "string", }, "date": { "type": "string", } } } } ]' } ], "messages": [ { "role": "user", "content": [ { "text": "What's the weather tomorrow?" } ] }, { "role": "assistant", "content": [ { "text": "[lookup_weather(location=\"san francisco\", date=\"tomorrow\")]" } ] } ] }

Colete seus prompts e armazene-os no formato de arquivo .jsonl. Cada registro no JSONL deve usar a estrutura a seguir.

  • Inclua o campo schemaVersion que deve ter o valor bedrock-conversion-2024.

  • (Opcional) Inclua um prompt do sistema que indique o perfil atribuído ao modelo.

  • No campo messages, inclua um perfil de usuário que contenha o prompt de entrada fornecido ao modelo.

  • (Opcional) No campo messages, inclua um perfil de assistente que contenha a resposta desejada.

Os modelos Anthropic e Meta Llama permitem somente prompts de conversação de um único turno, o que significa que só é possível ter um único prompt de usuário. Os modelos do Amazon Nova permitem conversas de vários turnos, o que possibilita que você ofereça várias trocas entre usuários e assistentes em um único registro.

Formato de exemplo

{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "A chat between a curious User and an artificial intelligence Bot. The Bot gives helpful, detailed, and polite answers to the User's questions." }], "messages": [{ "role": "user", "content": [{ "text": "why is the sky blue" }] }, { "role": "assistant", "content": [{ "text": "The sky is blue because molecules in the air scatter blue light from the Sun more than other colors." }] } ] }}

Validar o conjunto de dados

Antes de executar um trabalho de destilação, é possível validar o conjunto de dados de entrada usando um script Python.

Ao criar um trabalho de destilação, você pode fazer com que o Amazon Bedrock use as respostas existentes dos professores dos registros de invocação do CloudWatch Logs como dados de treinamento. Para o Amazon Bedrock, um log de invocação é um registro detalhado das invocações do modelo.

Para usar os logs de invocação para destilação de modelos, defina o registro em log de invocação do modelo, use uma das operações de invocação do modelo e configure um bucket do Amazon S3 como destino para os logs. Antes de iniciar o trabalho de destilação de modelos, você deve fornecer permissões ao Amazon Bedrock para acessar os logs. Para obter mais informações sobre como configurar os registros de invocação, consulte Monitorar a invocação do modelo usando o Amazon Logs. CloudWatch

Com essa opção, você pode especificar se deseja que o Amazon Bedrock use somente os prompts ou use pares de prompt-resposta do log de invocação. Se você quiser que o Amazon Bedrock use somente prompts, o Amazon Bedrock poderá adicionar técnicas de síntese de dados proprietários para gerar respostas diversas e de maior qualidade por meio do modelo instrutor. Se você quiser que o Amazon Bedrock use pares de prompt-resposta, o Amazon Bedrock não gerará novamente as respostas por meio do modelo instrutor. O Amazon Bedrock usará diretamente as respostas do log de invocação para ajustar o modelo aprendiz.

Importante

É possível fornecer no máximo 15 mil prompts ou pares de prompt-resposta ao Amazon Bedrock para ajustar o modelo aprendiz. Para garantir que o modelo aprendiz seja ajustado para atender às suas necessidades específicas, é altamente recomendável o seguinte:

  • Se você quiser que o Amazon Bedrock use somente prompts, garanta que haja pelo menos cem pares de prompt-resposta gerados em todos os modelos.

  • Se você quiser que o Amazon Bedrock use respostas de seus logs de invocação, garanta que haja em seus logs de invocação pelo menos cem pares de prompt-resposta gerados pelo modelo que correspondam exatamente ao modelo instrutor escolhido.

Opcionalmente, você pode adicionar metadados de solicitação aos pares de prompt-resposta no log de invocação usando uma das operações de invocação do modelo e depois usá-los para filtrar os logs. O Amazon Bedrock pode usar os logs filtrados para ajustar o modelo aprendiz.

Para filtrar os logs usando vários metadados de solicitação, use um único operador booliano AND, OR ou NOT. Não é possível combinar as operações. Para filtragem de metadados de solicitação única, use o operador booliano NOT.

Adicionar metadados de solicitação aos prompts e respostas em logs de invocação para destilação de modelos

O registro em log de invocação de modelo coletam logs de invocação, dados de entrada do modelo (prompts) e dados de saída do modelo (respostas) para todas as invocações usadas no Amazon Bedrock. Se você habilitou o registro em log, poderá coletar os logs sempre que interagir com os modelos de base do Amazon Bedrock por meio de qualquer operação de API Invoke ou Converse. Se quiser que o Amazon Bedrock use os prompts e as respostas associadas do log de invocação para ajustar o modelo aprendiz, você deve dar ao Amazon Bedrock acesso a esses logs. Usar as respostas que um modelo já gerou agiliza o ajuste fino do modelo aprendiz. O uso de respostas dos logs de invocação também torna a destilação de modelos mais econômica. No entanto, as técnicas de síntese de dados proprietários do Amazon Bedrock não são adicionadas, o que pode gerar um modelo destilado com melhor desempenho.

Com os logs de invocação, você pode identificar os pares de prompt-resposta que você deseja que o Amazon Bedrock use para destilação de modelos. Esses pares de prompt-resposta podem ser para casos de uso específicos. Para identificar os pares de prompt-resposta a serem usados na destilação, você deve adicionar uma string de metadados de solicitação aos pares de prompt-resposta ao invocar um modelo ou usar a operação de API Converse. Os metadados da solicitação são fornecidos no formato "priority" : "High".

À medida que você interage com o modelo usando as operações de API Converse ou Invoke, as interações e os metadados da solicitação são registrados nos logs de invocação. Veja abaixo um exemplo de log de invocação de uma chamada InvokeModel que mostra os metadados da solicitação:

{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-09-11T17:16:18Z", "accountId": "XXXXX", "identity": { "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX" }, "region": "us-east-1", "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5", "operation": "InvokeModel", "modelId": "meta.llama3-1-405b-instruct-v1:0", "input": { "inputContentType": "application/json", "inputBodyJson": { "prompt": "story of two dogs", "max_tokens_to_sample": 300 }, "inputTokenCount": 13 }, "output": { "outputContentType": "application/json", "outputBodyJson": { "type": "completion", "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little", "stop_reason": "max_tokens", "stop": null }, "outputTokenCount": 300 }, "requestMetadata": { "project": "CustomerService", "intent": "ComplaintResolution", "priority": "High" } }

Você pode especificar o log de invocação como sua fonte de dados de entrada ao iniciar um trabalho de destilação de modelos. Você pode iniciar o trabalho de destilação de modelos no console Amazon Bedrock, usando a API ou o SDK. AWS CLI AWS

Requisitos para fornecer metadados de solicitação

Os metadados solicitados devem cumprir os seguintes requisitos:

  • Fornecido no formato JSON key:value.

  • O par de chave-valor deve ser uma string de no máximo 256 caracteres.

  • Forneça no máximo de 16 pares de chave-valor.

Usar filtros de metadados de solicitação

Você pode aplicar filtros para solicitar metadados para escolher seletivamente quais pares de prompt-resposta incluir na destilação para ajustar o modelo aprendiz. Por exemplo, talvez você queira incluir somente aqueles com metadados de solicitação “project”: CustomerService "" e “priority”: “High”.

Para filtrar os logs usando vários metadados de solicitação, use um único operador booliano AND, OR ou NOT. Não é possível combinar as operações. Para filtragem de metadados de solicitação única, use o operador booliano NOT.

Você pode especificar o log de invocação como sua fonte de dados de entrada e quais filtros usar para selecionar os pares de prompt-resposta ao iniciar um trabalho de destilação de modelos. Você pode iniciar o trabalho de destilação de modelos no console Amazon Bedrock, usando a API ou o SDK. AWS CLI AWS Para obter mais informações, consulte Enviar um trabalho de destilação de modelos no Amazon Bedrock.

Validar o conjunto de dados

Antes de executar um trabalho de destilação, é possível validar o conjunto de dados de entrada usando um script Python.