Prepare los datos para los modelos de peso abierto - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prepare los datos para los modelos de peso abierto

Cuando ajustes modelos de peso abierto con ajustes de refuerzo compatibles con OpenAI APIs, proporciona datos de entrenamiento con tus propias indicaciones en formato JSONL con ese propósito. fine-tune

Formato y requisitos de los datos de entrenamiento

Los datos de entrenamiento deben seguir el formato de finalización del chat de OpenAI con entre 100 y 20 000 ejemplos. Cada ejemplo de formación contiene:

  • messages: En este campo, incluya el rol de usuario, sistema o asistente que contiene la solicitud de entrada proporcionada al modelo.

  • reference_answer: En este campo, debe contener el resultado esperado o los criterios de evaluación que su función de recompensa utiliza para puntuar la respuesta del modelo. No se limita a los resultados estructurados, sino que puede contener cualquier formato que ayude a la función de recompensa a evaluar la calidad.

  • [Opcional] Puede agregar los campos utilizados por la calificadora Lambda para la calificación.

Requisitos:

  • Formato JSONL con mensajes en formato de finalización de chat de OpenAI (un mensaje por línea)

  • El propósito debe estar establecido en fine-tune

  • Un mínimo de 100 registros en el conjunto de datos de entrenamiento

  • Amazon Bedrock valida automáticamente el formato del conjunto de datos de entrenamiento

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 archivos

Puedes usar la API de archivos compatibles con OpenAI para cargar tus datos de entrenamiento para trabajos de ajuste fino. Los archivos se almacenan de forma segura en Amazon Bedrock y se utilizan para crear trabajos de ajuste preciso. Para obtener información completa sobre la API, consulte la OpenAI documentación de Files.

Para cargar un archivo de formación, elija la pestaña correspondiente al método que prefiera y, a continuación, siga los pasos:

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

Haga una solicitud POST a/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 los detalles de un archivo específico, selecciona la pestaña del método que prefieras y, a continuación, sigue estos pasos:

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

Realiza una solicitud GET a/v1/files/{file_id}:

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

Para ver una lista de los archivos cargados, selecciona la pestaña del método que prefieras y, a continuación, sigue estos pasos:

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

Realiza una solicitud GET a/v1/files:

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

Para eliminar un archivo, selecciona la pestaña del método que prefieras y, a continuación, sigue los pasos:

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

Realiza una solicitud de ELIMINACIÓN a/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 de los datos de entrenamiento efectivos

Los datos de entrenamiento de RFT efectivos requieren tres características clave:

  • Claridad y coherencia: utilice indicaciones claras e inequívocas con un formato coherente. Evite las etiquetas contradictorias, las instrucciones ambiguas o las respuestas de referencia contradictorias que puedan inducir a error a la formación.

  • Diversidad: incluya formatos de entrada variados, casos extremos y niveles de dificultad que reflejen los patrones de uso de la producción en diferentes tipos de usuarios y escenarios.

  • Funciones de recompensa eficientes: diseñe funciones que se ejecuten rápidamente (en segundos, no en minutos), paralelicen y AWS Lambda arrojen puntuaciones uniformes para una formación rentable.

Propiedades adicionales

El formato de datos RFT admite campos personalizados que van más allá de los requisitos básicos del esquema (y). messages reference_answer Esta flexibilidad le permite añadir cualquier dato adicional que su función de recompensas necesite para una evaluación adecuada.

nota

No necesitas configurar esto en tu receta. El formato de datos admite campos adicionales de forma inherente. Simplemente inclúyelos en el JSON de tus datos de entrenamiento y se transferirán a tu función de recompensas en el metadata campo.

Propiedades adicionales comunes

  • task_id— Identificador único para el seguimiento

  • difficulty_level— Indicador de complejidad del problema

  • domain— Área temática o categoría

  • expected_reasoning_steps— Número de pasos de la solución

Estos campos adicionales se transfieren a la función de recompensas durante la evaluación, lo que permite aplicar una lógica de puntuación sofisticada adaptada a su caso de uso específico.

Ejemplos con propiedades adicionales

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 } }

El reference_answer campo contiene el resultado esperado o los criterios de evaluación que la función de recompensa utiliza para puntuar la respuesta del modelo. No se limita a resultados estructurados, sino que puede contener cualquier formato que ayude a la función de recompensa a evaluar la calidad.

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 }