

# Entrenamiento de los modelos de Amazon Nova
<a name="smtj-training"></a>

El entrenamiento de los modelos de Amazon Nova en Trabajos de entrenamiento de SageMaker admite el refinamiento supervisado (SFT) y el refinamiento por refuerzo (RFT). Cada técnica responde a diferentes necesidades de personalización y se puede aplicar a distintas versiones de modelos de Amazon Nova.

**Topics**
+ [Refinamiento de Nova 2.0](nova-fine-tune-2.md)
+ [Refinamiento por refuerzo (RFT) con modelos de Amazon Nova](nova-reinforcement-fine-tuning.md)

# Refinamiento de Nova 2.0
<a name="nova-fine-tune-2"></a>

## Requisitos previos
<a name="nova-model-training-jobs-prerequisites2"></a>

Antes de empezar un trabajo de entrenamiento, tenga en cuenta lo siguiente.
+ Buckets de Amazon S3 para almacenar sus datos de entrada y la salida de los trabajos de entrenamiento. Puede utilizar un bucket para ambos o buckets separados para cada tipo de datos. Asegúrese de que sus buckets estén en la misma región Región de AWS donde creó el resto de recursos para el entrenamiento. Para obtener más información, consulte [Creación de un bucket de uso general](https://docs.aws.amazon.com//AmazonS3/latest/userguide/create-bucket-overview.html).
+ Un rol de IAM con permisos para ejecutar un trabajo de entrenamiento. Asegúrese de asociar una política de IAM con `AmazonSageMakerFullAccess`. Para obtener más información, consulte [How to use SageMaker AI execution roles](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html).
+ Fórmulas básicas de Amazon Nova, consulte [Obtención de fórmulas de Amazon Nova](nova-model-recipes.md#nova-model-get-recipes).

## ¿Qué es el SFT?
<a name="nova-2-what-is-sft"></a>

El refinamiento supervisado (SFT) entrena un modelo de lenguaje mediante pares de entrada y salida etiquetados. El modelo aprende a partir de ejemplos de demostración que consisten en peticiones y respuestas, y refina sus capacidades para alinearlas con tareas, instrucciones o comportamientos deseados específicos.

## Preparación de datos
<a name="nova-2-data-preparation"></a>

### Descripción general
<a name="nova-2-data-overview"></a>

Los datos del SFT de Nova 2.0 utilizan el mismo formato de API de Converse que Nova 1.0, con la adición de campos de contenido de razonamiento opcionales. Para ver las especificaciones de formato completas, consulte:
+ Contenido de razonamiento: [ReasoningContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningContentBlock.html)
+ Esquema de la API de Converse: [API de Converse](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html)
+ Restricciones del conjunto de datos: [Restricciones del conjunto de datos](https://docs.aws.amazon.com/nova/latest/userguide/fine-tune-prepare-data-understanding.html)

### Características admitidas
<a name="nova-2-supported-features"></a>
+ **Tipos de entrada**: texto, imagen o video en bloques de contenido del usuario
+ **Contenido del asistente**: respuestas y contenido de razonamiento de solo texto
+ **Composición del conjunto de datos**: debe ser homogéneo. Elija una de las siguientes opciones:
  + Turnos de solo texto
  + Turnos de texto e imagen
  + Turnos de texto y video (admite la comprensión de documentos)

**importante**  
No se pueden mezclar imágenes y videos en el mismo conjunto de datos ni en turnos diferentes.

### Limitaciones actuales
<a name="nova-2-current-limitations"></a>
+ **Contenido de razonamiento multimodal**: aunque el formato Converse admite contenido de razonamiento basado en imágenes, el SFT de Nova 2.0 solo admite contenido de razonamiento basado en texto en el campo reasoningText.
+ **Conjuntos de validación**: no puede proporcionar ningún conjunto de datos de validación para el SFT con Nova 2.0. Si proporciona un conjunto de datos de validación, se ignorará durante el entrenamiento. Esta limitación se aplica tanto a envíos de trabajos basados en interfaz de usuario como programáticos.

### Formatos multimedia compatibles
<a name="nova-2-supported-media"></a>
+ **Imágenes**: PNG, JPEG, GIF
+ **Videos**: MOV, MKV, MP4

### Ejemplos de formato de datos
<a name="nova-2-data-examples"></a>

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

------
#### [ Text with reasoning (Nova 2.0) ]

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

------
#### [ Image \$1 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 \$1 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"  
        }  
      ]  
    }  
  ]  
}
```

------

## Llamada a herramientas
<a name="nova-2-tool-calling"></a>

El SFT de Nova 2.0 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.

### Formato de datos para llamadas a herramientas
<a name="nova-2-tool-calling-format"></a>

Los datos de entrenamiento de llamada a herramientas incluyen una sección `toolConfig` que define las herramientas disponibles, junto con turnos de conversación que muestran los patrones de uso de las herramientas.

**Ejemplo de entrada**

```
{  
  "schemaVersion": "bedrock-conversation-2024",  
  "system": [  
    {  
      "text": "You are an expert in composing function calls."  
    }  
  ],  
  "toolConfig": {  
    "tools": [  
      {  
        "toolSpec": {  
          "name": "getItemCost",  
          "description": "Retrieve the cost of an item from the catalog",  
          "inputSchema": {  
            "json": {  
              "type": "object",  
              "properties": {  
                "item_name": {  
                  "type": "string",  
                  "description": "The name of the item to retrieve cost for"  
                },  
                "item_id": {  
                  "type": "string",  
                  "description": "The ASIN of item to retrieve cost for"  
                }  
              },  
              "required": [  
                "item_id"  
              ]  
            }  
          }  
        }  
      },  
      {  
        "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?"  
        }  
      ]  
    }  
  ]  
}
```

### Requisitos de las llamadas a herramientas
<a name="nova-2-tool-calling-requirements"></a>

Al crear los datos de entrenamiento de llamada a herramientas, siga estos requisitos:


| Requisito | Descripción | 
| --- | --- | 
| 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 ToolResult | ToolResult debe ser solo texto o JSON. Los modelos de Nova no admiten otras modalidades. | 
| 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. | 

### Notas importantes
<a name="nova-2-tool-calling-notes"></a>
+ 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.

## Comprensión de documentos
<a name="nova-2-document-understanding"></a>

El SFT de Nova 2.0 admite el entrenamiento en tareas basadas en documentos, lo que permite al modelo aprender a analizar y responder a preguntas sobre documentos PDF.

### Formato de datos para la comprensión de documentos
<a name="nova-2-document-format"></a>

Los datos de entrenamiento sobre la comprensión de documentos incluyen referencias a los documentos en los bloques de contenido del usuario. El modelo aprende a extraer y razonar sobre el contenido 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": [  
        {
          "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?"  
        }   
      ]
    }  
  ]  
}
}
```

