Preparación de datos para el SFT en Amazon Nova 2
El SFT en Amazon Nova 2 permite la comprensión de textos, imágenes, videos y documentos, así como la utilización de herramientas, con o sin soporte de razonamiento. En esta página, se describen las restricciones, los formatos compatibles y las prácticas recomendadas para preparar los datos de entrenamiento de SFT para los modelos de comprensión de Amazon Nova 2.
sugerencia
Para validar el formato de su conjunto de datos antes de iniciar un trabajo de entrenamiento, consulte Herramientas de validación.
Temas
Formato de los datos
Los datos del SFT de Amazon Nova 2 utilizan el mismo formato de Converse API que Amazon Nova 1, con la adición de campos opcionales de contenido de razonamiento.
Cada línea de su archivo de entrenamiento JSONL es un objeto JSON con los siguientes campos de nivel superior. Amplíe cada sección para obtener más información:
Obligatorio. El campo messages es una matriz de objetos de mensajes, cada uno de los cuales define un turno en la conversación. Un objeto de mensaje contiene los siguientes campos:
-
rol: obligatorio. Define si el mensaje proviene de
user(la petición enviada al modelo) oassistant(la respuesta del modelo). El primer turno debe ser deuser, el último debe ser deassistanty los turnos deben alternarse. -
contenido: obligatorio. Una matriz de bloques de contenido para este turno.
El campo content se asigna a una matriz de bloques de contenido. Los datos SFT de Amazon Nova 2 admiten los siguientes bloques:
Una matriz opcional que define una petición del sistema: instrucciones o contexto para el modelo acerca de la tarea que debe realizar o el personaje que debe adoptar. Use la misma petición del sistema tanto durante el entrenamiento como durante la inferencia para obtener los mejores resultados.
"system": [ { "text": "You are a helpful assistant." } ]
Un objeto opcional que define las herramientas disponibles para que el modelo las utilice durante la conversación. Cada herramienta se define con un nombre, una descripción y un esquema JSON para sus parámetros de entrada.
"toolConfig": { "tools": [ { "toolSpec": { "name": "tool-name", "description": "tool-description", "inputSchema": { "json": { "type": "object", "properties": { "param": { "type": "string", "description": "param-description" } }, "required": ["param"] } } } } ] }
Obligatorio. Un campo de cadena que identifica la versión del esquema. Puede tener cualquier valor de cadena.
"schemaVersion": "bedrock-conversation-2024"
Validación de los datos
Antes de enviar su trabajo de entrenamiento, valide su conjunto de datos para detectar pronto los problemas de formato. Para ver las herramientas de validación disponibles, consulte Herramientas de validación.
Ejemplo de entradas
A continuación, se muestran ejemplos completos de objetos JSON que ilustran cómo combinar los campos y los bloques de contenido para diferentes modalidades.
Características admitidas
En la siguiente tabla se compara la compatibilidad de características con SFT en todas las versiones del modelo Nova.
| Característica | SFT en Nova 2.0 |
|---|---|
| Comprensión de textos | Compatible con Nova 2.0 Lite. Consulte Comprensión general/de textos. |
| Comprensión de imágenes | Compatible con Nova 2.0 Lite. Consulte Comprensión de imágenes. |
| Comprensión de videos | Compatible con Nova 2.0 Lite. Consulte Comprensión de videos. |
| Comprensión de documentos | Compatible con Nova 2.0 Lite. Consulte Comprensión de documentos. |
| Llamada a herramientas | Compatible con Nova 2.0 Lite. Consulte Llamada a herramientas. |
| Razonamiento | Compatible con Nova 2.0 Lite. Consulte Razonamiento. |
Comprensión general/de textos
En esta sección se resumen las restricciones generales para preparar el SFT en los datos de entrenamiento de Amazon Nova 2.
Restricciones
| Restricción | Details |
|---|---|
| Formato de conjuntos de datos | JSONL (un objeto JSON por línea). Los nombres de archivo solo pueden estar compuestos por caracteres alfanuméricos, guiones bajos, guiones, barras y puntos. |
| Muestras mínimas | 8 |
| Muestras máximas | 20 000 |
| Longitud del contenido | 32 000 |
| Homogeneidad del conjunto de datos | Un conjunto de datos no puede mezclar diferentes modalidades multimedia. Use texto con imágenes, texto con videos o texto con documentos, pero no una combinación de estos. |
| Palabras clave reservadas | User:, Bot:, Assistant:, System:, <image>, <video>, [EOS]. Las peticiones que contengan estas palabras clave harán que el trabajo de entrenamiento no se realice correctamente. Sustitúyalas por palabras clave diferentes con significados similares. |
Prácticas recomendadas
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 200 muestras para cada tarea que desee que aprenda el modelo.
Recomendamos utilizar su petición optimizada en un entorno desde cero tanto durante el entrenamiento como durante la inferencia para lograr los mejores resultados.
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.
Ejemplo de entrada
schemaVersionpuede tener cualquier valor de cadena.Los roles compatibles son
useryassistant. El turnosystem(opcional) puede ser una petición del sistema personalizada proporcionada por el cliente.El primer turno en
messagessiempre debe comenzar con"role": "user". El último turno corresponde a la respuesta del bot y se identifica mediante"role": "assistant".
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "text": "The closest country is New Zealand" } ] } ] }
Comprensión de imágenes
El SFT admite el entrenamiento en tareas basadas en imágenes, lo que permite al modelo aprender a analizar y responder a preguntas sobre imágenes.
Restricciones
| Restricción | Details |
|---|---|
| Formatos admitidos | PNG, JPEG, GIF, WebP |
| Número máximo de imágenes por muestra | 10 |
| Tamaño máximo de archivo de imagen | 10 MB |
| Homogeneidad del conjunto de datos | Una muestra puede tener imágenes y texto, pero no puede tener imágenes combinadas con otras modalidades (videos, documentos). |
| Ubicación de S3 | El image.source.s3Location.uri debe 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 |
Prácticas recomendadas
Asegúrese de que las imágenes sean de alta calidad y relevantes para la tarea.
Proporcione varios ejemplos que abarquen diferentes tipos de imágenes y formatos de preguntas.
Incluya preguntas claras que hagan referencia a aspectos específicos del contenido de la imagen.
Ejemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } }, { "text": "Which country is highlighted in the image?" } ] }, { "role": "assistant", "content": [ { "text": "The highlighted country is New Zealand" } ] } ] }
Comprensión de videos
El SFT admite el entrenamiento en tareas basadas en videos, lo que permite al modelo aprender a analizar y responder a preguntas sobre contenido de videos.
Restricciones
| Restricción | Details |
|---|---|
| Formatos admitidos | MOV, MKV, MP4, WebM |
| Número máximo de videos por muestra | 1 |
| Tamaño máximo de archivo de video | 50 MB |
| Duración máxima del video | 15 minutos |
| Homogeneidad del conjunto de datos | Una muestra puede tener video y texto, pero no puede tener videos combinados con otras modalidades (imágenes, documentos). |
| Ubicación de S3 | El video.source.s3Location.uri debe 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 videos deben estar en s3://amzn-s3-demo-bucket |
Prácticas recomendadas
Mantenga los videos concisos y centrados en el contenido relevante para la tarea.
Asegúrese de que la calidad del video sea suficiente para que el modelo extraiga información significativa.
Proporcione preguntas claras que hagan referencia a aspectos específicos del contenido de videos.
Incluya varios ejemplos que abarquen diferentes tipos de videos y formatos de preguntas.
Ejemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }
Comprensión de documentos
El SFT admite el entrenamiento en tareas basadas en documentos, lo que permite al modelo aprender a analizar y responder a preguntas sobre documentos PDF.
Restricciones
| Restricción | Details |
|---|---|
| Formato admitidos | |
| Tamaño máximo del documento | 10 MB |
| Homogeneidad del conjunto de datos | Una muestra puede tener documentos y texto, pero no puede tener documentos mezclados con otras modalidades (imágenes, videos) |
| Ubicación de S3 | El document.source.s3Location.uri debe 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 videos deben estar en s3://amzn-s3-demo-bucket |
Prácticas recomendadas
Asegúrese de que los documentos tengan un formato claro y que el texto sea extraíble.
Proporcione varios ejemplos que abarquen diferentes tipos de documentos y formatos de preguntas.
Incluya contenido de razonamiento para ayudar al modelo a aprender los patrones de análisis de documentos.
Ejemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }
Llamada a herramientas
El SFT admite modelos de entrenamiento en patrones de uso de herramientas, lo que permite al modelo aprender cuándo y cómo debe invocar herramientas o funciones externas.
Restricciones
| Restricción | Details |
|---|---|
| Formatos admitidos | Texto o JSON para el contenido de ToolResult |
| Colocación de ToolUse | ToolUse solo debe aparecer en los turnos del asistente. |
| Colocación de ToolResult | ToolResult solo debe aparecer en los turnos del usuario. |
| Formato de inputSchema | inputSchema en toolSpec debe ser un objeto de esquema JSON válido |
| Coincidencia de toolUseId | Cada ToolResult debe hacer referencia a un toolUseId válido de un ToolUse de asistente anterior, y cada toolUseId debe usarse exactamente una vez por conversación. |
Prácticas recomendadas
Asegúrese de que las definiciones de las herramientas sean coherentes en todos los ejemplos de entrenamiento.
El modelo aprende los patrones de invocación de las herramientas a partir de las demostraciones que usted proporciona.
Incluya varios ejemplos de cuándo se debe usar cada herramienta y cuándo no se deben usar herramientas.
Ejemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": ["item_id", "zipcode"] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }
Razonamiento
El contenido de razonamiento (conocido también como cadena de pensamiento) captura los pasos de pensamiento intermedios del modelo antes de generar una respuesta final.
Restricciones
| Restricción | Details |
|---|---|
| Formato admitidos | Solo texto. No se admite el contenido de razonamiento basado en imágenes. |
| Placement | Solo en los turnos del asistente, a través del campo reasoningContent. |
| Formato | Use texto sin formato. Evite las etiquetas de marcado como <thinking> y </thinking> a menos que la tarea lo requiera específicamente. |
Prácticas recomendadas
El contenido de razonamiento de alta calidad debe incluir pensamientos intermedios, deducciones lógicas, enfoques de resolución de problemas paso a paso y conexiones explícitas entre los pasos y las conclusiones.
Puedes incluir
reasoningContenten varios turnos del asistente en conversaciones de varios turnos.Si el conjunto de datos carece de rastros de razonamiento, puede crearlos con un modelo con capacidad de razonamiento como Nova Premier.
Ejemplo de entrada
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to use my world knowledge of geography to answer this question" } } }, { "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea." } ] } ] }
Notas adicionales
Cómo se calcula la pérdida:
Con contenido de razonamiento: la pérdida de entrenamiento incluye tanto los tokens de razonamiento como los de salida final.
Sin contenido de razonamiento: la pérdida de entrenamiento se calcula solo en los tokens de salida final.
Establezca reasoning_enabled: true en su configuración de entrenamiento cuando los datos de entrenamiento contengan tokens de razonamiento, desee que el modelo genere tokens de pensamiento antes de producir los resultados finales o necesite mejorar el rendimiento en tareas de razonamiento complejas.
Establezca reasoning_enabled: false cuando sus datos de entrenamiento no contengan tokens de razonamiento, cuando esté entrenando para realizar tareas sencillas que no se beneficien de pasos de razonamiento explícitos o cuando desee optimizar la velocidad y reducir el uso de tokens.
Se permita entrenar a Nova con un conjunto de datos que no sea de razonamiento con reasoning_enabled = true. Sin embargo, hacerlo puede provocar que el modelo pierda sus capacidades de razonamiento, ya que Nova aprende principalmente a generar las respuestas presentadas en los datos sin aplicar el razonamiento. En general, habilite el razonamiento tanto para el entrenamiento como para la inferencia cuando utilice conjuntos de datos de razonamiento y desactívelo para ambos cuando utilice conjuntos de datos sin razonamiento.
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:
-
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.
-
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.
-
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.
-
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.
-
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.