View a markdown version of this page

Preparación de datos para el refinamiento multimodal - Amazon Nova

Preparación de datos para el refinamiento multimodal

importante

Antes de comenzar a preparar el conjunto de datos, asegúrese de que el refinamiento supervisado (SFT) sea el enfoque adecuado para el caso de uso. El SFT enseña al modelo nuevos comportamientos, formatos de respuesta y patrones de razonamiento. No enseña al modelo nuevos conocimientos fácticos. Si el objetivo principal es incorporar hechos, terminología o conocimientos específicos de un dominio que el modelo no haya visto, considere la generación aumentada por recuperación (RAG) para proporcionar ese contexto durante el tiempo de inferencia. Para obtener orientación sobre cómo elegir entre SFT, refinamiento mediante refuerzo (RFT) y RAG, consulte Personalización de Amazon Nova en Trabajos de entrenamiento de SageMaker.

Las siguientes son directrices y requisitos para preparar los datos para el afinamiento de los modelos de comprensión:

  1. El tamaño mínimo de los datos para el afinamiento depende de la tarea (es decir, si es compleja o sencilla), pero recomendamos que tenga al menos 100 muestras para cada tarea que desee que aprenda el modelo.

  2. Recomendamos utilizar su petición optimizada en un entorno desde cero tanto durante el entrenamiento como durante la inferencia para lograr los mejores resultados.

  3. Los conjuntos de datos de entrenamiento y validación deben ser archivos JSONL, donde cada línea es un objeto JSON que corresponde a un registro. Estos nombres de archivo solo pueden estar compuestos por caracteres alfanuméricos, guiones bajos, guiones, barras y puntos.

  4. Restricciones de imágenes y videos

    1. El conjunto de datos no puede contener diferentes modalidades multimedia. Es decir, el conjunto de datos puede ser texto con imágenes o texto con videos.

    2. Una muestra (registro único en los mensajes) puede tener varias imágenes

    3. Una muestra (registro único en los mensajes) solo puede tener un video

  5. schemaVersion puede tener cualquier valor de cadena.

  6. El turno system (opcional) puede ser una petición del sistema personalizada proporcionada por el cliente.

  7. Los roles compatibles son user y assistant.

  8. El primer turno en messages siempre debe comenzar con "role": "user". El último turno corresponde a la respuesta del bot y se identifica mediante "role": "assistant".

  9. Amazon Bedrock debe poder acceder al image.source.s3Location.uri y al video.source.s3Location.uri.

  10. Su rol de servicio de Amazon Bedrock debe poder acceder a los archivos de imágenes en Amazon S3. Para obtener más información sobre la concesión de acceso, consulte Creación de un rol de servicio para la personalización de modelos.

  11. Las imágenes o videos deben estar en el mismo bucket de Amazon S3 que su conjunto de datos. Por ejemplo, si su conjunto de datos está en s3://amzn-s3-demo-bucket/train/train.jsonl, entonces sus imágenes o videos deben estar en s3://amzn-s3-demo-bucket

  12. Los términos User:, Bot:, Assistant:, System:, <image>, <video> y [EOS] son palabras clave reservadas. Si una petición de usuario o una petición del sistema comienza con cualquiera de estas palabras clave o contiene cualquiera de estas en cualquier parte de la petición, el trabajo de entrenamiento fallará debido a problemas con los datos. Si necesita usar estas palabras clave para el caso de uso, debe reemplazarlas por otras con significados similares de manera que el entrenamiento pueda continuar.

nota

Para validar el conjunto de datos antes de enviar un trabajo de refinamiento, puede usar el script de validación del conjunto de datos disponible en GitHub.

Diseño de ejemplos de entrenamiento eficaces

Los datos de entrenamiento deben reflejar el comportamiento que desea que el modelo adopte. El SFT enseña al modelo cómo responder, no qué debe saber. Si observa que crea ejemplos de entrenamiento principalmente para incorporar conocimientos fácticos (por ejemplo, “¿Qué significa el código de error E-45?” con la respuesta “E-45 indica un tiempo de espera agotado del sensor”), considere si RAG o la ingeniería de peticiones podrían lograr el mismo resultado sin necesidad de refinamiento.