### Limitaciones de la comprensión de documentos
<a name="nova-2-document-limitations"></a>


| Limitación | Details | 
| --- | --- | 
| Formato admitidos | Solo archivos PDF | 
| Tamaño máximo del documento | 10 MB | 
| Mezcla de modalidades | Una muestra puede tener documentos y texto, pero no puede tener documentos mezclados con otras modalidades (imágenes, videos) | 

### Prácticas recomendadas para la comprensión de documentos
<a name="nova-2-document-best-practices"></a>
+ 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.

## Comprensión de videos
<a name="nova-2-video-understanding"></a>

El SFT de Nova 2.0 admite el entrenamiento en tareas basadas en videos, lo que permite al modelo aprender a analizar y responder a preguntas sobre contenido de videos.

### Formato de datos para la comprensión de videos
<a name="nova-2-video-format"></a>

Los datos de entrenamiento sobre la comprensión de videos incluyen referencias a los videos en los bloques de contenido del usuario. El modelo aprende a extraer información y razonar sobre el contenido de videos.

**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": [  
        {
          "reasoningContent": {  
            "reasoningText": {  
              "text": "I need to find the relevant section in the video 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?"  
        }   
      ]  
    }  
  ]  
}
```

### Limitaciones de la comprensión de video
<a name="nova-2-video-limitations"></a>


| Limitación | Details | 
| --- | --- | 
| Tamaño máximo del video | 50 MB | 
| Duración máxima del video | 15 minutos | 
| Videos por muestra | Solo se permite un video por muestra. No se admiten varios videos en la misma muestra. | 
| Mezcla de modalidades | Una muestra puede tener video y texto, pero no puede tener videos combinados con otras modalidades (imágenes, documentos). | 

### Formatos de video admitidos
<a name="nova-2-video-formats"></a>
+ MOV
+ MKV
+ MP4

### Prácticas recomendadas para la comprensión de videos
<a name="nova-2-video-best-practices"></a>
+ 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.

## Modos de razonamiento y sin razonamiento
<a name="nova-2-reasoning-modes"></a>

### Descripción del contenido de razonamiento
<a name="nova-2-understanding-reasoning"></a>

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. En el turno del `assistant`, use el campo `reasoningContent` para incluir estos rastros de razonamiento.

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

Puedes incluir `reasoningContent` en varios turnos del asistente en conversaciones de varios turnos.

**Directrices de formato**
+ Use texto sin formato para contenido de razonamiento.
+ Evite las etiquetas de marcado como `<thinking>` y `</thinking>` a menos que la tarea lo requiera específicamente.
+ Asegúrese de que el contenido de razonamiento sea claro y relevante para el proceso de resolución de problemas.

### ¿Cuándo se debe habilitar el modo de razonamiento?
<a name="nova-2-when-enable-reasoning"></a>

Establezca `reasoning_enabled: true` en la configuración de entrenamiento cuando:
+ Los datos de entrenamiento tengan tokens de razonamiento.
+ Quiera que el modelo genere tokens de pensamiento antes de producir las salidas finales.
+ Necesite mejorar el rendimiento en tareas de razonamiento complejas.

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. Si desea entrenar a Nova con un conjunto de datos sin razonamiento, pero aun así espera razonamiento durante la inferencia, puede deshabilitar el razonamiento durante el entrenamiento (`reasoning_enabled = false`), pero habilitarlo para la inferencia. Si bien este enfoque permite utilizar el razonamiento en el momento de la inferencia, no garantiza un rendimiento mejorado en comparación con la inferencia sin 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.

Establezca `reasoning_enabled: false` cuando:
+ Los datos de entrenamiento no tengan tokens de razonamiento.
+ Entrene en tareas sencillas que no se beneficien de pasos de razonamiento explícitos.
+ Quiera optimizar la velocidad y reducir el uso de tokens.

### Generación de datos de razonamiento
<a name="nova-2-generating-reasoning"></a>

Si el conjunto de datos carece de rastros de razonamiento, puede crearlos con un modelo con capacidad de razonamiento como Nova Premier. Proporcione los pares de entrada y salida al modelo y capture el proceso de razonamiento para crear un conjunto de datos con razonamiento aumentado.

### Uso de tokens de razonamiento para el entrenamiento
<a name="nova-2-using-reasoning-training"></a>

Al entrenar con el modo de razonamiento habilitado, el modelo aprende a separar el razonamiento interno de la respuesta final. El proceso de entrenamiento:
+ Organiza los datos en tríos: entrada, razonamiento y respuesta.
+ Optimiza el uso de la pérdida de predicción estándar del siguiente token de los tokens de razonamiento y respuesta.
+ Anima al modelo a razonar internamente antes de generar respuestas.

### Contenido de razonamiento eficaz
<a name="nova-2-effective-reasoning"></a>

El contenido de razonamiento de alta calidad debe incluir lo siguiente:
+ Pensamientos y análisis intermedios
+ Deducciones lógicas y pasos de inferencia
+ Enfoques de resolución de problemas paso a paso
+ Conexiones explícitas entre los pasos y las conclusiones

Esto ayuda al modelo a desarrollar la capacidad de “pensar antes de responder”.

## Directrices de preparación de conjuntos de datos
<a name="nova-2-dataset-preparation"></a>

### Tamaño y calidad
<a name="nova-2-size-quality"></a>
+ **Tamaño recomendado**: entre 2000 y 10 000 muestras
+ **Muestras mínimas**: 200
+ **Prioridad**: calidad por encima de cantidad. Asegúrese de que los ejemplos sean precisos y estén bien anotados.
+ **Alineación de las aplicaciones**: el conjunto de datos debe reflejar de cerca los casos de uso de producción.

### Diversidad
<a name="nova-2-diversity"></a>

Incluya varios ejemplos que:
+ Cubran la gama completa de entradas esperadas.
+ Representen diferentes niveles de dificultad.
+ Incluyan casos extremos y variantes.
+ Eviten el sobreajuste a patrones estrechos.

### Formato de salida
<a name="nova-2-output-formatting"></a>

Especifique claramente el formato de salida deseado en las respuestas del asistente:
+ estructuras JSON
+ Tablas
+ formato CSV
+ Formatos personalizados específicos para la aplicación

### Conversaciones de varios turnos
<a name="nova-2-multi-turn"></a>

Para conjuntos de datos de varios turnos, recuerde lo siguiente:
+ La pérdida se calcula solo en los turnos del asistente, no en los del usuario.
+ Cada respuesta del asistente debe tener el formato correcto.
+ Mantenga la coherencia en todos los turnos de la conversación.

### Lista de comprobación de la calidad
<a name="nova-2-quality-checklist"></a>
+ Tamaño del conjunto de datos suficiente (entre 2000 y 10 000 muestras)
+ Varios ejemplos que cubren todos los casos de uso
+ Formato de salida claro y coherente
+ Etiquetas y anotaciones precisas
+ Representación de escenarios de producción
+ Sin contradicciones ni ambigüedades

### Cargar los datos
<a name="nova-2-uploading-data"></a>

Los conjuntos de datos deben cargarse en un bucket al que puedan acceder los trabajos de entrenamiento de SageMaker. Para obtener información sobre cómo establecer los permisos adecuados, consulte [Requisitos previos](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-general-prerequisites.html).

## Inicio de un trabajo de entrenamiento
<a name="nova-2-starting-training"></a>

### Selección de hiperparámetros y actualización de la fórmula
<a name="nova-2-selecting-hyperparameters"></a>

La configuración de Nova 2.0 es prácticamente la misma que la de Nova 1.0. Una vez que los datos de entrada se hayan cargado en S3, utilice la fórmula de la carpeta Refinamiento de [Fórmulas de SageMaker HyperPod](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/fine-tuning/nova). En el caso de Nova 2.0, a continuación se muestran algunos de los hiperparámetros clave que puede actualizar en función del caso de uso. A continuación se muestra un ejemplo de fórmula de PEFT del SFT de Nova 2.0. Para el URI de la imagen de contenedor, utilice `708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-V2-latest` para ejecutar un trabajo de refinamiento SFT.

Utilice la versión 2.254.1 del PySDK de SageMaker AI para garantizar una compatibilidad estricta con el entrenamiento de Nova. Si se actualiza el SDK a la versión 3.0, se producirán cambios importantes. La compatibilidad con la versión 3 del PySDK de SageMaker AI estará disponible próximamente.

**Ejemplo de entrada **

```
!pip install sagemaker==2.254.1
```

```
run:  
  name: {peft_recipe_job_name}  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: {peft_model_name_or_path}  
  data_s3_path: {train_dataset_s3_path} # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job  
  replicas: 4                      # Number of compute instances for training, allowed values are 4, 8, 16, 32  
  output_s3_path: ""               # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job  
  
