View a markdown version of this page

Preparación de datos para el SFT en Amazon Nova 2 - Amazon Nova

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.

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) o assistant (la respuesta del modelo). El primer turno debe ser de user, el último debe ser de assistant y 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:

text

Una cadena que especifica el contenido del texto. Se admite tanto en turnos de user como en turnos de assistant.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz content que contiene solo un bloque de contenido de text:

{ "role": "user", "content": [ { "text": "string" } ] }
image

Un objeto de imagen que especifica su formato y ubicación en S3. Solo se admite en turnos de user.

A continuación, se muestra un objeto Message de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de imagen:

{ "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-image.jpg", "bucketOwner": "account-id" } } } } ] }
video

Un objeto de video que especifica su formato y ubicación en S3. Solo se admite en turnos de user.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de imagen:

{ "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-video.mp4", "bucketOwner": "account-id" } } } } ] }
document

Un objeto de documento que especifica su formato y ubicación en S3. Solo se admite en turnos de user.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de documento:

{ "role": "user", "content": [ { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://your-bucket/your-document.pdf", "bucketOwner": "account-id" } } } } ] }
reasoningContent

Un objeto de seguimiento de razonamiento. Solo se admite en turnos de assistant. Solo se admite el razonamiento basado en texto; no se admite el contenido de razonamiento basado en imágenes.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de razonamiento:

{ "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "string" } } }, { "text": "final answer" } ] }
toolUse

Un objeto de invocación de herramientas. Solo se admite en turnos de assistant. El toolUseId debe ser único por conversación y el name debe coincidir con una herramienta definida en toolConfig.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de uso de herramientas:

{ "role": "assistant", "content": [ { "toolUse": { "toolUseId": "unique-id", "name": "tool-name", "input": { ... } } } ] }
toolResult

Un objeto de resultado de una herramienta. Solo se admite en turnos de user. Cada toolUseId debe hacer referencia a un toolUse precedente y usarse exactamente una vez. El contenido debe ser solo texto o JSON.

A continuación, se muestra un objeto de mensaje de ejemplo con una matriz de contenido que contiene solo un bloque de contenido de resultado de herramientas:

{ "role": "user", "content": [ { "toolResult": { "toolUseId": "matching-id", "content": [ { "text": "result" } ] } } ] }

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.

Text-only (Nova 1.0 compatible)
{ "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" } ] } ] }
Image + text input
{ "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": [ { "reasoningContent": { "reasoningText": { "text": "I will determine the highlighted country by examining its location on the map and using my geographical knowledge" } } }, { "text": "The highlighted country is New Zealand" } ] } ] }
Video + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } }, { "text": "What is shown in this video?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will analyze the video content to identify key elements" } } }, { "text": "The video shows a map with New Zealand highlighted" } ] } ] }
Document + text input
{ "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": [ { "reasoningContent": { "reasoningText": { "text": "I need to find the relevant section in the document to answer the question." } } }, { "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?" } ] } ] }
Text with tool calling
{ "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": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "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?" } ] } ] }
Text with reasoning
{ "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." } ] } ] }

Características admitidas

En la siguiente tabla se compara la compatibilidad de características con SFT en todas las versiones del modelo Nova.

Compatibilidad de características de SFT por versión de modelo
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

Restricciones del conjunto de datos
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

  • schemaVersion puede tener cualquier valor de cadena.

  • Los roles compatibles son user y assistant. El turno system (opcional) puede ser una petición del sistema personalizada proporcionada por el cliente.

  • 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".

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

Restricciones de imagen
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

Restricciones de video
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

Restricciones de documentos
Restricción Details
Formato admitidos PDF
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

Restricciones de llamada a herramientas
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

Restricciones de razonamiento
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 reasoningContent en 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:

  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.