Al convertir los datos de origen al formato conversacional, siga estos principios:

  1. Parta de consultas reales de usuarios. Escriba intervenciones de usuario que reflejen cómo los usuarios finales realmente formularán peticiones al modelo en producción. Evite preguntas artificiales o demasiado simplificadas que no reflejen patrones de uso reales.

  2. Escriba respuestas del asistente de máxima calidad. Cada intervención del asistente debe representar la respuesta ideal que desea que produzca el modelo: correcta, bien estructurada y coherente en tono y formato en todos los ejemplos.

  3. Use la petición del sistema de forma estratégica. Coloque en la intervención del sistema instrucciones persistentes, como el formato de los resultados, el rol del modelo y el contexto del dominio. Use la misma petición del sistema tanto durante el entrenamiento como durante la inferencia para obtener los mejores resultados.

  4. Mantenga cada ejemplo centrado en una sola habilidad por muestra. Si necesita que el modelo clasifique, responda preguntas y genere resúmenes, cree conjuntos de ejemplos independientes para cada habilidad en lugar de combinar varias habilidades en una sola muestra.

  5. Priorice la calidad sobre la cantidad. Unos pocos cientos de ejemplos coherentes y de alta calidad suelen ofrecer mejores resultados que miles de ejemplos ruidosos o contradictorios. Elimine duplicados y revise los datos antes del entrenamiento.

Patrones comunes de transformación de datos

Los siguientes patrones muestran cómo convertir formatos comunes de datos empresariales en ejemplos eficaces de entrenamiento para SFT.

Patrón 1: Registros estructurados para clasificación o búsqueda

Cuando los datos de origen consisten en una tabla o base de datos de registros con campos como issue, cause y resolution, formule cada registro como una pregunta de usuario con los campos de entrada pertinentes y use la respuesta del asistente como los campos de salida objetivo.

// 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." } ] } ] }
Patrón 2: Datos jerárquicos o taxonómicos para preguntas y respuestas estructuradas

Cuando los datos de origen consisten en una jerarquía de códigos o una taxonomía, como árboles de categorías de productos o sistemas de clasificación, genere preguntas que requieran que el modelo explore la jerarquía. Incluya el contexto de clasificación en la petición del sistema o en la intervención del usuario.

// 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." } ] } ] }
Patrón 3: Documentos procedimentales para diálogos instructivos

Cuando los datos de origen consisten en procedimientos operativos estándar, manuales de procedimientos o guías paso a paso, convierta los procedimientos en preguntas orientadas a tareas. El usuario pregunta cómo realizar una tarea y el asistente proporciona los pasos en un formato coherente.

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

En los patrones 1 y 2, si el contenido fáctico (como códigos, categorías o resoluciones) no forma parte de los datos de preentrenamiento del modelo, considere usar RAG para proporcionar esa información durante el tiempo de inferencia en lugar de depender únicamente de SFT para que el modelo la memorice. El SFT es más eficaz para enseñar al modelo el formato de las respuestas y los patrones de razonamiento, mientras que RAG se encarga de fundamentar la información fáctica.

Ejemplo de formatos de conjuntos de datos

Los siguientes ejemplos de formatos de conjuntos de datos proporcionan una guía que puede seguir.

El siguiente ejemplo es para el afinamiento personalizado solo de 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." } ] } ] }

El siguiente ejemplo es para el afinamiento personalizado de texto y una sola imagen.

// 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'." }] } ] }

El siguiente ejemplo es para el afinamiento personalizado de texto y video.

{ "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" }] } ] }

Restricciones del conjunto de datos

Amazon Nova aplica las siguientes restricciones a las personalizaciones de modelos para los modelos de comprensión.

Modelo

Muestras mínimas

Muestras máximas

Longitud del contenido

Amazon Nova Micro

8

20 000

32 000

Amazon Nova Lite

8

20 000

32 000

Amazon Nova Pro

8

20 000

32 000

Restricciones de imágenes y videos

Número máximo de imágenes

10/muestra

Tamaño máximo de archivo de imagen

10 MB

Número máximo de videos

1/muestra

Duración máxima del video

90 segundos

Tamaño máximo de archivo de video

50 MB

Formatos multimedia compatibles
  • Imagen: png, jpeg, gif, webp

  • Video: mov, mkv, mp4, webm