training_config:  
  max_steps: 10                   # Maximum training steps. Minimal is 4.  
  save_steps: 10                      # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps  
  save_top_k: 1                    # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1.  
  max_length: 32768                # Sequence length (options: 8192, 16384, 32768 [default], 65536)  
  global_batch_size: 32            # Global batch size (options: 32, 64, 128)  
  reasoning_enabled: true          # If data has reasoningContent, set to true; otherwise False  
  
  lr_scheduler:  
    warmup_steps: 15               # Learning rate warmup steps. Recommend 15% of max_steps  
    min_lr: 1e-6                   # Minimum learning rate, must be between 0.0 and 1.0  
  
  optim_config:                    # Optimizer settings  
    lr: 1e-5                       # Learning rate, must be between 0.0 and 1.0  
    weight_decay: 0.0              # L2 regularization strength, must be between 0.0 and 1.0  
    adam_beta1: 0.9                # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0  
    adam_beta2: 0.95               # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0  
  
  peft:                            # Parameter-efficient fine-tuning (LoRA)  
    peft_scheme: "lora"            # Enable LoRA for PEFT  
    lora_tuning:  
      alpha: 64                    # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192),  
      lora_plus_lr_ratio: 64.0
```

La fórmula también contiene prácticamente los mismos hiperparámetros que Nova 1.0. Los hiperparámetros más destacados son:
+ `max_steps`: número de pasos para los que quiere ejecutar el trabajo. Por lo general, para una época (una ejecución de todo el conjunto de datos), el número de pasos es igual al número de muestras de datos dividido entre el tamaño del lote global. Cuanto mayor sea el número de pasos y menor sea el tamaño del lote global, más tardará en ejecutarse el trabajo.
+ `reasoning_enabled`: controla el modo de razonamiento del conjunto de datos. Opciones:
  + `true`: habilita el modo de razonamiento (equivalente a un razonamiento alto).
  + `false`: deshabilita el modo de razonamiento.

  Nota: En el caso del SFT, no existe ningún control detallado sobre los niveles de esfuerzo de razonamiento. Al configurar `reasoning_enabled: true`, se habilita una capacidad de razonamiento completa.
+ `peft.peft_scheme`: al configurarlo como “lora”, se permite un refinamiento basado en PEFT. Al configurarlo en nulo (sin comillas), se habilita el refinamiento de rango completo.

### Inicio del trabajo de entrenamiento
<a name="nova-2-start-job"></a>

```
from sagemaker.pytorch import PyTorch  
  
# define OutputDataConfig path  
if default_prefix:  
    output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}"  
else:  
    output_path = f"s3://{bucket_name}/{sm_training_job_name}"  

output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption
  
recipe_overrides = {  
    "run": {  
        "replicas": instance_count,  # Required  
        "output_s3_path": output_path  
    },  
}  
  
estimator = PyTorch(  
    output_path=output_path,  
    base_job_name=sm_training_job_name,  
    role=role,  
    disable_profiler=True,  
    debugger_hook_config=False,  
    instance_count=instance_count,  
    instance_type=instance_type,  
    training_recipe=training_recipe,  
    recipe_overrides=recipe_overrides,  
    max_run=432000,  
    sagemaker_session=sagemaker_session,  
    image_uri=image_uri,
    output_kms_key=output_kms_key,
    tags=[  
        {'Key': 'model_name_or_path', 'Value': model_name_or_path},  
    ]  
)  
  
print(f"\nsm_training_job_name:\n{sm_training_job_name}\n")  
print(f"output_path:\n{output_path}")
```

```
from sagemaker.inputs import TrainingInput  
  
train_input = TrainingInput(  
    s3_data=train_dataset_s3_path,  
    distribution="FullyReplicated",  
    s3_data_type="Converse",  
)  
  
estimator.fit(inputs={"validation": val_input}, wait=False)
```

**nota**  
No se admite la transferencia de un conjunto de datos de validación para el refinamiento supervisado de Nova 2.0.

Para comenzar el trabajo:
+ Actualice la fórmula con las rutas e hiperparámetros del conjunto de datos.
+ Ejecute las celdas especificadas en el cuaderno para enviar el trabajo de entrenamiento.

El cuaderno gestiona el envío de trabajos y proporciona un seguimiento del estado.

# Refinamiento por refuerzo (RFT) con modelos de Amazon Nova
<a name="nova-reinforcement-fine-tuning"></a>

## Descripción general
<a name="nova-rft-overview"></a>

**¿Qué es el RFT?**

El refinamiento por refuerzo (RFT) mejora el rendimiento del modelo al entrenarlo con señales de comentarios (puntuaciones medibles o recompensas que indican el rendimiento del modelo) en lugar de con respuestas exactas correctas. A diferencia del refinamiento supervisado, que aprende de los pares de entradas y salidas, el RFT utiliza funciones de recompensas para evaluar las respuestas del modelo y lo optimiza de forma iterativa para maximizar estas recompensas. Este enfoque destaca al definir el resultado exacto correcto, pero le permite medir de forma fiable la calidad de la respuesta.

**Cuándo se debe usar el RFT**

Utilice el RFT cuando pueda definir criterios de éxito claros y medibles, pero tenga dificultades para proporcionar resultados exactos y correctos para el entrenamiento. Es ideal para:
+ Tareas en las que la calidad es subjetiva o multifacética (escritura creativa, optimización del código, razonamiento complejo)
+ Escenarios con múltiples soluciones válidas en los que algunas son claramente mejores que otras
+ Aplicaciones que requieran mejoras iterativas, personalización o el cumplimiento de reglas empresariales complejas
+ Casos en los que recopilar ejemplos etiquetados de alta calidad es caro o poco práctico

**Los mejores casos de uso**

El RFT sobresale en dominios en los que la calidad de los resultados se puede medir objetivamente, pero las respuestas óptimas son difíciles de definir por adelantado:
+ Resolución de problemas matemáticos y generación de código
+ Razonamiento científico y análisis de datos estructurados
+ Tareas que requieren razonamiento paso a paso o resolución de problemas de varios turnos
+ Aplicaciones que equilibran varios objetivos (precisión, eficiencia, estilo)
+ Escenarios en los que el éxito se puede verificar mediante programación con resultados de ejecución o métricas de rendimiento

**Modelos compatibles**

Nova Lite 2.0

## Información general sobre el formato de datos
<a name="nova-rft-data-format"></a>

Los datos de entrenamiento RFT deben seguir el [formato](https://platform.openai.com/docs/api-reference/fine-tuning/reinforcement-input) de refinamiento por refuerzo de OpenAI. Cada ejemplo de entrenamiento es un objeto JSON que contiene lo siguiente:
+ Una matriz `messages` con turnos conversacionales con los roles `system` y `user`
+ Un campo `reference_answer` que contiene el resultado esperado o los criterios de evaluación para el cálculo de recompensas

**Limitaciones actuales**
+ Solo texto

### Ejemplos de formato de datos
<a name="nova-rft-data-examples"></a>

Cada ejemplo debe estar en una sola línea del archivo JSONL, con un objeto JSON por línea.

------
#### [ Chemistry problem ]

```
{
  "id": "chem-01",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful chemistry assistant"
    },
    {
      "role": "user",
      "content": "Calculate the molecular weight of caffeine (C8H10N4O2)"
    }
  ],
  "reference_answer": {
    "molecular_weight": 194.19,
    "unit": "g/mol",
    "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19"
  }
}
```

------
#### [ Math problem ]

```
{
  "id": "sample-001",  // Optional
  "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"]
  }
}
```

------
#### [ Code problem ]

```
{
  "id": "code-002",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful programming assistant"
    },
    {
      "role": "user",
      "content": "Write a Python function that reverses a string without using built-in reverse methods"
    }
  ],
  "reference_answer": {
    "code": "def reverse_string(s):  \n    result = ''  \n    for i in range(len(s) - 1, -1, -1):  \n        result += s[i]  \n    return result",
    "test_cases": [
      {
        "input": "hello",
        "expected_output": "olleh"
      },
      {
        "input": "",
        "expected_output": ""
      },
      {
        "input": "a",
        "expected_output": "a"
      },
      {
        "input": "Python123",
        "expected_output": "321nohtyP"
      }
    ],
    "all_tests_pass": true
  }
}
```

------

El campo `reference_answer` contiene el resultado esperado o los criterios 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.

## Recomendaciones de tamaño de conjunto de datos
<a name="nova-rft-dataset-size"></a>

**Punto de partida**
+ Mínimo 100 ejemplos de entrenamiento
+ Mínimo 100 ejemplos de evaluación

**Enfoque de priorización de la evaluación**

Antes de invertir en un entrenamiento RFT a gran escala, evalúe el rendimiento de línea de base del modelo:
+ **Alto rendimiento (recompensa superior al 95 %)**: el RFT puede no ser necesario, el modelo ya funciona bien.
+ **Rendimiento muy bajo (recompensa del 0 %)**: cambie primero al SFT para establecer las capacidades básicas.
+ **Rendimiento moderado**: es probable que el RFT sea adecuado.

Comenzar con un conjunto de datos pequeño le permite:
+ Validar que la función de recompensas no contenga errores
+ Confirmar que el RFT sea el enfoque adecuado para su caso de uso
+ Identificar y solucionar problemas con antelación
+ Probar el flujo de trabajo antes de escalar verticalmente

Una vez validado, puede ampliarlo a conjuntos de datos más grandes para mejorar aún más el rendimiento.

## Características de los datos de entrenamiento eficaces
<a name="nova-rft-effective-data"></a>

**Claridad y coherencia**

Los buenos ejemplos del RFT requieren datos de entrada claros e inequívocos que permitan un cálculo preciso de las recompensas en las diferentes salidas del modelo. Evite el ruido en los datos, lo que incluye lo siguiente:
+ Formato incoherente
+ Etiquetas o instrucciones contradictorias
+ Peticiones ambiguas
+ Conflictos en las respuestas de referencia

Cualquier ambigüedad inducirá a error durante el proceso de entrenamiento y provocará que el modelo aprenda comportamientos no deseados.

**Diversidad**

El conjunto de datos debe capturar toda la diversidad de casos de uso de producción para garantizar un rendimiento real sólido. Incluya:
+ Diferentes formatos de entrada y casos extremos
+ Asignación de patrones reales de uso de producción a partir de registros y análisis de usuarios
+ Muestras de distintos tipos de usuarios, regiones geográficas y variaciones estacionales
+ Inclusión de niveles de dificultad, desde problemas simples hasta problemas complejos

**Consideraciones sobre la función de recompensas**

Diseñe la función de recompensas para un entrenamiento eficiente:
+ Ejecución en segundos (no minutos)
+ Paralelización eficaz con Lambda
+ Devolución de puntuaciones coherentes y fiables
+ Gestión de diferentes tipos de salidas del modelo sin problemas

Las funciones de recompensas rápidas y escalables permiten una iteración rápida y una experimentación rentable.

## Propiedades adicionales
<a name="nova-rft-additional-properties"></a>

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 le permite agregar cualquier dato adicional que su función de recompensas necesite para una evaluación adecuada.

**nota**  
No tiene que configurarlo en su fórmula: 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**

Campos de metadatos de ejemplo:
+ `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

**Ejemplo con propiedades adicionales**

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

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.

## Configuración de entrenamiento
<a name="nova-rft-training-config"></a>

**Fórmula de muestra**

```
# Note:
# This recipe can run on p5.48xlarge and p5en.48xlarge instance types.
run:
  name: "my-rft-run"                           # Unique run name (appears in logs/artifacts).
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  data_s3_path: s3://<bucket>/<data file>      # Training dataset in JSONL;
  replicas: 4
  reward_lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name>

  ## MLFlow configs
  mlflow_tracking_uri: "" # Required for MLFlow
  mlflow_experiment_name: "my-rft-experiment" # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-rft-run" # Optional for MLFlow. Note: leave this field non-empty

## SMTJ GRPO Training specific configs
training_config:
  max_length: 8192                              # Context window (tokens) for inputs+prompt;
  global_batch_size: 16                         # Total samples per optimizer step across all replicas (16/32/64/128/256).
  reasoning_effort: high                        # Enables reasoning mode high / low / or null for non-reasoning

  rollout:                                      # How responses are generated for GRPO/advantage calc.
    advantage_strategy:
      number_generation: 2                      # N samples per prompt to estimate advantages (variance vs cost).
    generator:
      max_new_tokens: 6000                      # Cap on tokens generated per sample
      set_random_seed: true                     # Seed generation for reproducibility across runs.
      temperature: 1                            # Softmax temperature;
      top_k: 1                                  # Sample only from top-K logits
    rewards:
      preset_reward_function: null              # Usage of preset reward functions [exact_match]
      api_endpoint:
        lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name>
        lambda_concurrency_limit: 12             # Max concurrent Lambda invocations (throughput vs. throttling).

  trainer:
    max_steps: 2                                 # Steps to train for. One Step = global_batch_size
    save_steps: 5
    test_steps: 1

    # RL parameters
    ent_coeff: 0.0                              # A bonus added to the policy loss that rewards higher-output entropy.
    kl_loss_coef: 0.001                         # Weight on the KL penalty between the actor (trainable policy) and a frozen reference model

    optim_config:                    # Optimizer settings
        lr: 5e-5                       # Learning rate
        weight_decay: 0.0              # L2 regularization strength (0.0–1.0)
        adam_beta1: 0.9
        adam_beta2: 0.95

    peft:                            # Parameter-efficient fine-tuning (LoRA)
        peft_scheme: "lora"            # Enable LoRA for PEFT
        lora_tuning:
            alpha: 32
            lora_plus_lr_ratio: 64.0     # LoRA+ learning rate scaling factor (0.0–100.0)
```

