View a markdown version of this page

Prepare dados para modelos de peso aberto - 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á.

Prepare dados para modelos de peso aberto

Ao ajustar modelos de peso aberto com ajuste fino de reforço usando OpenAI-compatible APIs, forneça dados de treinamento trazendo seus próprios prompts no formato JSONL com essa finalidade. fine-tune

Formato e requisitos dos dados de treinamento

Os dados de treinamento devem seguir o formato de conclusão de bate-papo do OpenAI com exemplos de 100 a 20 mil. Cada exemplo de treinamento contém:

  • messages: nesse campo, inclua a função de usuário, sistema ou assistente contendo o prompt de entrada fornecido ao modelo.

  • reference_answer: nesse campo, ele deve conter o resultado esperado ou os critérios de avaliação que sua função de recompensa usa para pontuar a resposta do modelo. Ela não se limita a resultados estruturados — ela pode conter qualquer formato que ajude sua função de recompensa a avaliar a qualidade.

  • [Opcional] Você pode adicionar campos usados pelo avaliador Lambda para avaliação.

Requisitos:

  • Formato JSONL com prompts no formato de conclusão de chat OpenAI (um prompt por linha)

  • O objetivo deve ser definido como fine-tune

  • Um mínimo de 100 registros no conjunto de dados de treinamento

  • O Amazon Bedrock valida automaticamente o formato do conjunto de dados de treinamento

Example: General question-answering
{ "messages": [ { "role": "system", "content": "You are a helpful assistant" }, { role": "user", "content": "What is machine learning?"} ], "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed." }
Example: Math problem
{ "id": "sample-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

API de arquivos

Você pode usar a API de OpenAI-compatible arquivos para carregar seus dados de treinamento para trabalhos de ajuste fino. Os arquivos são armazenados com segurança no Amazon Bedrock e usados na criação de trabalhos de ajuste fino. Para obter detalhes completos da API, consulte a documentação de OpenAI Arquivos.

Para carregar um arquivo de treinamento, escolha a guia do seu método preferido e siga as etapas:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Upload training file with open(TRAINING_FILE_PATH, 'rb') as f: file_response = client.files.create( file=f, purpose='fine-tune' ) # Store file ID for next steps training_file_id = file_response.id print(f"✅ Training file uploaded successfully: {training_file_id}")
HTTP request

Faça uma solicitação POST para/v1/files:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -F purpose="fine-tune" \ -F file="@training_data.jsonl"

Para recuperar detalhes sobre um arquivo específico, escolha a guia do seu método preferido e siga as etapas:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Retrieve file details file_details = client.files.retrieve(training_file_id) # Print raw response print(json.dumps(file_details.model_dump(), indent=2))
HTTP request

Faça uma solicitação GET para/v1/files/{file_id}:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

Para listar os arquivos enviados, escolha a guia do seu método preferido e siga as etapas:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # List files files_response = client.files.list(purpose='fine-tune') # Print raw response print(json.dumps(files_response.model_dump(), indent=2))
HTTP request

Faça uma solicitação GET para/v1/files:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files?purpose=fine-tune \ -H "Authorization: Bearer $OPENAI_API_KEY"

Para excluir um arquivo, escolha a guia do seu método preferido e siga as etapas:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Delete file delete_response = client.files.delete(training_file_id)
HTTP request

Faça uma solicitação DELETE para/v1/files/{file_id}:

curl -X DELETE https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

Características dos dados de treinamento efetivos

Dados eficazes de treinamento de RFT requerem três características principais:

  • Clareza e consistência — use instruções claras e inequívocas com formatação consistente. Evite rótulos contraditórios, instruções ambíguas ou respostas de referência conflitantes que enganem o treinamento.

  • Diversidade — inclua formatos de entrada variados, casos extremos e níveis de dificuldade que refletem os padrões de uso da produção em diferentes tipos e cenários de usuários.

  • Funções de recompensa eficientes — Crie funções que sejam executadas rapidamente (segundos, não minutos), que se paralelizem e retornem pontuações consistentes para um treinamento econômico. AWS Lambda

Propriedades adicionais

O formato de dados de RFT é compatível com campos personalizados além dos requisitos principais do esquema (messages e reference_answer). Essa flexibilidade permite que você adicione quaisquer dados adicionais que sua função de recompensa precise para uma avaliação adequada.

nota

Você não precisa configurar isso em sua receita. O formato de dados suporta inerentemente campos adicionais. Basta incluí-los em seus dados de treinamento JSON e eles serão passados para sua função de recompensa no campo metadata.

Propriedades comuns adicionais

  • task_id: identificador único de rastreamento

  • difficulty_level: indicador de complexidade do problema

  • domain: área ou categoria do assunto

  • expected_reasoning_steps: número de etapas na solução

Esses campos adicionais são passados para sua função de recompensa durante a avaliação, permitindo uma lógica de pontuação sofisticada adaptada ao seu caso de uso específico.

Exemplos com propriedades adicionais

Chemistry problem
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4 } }

O campo reference_answer contém o resultado esperado ou os critérios de avaliação que sua função de recompensa usa para pontuar a resposta do modelo. Ele não se limita a resultados estruturados. Ele pode conter qualquer formato que ajude sua função de recompensa a avaliar a qualidade.

Math problem with metadata
{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }