

# Preparación de datos para el refinamiento multimodal
<a name="fine-tune-prepare-data-understanding"></a>

**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](nova-model-training-job.md).

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.

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

1. 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.

1. 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.

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

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

1. `schemaVersion` puede tener cualquier valor de cadena.

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

1. Los roles compatibles son `user` y `assistant`.

1. 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"`.

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

1.  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](https://docs.aws.amazon.com/bedrock/latest/userguide/model-customization-iam-role.html). 

1. 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`

1. 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](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/bedrock-finetuning/understanding/dataset_validation) disponible en GitHub.

## Diseño de ejemplos de entrenamiento eficaces
<a name="designing-effective-training-examples"></a>

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.

1. **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.

1. **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.

1. **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.

1. **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
<a name="common-data-transformation-patterns"></a>

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.

**Topics**
+ [Diseño de ejemplos de entrenamiento eficaces](#designing-effective-training-examples)
+ [Ejemplo de formatos de conjuntos de datos](#customize-fine-tune-examples)
+ [Restricciones del conjunto de datos](#custom-fine-tune-constraints)

## Ejemplo de formatos de conjuntos de datos
<a name="customize-fine-tune-examples"></a>

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

### Formato de afinamiento personalizado solo de texto
<a name="example4"></a>

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

### Formato de afinamiento personalizado de una sola imagen
<a name="example1"></a>

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

### Formato de afinamiento personalizado de video
<a name="example3"></a>

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
<a name="custom-fine-tune-constraints"></a>

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`