## Entrenamiento RFT con LLM como juez
<a name="nova-rft-llm-judge"></a>

### Descripción general
<a name="nova-rft-llm-judge-overview"></a>

Los modelos de lenguaje de gran tamaño (LLM) se utilizan cada vez más como jueces en los flujos de trabajo de refinamiento por refuerzo (RFT), ya que proporcionan señales de recompensas automatizadas que guían la optimización de los modelos. Con este enfoque, el LLM evalúa las salidas del modelo en función de criterios específicos (ya sea la corrección, la calidad, la adherencia al estilo o la equivalencia semántica) y asigna recompensas que impulsan el proceso de aprendizaje por refuerzo.

Esto es particularmente valioso para tareas en las que las funciones de recompensas tradicionales son difíciles de definir mediante programación, como determinar si diferentes representaciones (como “1/3”, “0,333” y “un tercio”) son semánticamente equivalentes, o evaluar cualidades matizadas como la coherencia y la relevancia. Al utilizar jueces basados en LLM como funciones de recompensas, puede escalar el RFT a dominios complejos sin necesidad de una amplia anotación humana, lo que permite una iteración rápida y una mejora continua de los modelos en varios casos de uso, más allá de los problemas de alineación tradicionales.

### Selección del modo de razonamiento
<a name="nova-rft-reasoning-mode"></a>

**Modos disponibles**
+ ninguno: sin razonamiento (omita el campo reasoning\$1effort)
+ bajo: sobrecarga de razonamiento mínima
+ alto: capacidad de razonamiento máxima (opción predeterminada cuando se especifica reasoning\$1effort)

