View a markdown version of this page

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 libre con refuerzos mediante OpenAI-compatible API, proporciona datos de entrenamiento introduciendo tus propias instrucciones 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 OpenAI-compatible archivos para cargar tus datos de entrenamiento para realizar tareas de ajuste. Los archivos se almacenan de forma segura en Amazon Bedrock y se utilizan para crear trabajos de ajuste. 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 eficaces

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 del RFT admite campos personalizados que van más allá de los requisitos básicos del esquema (messages y reference_answer). Esta flexibilidad te permite añadir cualquier dato adicional que tu función de recompensa necesite para una evaluación adecuada.

nota

No necesitas configurar esto en tu receta. El formato de datos admite campos adicionales de forma inherente. Solo tiene que incluirlos en el JSON de los datos de entrenamiento para que se transiferan a la de recompensas en el campo metadata.

Propiedades adicionales comunes

  • task_id: identificador único de seguimiento

  • difficulty_level: indicador de la complejidad del problema

  • domain: categoría o área del asunto

  • 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 campo reference_answer contiene el resultado esperado o los requisitos 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 recompensas 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 }