**nota**  
No hay una opción media para el RFT. Si el campo reasoning\$1effort no está en la configuración, el razonamiento está desactivado. Cuando el razonamiento está habilitado, debe configurar `max_new_tokens` en 32 768 para dar cabida a las salidas de razonamiento extendido.

**Cuándo se debe usar cada modo**

Utilice el razonamiento alto para:
+ Tareas analíticas complejas
+ Resolución de problemas matemáticos
+ Deducción lógica de varios pasos
+ Tareas en las que pensar paso a paso agrega valor

Utilice ninguno (omita reasoning\$1effort) o un razonamiento bajo para:
+ Consultas de hechos sencillas
+ Clasificaciones directas
+ Optimización de velocidad y costo
+ Preguntas y respuestas directas

**Compensaciones de costo y rendimiento**

Los modos de razonamiento alto aumentan lo siguiente:
+ Tiempo y costo del entrenamiento
+ Latencia y costo de la inferencia
+ Capacidad del modelo para tareas de razonamiento complejas

### Validación del juez de LLM
<a name="nova-rft-validating-judge"></a>

Antes de implementar un LLM como juez en producción, compruebe que las evaluaciones del modelo del juez se ajusten al juicio humano. Esto implica:
+ Medir las tasas de acuerdo entre el juez de LLM y los evaluadores humanos sobre muestras representativas de la tarea
+ Garantizar que el acuerdo del LLM con las personas cumpla o supere las tasas de acuerdo interhumano
+ Identificar posibles sesgos en el modelo del juez
+ Crear la confianza de que la señal de recompensas guíe al modelo en la dirección deseada

Este paso de validación ayuda a garantizar que el proceso de evaluación automatizada produzca modelos que cumplan con los criterios de calidad de producción.

### Configuración de Lambda para juez de LLM
<a name="nova-rft-lambda-config"></a>

El uso de un LLM como juez es una extensión del uso de las funciones de Lambda para el aprendizaje por refuerzo con recompensas verificables (RLVR). Dentro de la función de Lambda, puede hacer una llamada a uno de los modelos alojados en Amazon Bedrock.

**Requisitos de configuración importantes:**


| Configuración | Requisito | Details | 
| --- | --- | --- | 
| Rendimiento de Amazon Bedrock | Cuota suficiente | Asegúrese de que la cuota de rendimiento para el modelo de Amazon Bedrock utilizado sea suficiente para la carga de trabajo de entrenamiento. | 
| Tiempo de espera de Lambda | Tiempo de espera ampliado | Configure el tiempo de espera de la función de Lambda en hasta un máximo de 15 minutos. La configuración predeterminada es de 3 segundos, lo que no es suficiente para las respuestas del modelo de Amazon Bedrock. | 
| Simultaneidad de Lambda | Mayor simultaneidad | La función de Lambda se invoca en paralelo durante el entrenamiento. Aumente la simultaneidad para maximizar el rendimiento disponible. | 
| Configuración de fórmulas | Coincidencia de la configuración de Lambda | El límite de simultaneidad debe estar configurado en la fórmula. | 

## Creación y ejecución de trabajos
<a name="nova-rft-creating-jobs"></a>

**Inicio de un trabajo de entrenamiento**

Utilice la plantilla de cuaderno de trabajos de entrenamiento de SageMaker: [https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tuning-training-job.html#nova-model-training-jobs-notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tuning-training-job.html#nova-model-training-jobs-notebook).

**Requisitos de instancias**

El contenedor admite tanto el entrenamiento de rango completo como el de LoRA:
+ **Entrenamiento de LoRA**: 2/4/6/8 × instancias p5.48xlarge o p5en.48xlarge
+ **Entrenamiento de rango completo**: 2/4/6/8 × instancias p5.48xlarge (obligatorias)

## Supervisión del entrenamiento
<a name="nova-rft-monitoring"></a>

Los registros de entrenamiento incluyen métricas completas en cada paso. Categorías de métricas clave:

**Métricas de recompensas**
+ `critic/rewards/mean`, `critic/rewards/max`, `critic/rewards/min`: distribución de recompensas
+ `val-score/rewards/mean@1`: recompensas de validación

**Comportamiento del modelo**
+ `actor/entropy`: variación de la política (mayor = más exploratoria)

**Estado del entrenamiento**
+ `actor/pg_loss`: pérdida de gradiente de la política
+ `actor/pg_clipfrac`: frecuencia de las actualizaciones recortadas
+ `actor/grad_norm`: magnitud del gradiente

**Características de la respuesta**
+ `prompt_length/mean`, `prompt_length/max`, `prompt_length/min`: estadísticas del token de entrada
+ `response_length/mean`, `response_length/max`, `response_length/min`: estadísticas del token de salida
+ `response/aborted_ratio`: porcentaje de generación incompleta (0 = todo completado)

**Desempeño**
+ `perf/throughput`: rendimiento del entrenamiento
+ `perf/time_per_step`: tiempo por paso del entrenamiento
+ `timing_per_token_ms/*`: tiempo de procesamiento por token

**Uso de recursos**
+ `perf/max_memory_allocated_gb`, `perf/max_memory_reserved_gb`: memoria de la GPU
+ `perf/cpu_memory_used_gb`: memoria de la CPU

## Uso de modelos de ajuste fino
<a name="nova-rft-using-models"></a>

Después de finalizar el entrenamiento, el punto de control final del modelo se guarda en la ubicación de salida especificada. La ruta del punto de control está disponible en:
+ Registros de entrenamiento
+ Archivo `manifest.json` en la ubicación de salida de Amazon S3 (definida por `output_s3_uri` en el cuaderno)

## Limitaciones y prácticas recomendadas
<a name="nova-rft-limitations"></a>

**Limitaciones**
+ **Tiempo de espera de Lambda**: las funciones de recompensas deben completarse en 15 minutos (evita procesos fuera de control y administra los costos).
+ **Solo turno único**: no se admiten conversaciones de varios turnos.
+ **Requisitos de datos**: necesita una diversidad suficiente, ya que tiene dificultades para obtener recompensas escasas (menos del 5 % de ejemplos positivos).
+ **Costo computacional**: es más caro que el refinamiento supervisado.
+ **Sin datos multimodales**: solo se admite el tipo de datos de texto.

**Prácticas recomendadas**

**Empezar poco a poco**
+ Comience con entre 100 y 200 ejemplos.
+ Valide la corrección de la función de recompensas.
+ Escale de forma gradual en función de los resultados.

**Evaluación del entrenamiento previo**
+ Pruebe el rendimiento del modelo de línea de base antes del RFT.
+ Si las recompensas son del 0 % de forma constante, utilice antes el SFT para establecer las capacidades básicas
+ Si las recompensas son superiores al 95 %, es posible que el RFT no sea necesario.

**Supervisión del entrenamiento**
+ Haga un seguimiento del promedio de las puntuaciones y la distribución de las recompensas
+ Observe si hay sobreajuste (aumento de recompensas de entrenamiento con disminución de recompensas de validación).
+ Busque patrones preocupantes:
  + Recompensas que se estancan por debajo de 0,15
  + Aumento de la variación de las recompensas a lo largo del tiempo
  + Reducción del rendimiento de validación

**Optimización de las funciones de recompensas**
+ Ejecución en segundos (no minutos)
+ Minimice las llamadas a la API externa.
+ Use algoritmos eficientes.
+ Implemente una gestión de errores adecuada.
+ Aproveche el escalado paralelo de Lambda.

**Estrategia de iteración**

Si las recompensas no mejoran:
+ Ajuste el diseño de la función de recompensas.
+ Aumente la diversidad de los conjuntos de datos.
+ Agregue más ejemplos representativos.
+ Verifique que las señales de recompensas sean claras y coherentes.

## Capacidades avanzadas: Nova Forge
<a name="nova-rft-advanced"></a>

Para los usuarios que requieren capacidades avanzadas más allá de las limitaciones del RFT estándar, Nova Forge está disponible como un servicio de suscripción de pago que ofrece:
+ Soporte para conversación de varios turnos
+ Funciones de recompensas con un tiempo de ejecución superior a 15 minutos
+ Algoritmos y opciones de ajuste adicionales
+ Modificaciones de fórmulas de entrenamiento personalizadas
+ Técnicas de IA de vanguardia

Nova Forge se ejecuta en SageMaker HyperPod y se ha diseñado para ayudar a los clientes empresariales a crear sus propios modelos de frontera.

## Comandos y consejos útiles
<a name="nova-rft-useful-commands"></a>

Hay disponible una colección de [scripts de observabilidad](https://github.com/aws-samples/amazon-nova-samples/tree/main/customization/SageMakerUilts/SageMakerJobsMonitoring) para ayudar a supervisar el estado y el progreso de los trabajos de entrenamiento.

Los scripts disponibles le permiten:
+ Habilitar las notificaciones de correo electrónico para actualizar el estado de los trabajos de entrenamiento
+ Obtener estimaciones del tiempo de entrenamiento en función de las configuraciones de los trabajos
+ Obtener aproximaciones del tiempo que se espera que dure el entrenamiento para los trabajos en curso

**Instalación**

**nota**  
Asegúrese de actualizar las credenciales de AWS antes de utilizar cualquiera de los siguientes scripts.

```
pip install boto3
git clone https://github.com/aws-samples/amazon-nova-samples.git
cd amazon-nova-samples/customization/SageMakerUilts/SageMakerJobsMonitoring/
```

**Uso básico**

```
# Enabling email notifications for training job status updates
python enable_sagemaker_job_notifs.py --email test@amazon.com test2@gmail.com --region us-east-1 --platform SMTJ

Creating resources........
Please check your email for a subscription confirmation email, and click 'Confirm subscription' to start receiving job status email notifications!
You'll receive the confirmation email within a few minutes.
```

```
# Obtaining training time estimates based on job configurations
python get_training_time_estimate.py
```

```
# Obtaining approximations for how long training is expected to take for in-progress jobs
python get-training-job-progress.py --region us-east-1 --job-name my-training-job --num-dataset-samples 1000
```

Consulte [en esta página](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/SageMakerUilts/SageMakerJobsMonitoring/README.md) los detalles y ejemplos adicionales.