

# Refinamiento de Nova 1.0
<a name="nova-fine-tune-1"></a>

**nota**  
Puede refinar los modelos de la serie Amazon Nova 1.0 mediante el refinamiento supervisado (SFT) y la optimización de preferencias directas (DPO). Para obtener información sobre refinamiento de modelos de Nova 2.0, consulte [Fine-tune Nova 2.0](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-fine-tune-2.html).

## Requisitos previos
<a name="nova-model-training-jobs-prerequisites"></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).

## Preparación de datos
<a name="nova-model-training-prepare-data"></a>

Preparar datos de alta calidad y con el formato adecuado es un primer paso fundamental en el proceso de refinamiento de los modelos de lenguaje de gran tamaño. Tanto si utiliza el refinamiento supervisado (SFT) como la optimización de preferencias directas (DPO), con enfoques de adaptación de rango completo o de rango bajo (LoRA), sus datos deben cumplir requisitos de formato específicos para garantizar un entrenamiento correcto del modelo. En esta sección se describen los formatos de datos, los métodos de validación y las prácticas recomendadas necesarias para ayudarle a preparar sus conjuntos de datos de forma eficaz para refinar los modelos de Amazon Nova.

### Requisitos del formato de los datos
<a name="nova-model-training-prepare-data-format"></a>

**SFT**

Requisitos de formato de los datos del SFT: los datos deben seguir el formato que se muestra más abajo tanto para el SFT de rango completo como para el SFT LoRA. Para ver ejemplos y restricciones de este formato, consulte [Preparación de datos para el refinamiento multimodal](fine-tune-prepare-data-understanding.md).

Validación de datos SFT: para validar el formato del conjunto de datos antes de enviarlo, le recomendamos que utilice el siguiente script de validación del [repositorio de muestras de Amazon Bedrock](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/bedrock-fine-tuning/nova/understanding/dataset_validation/nova_ft_dataset_validator.py). Esta herramienta de validación le ayudará a garantizar que sus archivos `jsonl` cumplan con las especificaciones de formato requeridas y a identificar cualquier posible problema antes de enviar su trabajo de refinamiento.

**DPO**

Requisitos de formato de datos de la DPO: los datos deben seguir el formato que se muestra más abajo tanto para la DPO de rango completo como para la DPO LoRA. El conjunto de datos también debe tener un formato similar al de SFT, excepto que el último turno debe tener pares de preferencias.

Otras restricciones del conjunto de datos de DPO: las demás restricciones de los conjuntos de datos son las mismas para el SFT. Para obtener más información, consulte [Preparación de datos para el refinamiento multimodal](fine-tune-prepare-data-understanding.md). Se espera un único archivo JSONL para el entrenamiento y un solo archivo JSONL para la validación. El conjunto de validación es opcional.

Recomendaciones del conjunto de datos del DPO: un mínimo de 1000 pares de preferencias para un entrenamiento efectivo. Los datos de preferencias de alta calidad darán como resultado resultados más eficientes.

### Ejemplos
<a name="nova-model-training-prepare-data-example"></a>

**Formato de datos de DPO de muestra**

```
// N-1 turns same as SFT format
{
    "role": "assistant",
    "candidates": [
        {
            "content": [
                {
                    "text": "..."
                } // content list can contain multiple 'text' objects
            ],
            "preferenceLabel": "preferred"
        },
        {
            "content": [
                {
                    "text": "..."
                } // content list can contain multiple 'text' objects
            ],
            "preferenceLabel": "non-preferred"
        }
    ]
}
```

**Formato de datos de DPO de muestra (varios turnos)**

```
{
    "system": [
        {
            "text": "..."
        }
    ],
    "messages":[
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "assistant",
            "candidates": [
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "preferred"
                },
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "non-preferred"
                }
            ]
        }
    ],
}
```

**Formato de datos de DPO de muestra (con imágenes)**

```
{
    "system": [
        {
            "text": "..."
        }
    ],
    "messages":[
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                },
                {
                    "text": "..."
                },
                {
                    "image": {
                        "format": "jpeg",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-image.jpg",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                } // "content" can have multiple "text" and "image" objects.
                 // max image count is 10
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                },
                {
                    "text": "..."
                },
                {
                    "image": {
                        "format": "jpeg",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-image.jpg",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                } // "content" can have multiple "text" and "image" objects.
                 // max image count is 10
            ]
        },
        {
            "role": "assistant",
            "candidates": [
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "preferred"
                },
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "non-preferred"
                }
            ]
        }
    ],
}
```

### Límites de los conjuntos de datos
<a name="nova-model-training-prepare-data-limits"></a>

Los trabajos de entrenamiento tienen un límite de tiempo predeterminado de 1 día, aunque las estimaciones en las tablas siguientes suponen una duración de entrenamiento de 5 días con fines ilustrativos. Como práctica recomendada, sugerimos aumentar el límite de tiempo de entrenamiento a un máximo de 28 días para acomodar cargas de trabajo de entrenamiento más prolongadas. Para solicitar un aumento de este límite, consulte [Solicitar un aumento de cuota](https://docs.aws.amazon.com//servicequotas/latest/userguide/request-quota-increase.html).

**Límites de los conjuntos de datos de SFT**



- ** Trabajos con una longitud de contexto de 32 000 **
  - **Modelo:** Amazon Nova Micro / **Método:** Rango completo y LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 100 000 registros.
  - **Modelo:** Amazon Nova Lite / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 100 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 50 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 100 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 90 000 registros.
  - **Modelo:** Amazon Nova Pro / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 40 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 30 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 40 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 35 000 registros.

- ** Trabajos con una longitud de contexto de 64 000 **
  - **Modelo:** Amazon Nova Micro / **Método:** Rango completo y LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 50 000 registros.
  - **Modelo:** Amazon Nova Lite / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 50 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 30 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** - / **Descripción:** Nova Lite no es compatible con LoRA a 64 000.
  - **Modelo:** Amazon Nova Pro / **Método:** Rango completo y LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 17 000 registros.
  - **Conjuntos de datos:** Imagen y vídeo / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 15 000 registros.



Límites de los conjuntos de datos de DPO



- ** Trabajos con una longitud de contexto de 16 000 **
  - **Modelo:** Amazon Nova Micro / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 120 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 125 000 registros.
  - **Modelo:** Amazon Nova Lite / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 130 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, puede completar 20 000 muestras en 2 días.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 140 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, puede completar 20 000 muestras en 2 días.
  - **Modelo:** Amazon Nova Pro / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 45 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, puede completar 20 000 muestras en 4 días.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 55 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 16 000 y, por ejemplo, se ejecutan durante 5 épocas, puede completar 20 000 muestras en 4 días.

- ** Trabajos con una longitud de contexto de 32 000 **
  - **Modelo:** Amazon Nova Micro / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 45 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, solo podrá tener hasta 50 000 registros.
  - **Modelo:** Amazon Nova Lite / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 55 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 35 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 60 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 35 000 registros.
  - **Modelo:** Amazon Nova Pro / **Método:** Rango completo / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 20 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 16 000 registros.
  - **Método:** LoRA / **Conjuntos de datos:** Solo texto / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 32 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 22 000 registros.
  - **Conjuntos de datos:** Image / **Descripción:** Si utiliza un conjunto de datos en el que todos los registros tienen una longitud de contexto de 64 000 y, por ejemplo, se ejecutan durante 5 épocas, podrá tener hasta 18 000 registros.



Al reducir el número de épocas o la longitud del contexto de sus registros, podrá proporcionar más registros.

## Configuraciones SFT de rango completo y LoRA PEFT
<a name="nova-model-training-jobs-recipe-config"></a>

En esta sección se ofrecen directrices sobre las configuraciones de fórmulas tanto para el refinamiento supervisado de rango completo (SFT) como para el refinamiento eficiente en parámetros de adaptación de rango bajo (LoRA PEFT). Estos archivos de fórmulas sirven como esquema para sus trabajos de personalización de modelos, permitiéndole especificar los parámetros de entrenamiento, los hiperparámetros y otros ajustes críticos que determinan cómo su modelo aprende de los datos. Para ajustar los hiperparámetros, siga las instrucciones de [Selección de hiperparámetros](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html).

### Configuraciones de refinamiento (SFT de rango completo y LoRA PEFT)
<a name="nova-model-training-jobs-recipe-config-1"></a>

La única diferencia entre la SFT de rango completo y la LoRA PEFT en términos de fórmula es la configuración de la LoRA PEFT, que se establece en “nula” para el rango completo y se establece en los valores adecuados si se utiliza un refinamiento basado en LoRA PEFT. Hay fórmulas de ejemplo disponibles en el repositorio de [fórmulas](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) de GitHub. En las siguientes tablas se muestran configuraciones detalladas que pueden resultarle de utilidad.

Acerca de la **configuración “run”**.


|  | Key | Definición | Micro | Lite | Pro | 
| --- | --- | --- | --- | --- | --- | 
| Configuración de una ejecución | model\_type | Especifica la variante del modelo Nova que desea utilizar. No modifique este campo.  | “amazon.nova-micro-v1:0:128k” | “amazon.nova-lite-v1:0:300k” | “amazon.nova-pro-v1:0:300k” | 
|  | model\_name\_or\_path | La ruta al modelo base. | “nova-micro/prod” | “nova-lite/prod” | “nova-pro/prod” | 
|  | replicas | El número de instancias de computación que se van a utilizar para el entrenamiento distribuido. | 2, 4 o 8 | 4 8 o 16 | 6, 12 o 24 | 

Acerca de la **configuración “training\_config”**.



- ****
  - **Clave raíz:** 
  - **Claves secundarias:** max\_length
  - **Definición:** Longitud máxima de secuencia en tokens. Determina el tamaño de la ventana de contexto para entrenamiento. Se puede ajustar al múltiplo más cercano de 1024, valor máximo: 65536 (para Lite LoRA 32768).
  - **Mínimo:** 1024
  - **Máximo:** 65536, excepto Lite LoRA, que admite 32768.

- ****
  - **Clave raíz:** 
  - **Claves secundarias:** global\_batch\_size
  - **Definición:** Muestras totales por paso, los valores permitidos son 16, 32, 64. Valor máximo: 32 para Nova Pro, 64 para Nova Lite y Micro.
  - **Mínimo:** 16
  - **Máximo:** 32 para Nova Pro, 64 para Nova Lite y Micro.

- ****Configuración del entrenador****
  - **Clave raíz:** trainer
  - **Claves secundarias:** max\_epochs
  - **Definición:** El número de pasadas completas en el conjunto de datos de entrenamiento. Para la mayoría de las tareas de personalización, suelen ser suficientes de 1 a 5 épocas. Se recomienda conservar un máximo de 5.
  - **Mínimo:** 1
  - **Máximo:** -

- ****Configuración de modelos****
  - **Clave raíz:** model / **Claves secundarias:** hidden\_dropout / **Definición:** Probabilidad de eliminar salidas de estado ocultas. Aumente (0,0-0,2) para reducir el ajuste excesivo en conjuntos de datos más pequeños. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model / **Claves secundarias:** attention\_dropout / **Definición:** Probabilidad de perder ponderaciones de atención. Puede ayudar con la generalización. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model / **Claves secundarias:** ffn\_dropout / **Definición:** Probabilidad de que disminuyan las salidas de red de prealimentada. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1

- ****Configuración del optimizador****
  - **Clave raíz:** model.optim / **Claves secundarias:** lr / **Definición:** Tasa de aprendizaje, controla el tamaño de los pasos durante la optimización. Los límites están entre 0 y 1. Por lo general, se establece entre 1e-6 y 1e-4 para un buen rendimiento. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** name / **Definición:** Algoritmo optimizador. En la actualidad, solo se admite `distributed_fused_adam`. / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.optim / **Claves secundarias:** adam\_w\_mode / **Definición:** Habilite el modo AdamW (verdadero/falso). / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.optim / **Claves secundarias:** eps / **Definición:** Epsilon para una estabilidad numérica. / **Mínimo:**  / **Máximo:** 
  - **Clave raíz:** model.optim / **Claves secundarias:** weight\_decay / **Definición:** Fuerza de regularización L2, debe estar entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** betas / **Definición:** Betas del optimizador Adam, deben estar entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** sched\_warmup\_steps / **Definición:** Número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Entre 1 y 20. / **Mínimo:** 1 / **Máximo:** 20
  - **Clave raíz:** model.optim / **Claves secundarias:** sched\_constant\_steps / **Definición:** Pasos a un ritmo de aprendizaje constante. / **Mínimo:** 1.00E-10 / **Máximo:** 1.00E-06
  - **Clave raíz:** model.optim / **Claves secundarias:** sched.min\_lr / **Definición:** Tasa mínima de aprendizaje al final de la degradación. Los límites están entre 0 y 1, pero deben ser inferiores a la tasa de aprendizaje. / **Mínimo:** 0 / **Máximo:** 1

- ** ** Configuración de LoRA PEFT** **
  - **Clave raíz:** model.peft / **Claves secundarias:** peft\_scheme / **Definición:** Utilice “lora” o “null”. “lora” utiliza el método LoRA PEFT para un refinamiento eficiente en parámetros. “null” inicia un refinamiento de rango completo. / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.loraplus\_lr\_ratio / **Definición:** El factor de escalado de la tasa de aprendizaje de LoRA\+ debe estar entre 0,0 y 100,0. / **Mínimo:** 0 / **Máximo:** 100
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.alpha / **Definición:** Factor de escalado para ponderaciones de LoRA. Los valores permitidos son 32, 64, 96, 128, 160 y 192. / **Mínimo:** 32 / **Máximo:** 192
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.adapter\_dropout / **Definición:** Regularización de los parámetros de LoRA. Debe estar entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1



### Configuraciones específicas del refinamiento (DPO)
<a name="nova-model-training-jobs-recipe-config-2"></a>

La única diferencia entre la optimización de preferencias directas (DPO) en comparación con la LoRA PEFT y la SFT de rango completo radica en la configuración de dpo\_cfg y los valores permitidos. Consulte la tabla que aparece a continuación para conocer el ejemplo permitido específicamente para la DPO. Hay fórmulas de ejemplo disponibles en el repositorio de [fórmulas](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) de GitHub. En la siguiente tabla se muestran configuraciones detalladas que pueden resultarle útiles.



- ****
  - **Clave raíz:** 
  - **Claves secundarias:** max\_length
  - **Definición:** Longitud máxima de secuencia en tokens. Determina el tamaño de la ventana de contexto para entrenamiento. Se puede ajustar al múltiplo de 1024 más cercano, valor máximo: 32 768.
  - **Mínimo:** 1024
  - **Máximo:** 32 768

- ****
  - **Clave raíz:** 
  - **Claves secundarias:** global\_batch\_size
  - **Definición:** Tamaño de lote global; los valores permitidos son {16, 32, 64, 128, 256}.
  - **Mínimo:** 16
  - **Máximo:** 256

- ****Configuración del entrenador****
  - **Clave raíz:** trainer
  - **Claves secundarias:** max\_epochs
  - **Definición:** El número de pasadas completas en el conjunto de datos de entrenamiento. Para la mayoría de las tareas de personalización, suelen ser suficientes de 1 a 5 épocas. El número máximo de épocas es de 5.
  - **Mínimo:** 1
  - **Máximo:** 5

- ****Configuración de modelos****
  - **Clave raíz:** model / **Claves secundarias:** hidden\_dropout / **Definición:** Probabilidad de eliminar salidas de estado ocultas. Aumente (0,0-0,2) para reducir el ajuste excesivo en conjuntos de datos más pequeños. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model / **Claves secundarias:** attention\_dropout / **Definición:** Probabilidad de perder ponderaciones de atención. Puede ayudar con la generalización. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model / **Claves secundarias:** ffn\_dropout / **Definición:** Probabilidad de que disminuyan las salidas de red de prealimentada. Los límites están entre 0 y 1. / **Mínimo:** 0 / **Máximo:** 1

- ****Configuración del optimizador****
  - **Clave raíz:** model.optim / **Claves secundarias:** lr / **Definición:** Tasa de aprendizaje, controla el tamaño de los pasos durante la optimización. Los límites están entre 0 y 1. Por lo general, se establece entre 1e-6 y 1e-4 para un buen rendimiento. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** name / **Definición:** Algoritmo optimizador. En la actualidad, solo se admite `distributed_fused_adam`. / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.optim / **Claves secundarias:** adam\_w\_mode / **Definición:** Habilite el modo AdamW (verdadero/falso). / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.optim / **Claves secundarias:** eps / **Definición:** Epsilon para una estabilidad numérica. / **Mínimo:** 1.00E-10 / **Máximo:** 1.00E-06
  - **Clave raíz:** model.optim / **Claves secundarias:** weight\_decay / **Definición:** Fuerza de regularización L2, debe estar entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** betas / **Definición:** Betas del optimizador Adam, deben estar entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1
  - **Clave raíz:** model.optim / **Claves secundarias:** sched\_warmup\_steps / **Definición:** Número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Entre 1 y 20. / **Mínimo:** 1 / **Máximo:** 20
  - **Clave raíz:** model.optim / **Claves secundarias:** sched\_constant\_steps / **Definición:** Pasos a un ritmo de aprendizaje constante. / **Mínimo:**  / **Máximo:** 
  - **Clave raíz:** model.optim / **Claves secundarias:** sched.min\_lr / **Definición:** Tasa mínima de aprendizaje al final de la degradación. Los límites están entre 0 y 1, pero deben ser inferiores a la tasa de aprendizaje. / **Mínimo:** 0 / **Máximo:** 1

- ** ** Configuración de LoRA PEFT** **
  - **Clave raíz:** model.peft / **Claves secundarias:** peft\_scheme / **Definición:** Utilice “lora” o “null”. “lora” utiliza el método LoRA PEFT para un refinamiento eficiente en parámetros. “null” inicia un refinamiento de rango completo. / **Mínimo:** - / **Máximo:** -
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.loraplus\_lr\_ratio / **Definición:** El factor de escalado de la tasa de aprendizaje de LoRA\+ debe estar entre 0,0 y 100,0. / **Mínimo:** 0 / **Máximo:** 100
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.alpha / **Definición:** Factor de escalado para ponderaciones de LoRA. Los valores permitidos son 32, 64, 96, 128, 160 y 192. / **Mínimo:** 32 / **Máximo:** 192
  - **Clave raíz:** model.peft / **Claves secundarias:** lora\_tuning.adapter\_dropout / **Definición:** Regularización de los parámetros de LoRA. Debe estar comprendido entre 0,0 y 1,0. / **Mínimo:** 0 / **Máximo:** 1

- ****Configuración de DPO****
  - **Clave raíz:** model-dpo\_cfg
  - **Claves secundarias:** beta
  - **Definición:** Fuerza de la aplicación de las preferencias.
  - **Mínimo:** 0.001
  - **Máximo:** 0.1



## Puesta en marcha del modelo de Nova personalizado en Trabajos de entrenamiento de SageMaker
<a name="nova-model-training-jobs-notebook"></a>

En esta sección se muestra cómo poner en marcha un modelo de Nova personalizado en Trabajos de entrenamiento de SageMaker a través de un entorno de cuaderno de Jupyter. Encontrará un ejemplo completo que explica el proceso de configuración e inicio de un trabajo de entrenamiento, junto con tablas de referencia para seleccionar las URI de la imagen del contenedor y las configuraciones de instancias adecuadas. Este enfoque le aporta un control programático de sus flujos de trabajo de refinamiento y, al mismo tiempo, aprovecha la infraestructura administrada de SageMaker AI para personalizar los modelos. Para obtener más información, consulte [Uso de un estimador de SageMaker AI para ejecutar un trabajo de entrenamiento](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

### Tablas de referencia
<a name="nova-model-training-jobs-reference-table"></a>

Antes de ejecutar el cuaderno de ejemplo, consulte las siguientes tablas para seleccionar las URI de la imagen del contenedor y las configuraciones de instancias adecuadas.

**Selección de la URI de la imagen**


| Fórmula | URI de imagen | 
| --- | --- | 
| URI de imagen de SFT | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest | 
| URI de imagen de DPO | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest | 

**Selección del tipo y el recuento de instancias**


| Modelo | Tipo de trabajo de refinamiento | Tipo de técnica | Tipo de instancia | Recuento de instancia recomendado | Recuento de instancias permitido | 
| --- | --- | --- | --- | --- | --- | 
| Amazon Nova Micro | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRA \+ rango completo | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p4d.24xlarge | 2 | 2, 4, 8 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 2, 4, 8 | 
|  | DPO | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRA \+ rango completo | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8 | 
| Amazon Nova Lite | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 4, 8, 16 | 
|  |  | LoRA \+ rango completo | p4d.24xlarge | 4 | 4, 8, 16 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8, 16 | 
|  | DPO | LoRA | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRA \+ rango completo | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 
| Amazon Nova Pro | SFT | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 3 | 3, 6, 12, 24 | 
|  |  | LoRA \+ rango completo | p5.48xlarge, p5en.48xlarge | 6 | 6, 12, 24 | 
|  | DPO | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  | LoRA \+ rango completo | p4d.24xlarge | 12 | 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 

### Cuaderno de ejemplo
<a name="nova-model-training-jobs-notebook"></a>

En el siguiente ejemplo de cuaderno se muestra cómo ejecutar un trabajo de entrenamiento. Para ver más cuadernos de introducción sobre cómo personalizar los modelos de Nova mediante Trabajos de entrenamiento de SageMaker, consulte [Use a SageMaker AI estimator to run a training job](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
# 1. Install dependencies

!pip install sagemaker==2.254.1

# 2. Import dependencies and initialize sagemaker session

import sagemaker,boto3

sm = boto3.client('sagemaker', region_name='us-east-1')
sagemaker_session = sagemaker.session.Session(boto_session=boto3.session.Session(), sagemaker_client=sm)

# 3. Configure your job
# Define the core configuration for launching a SageMaker Training Job. This includes input/output S3 URIs, container image, hardware setup, and other runtime parameters. Update the placeholders below before submitting the job.

job_name = "<Your Job Name>"

input_s3_uri = "<S3 path to input data>"
validation_s3_uri = "<S3 path to validation data>" # optional, leave blank if no validation data

output_s3_uri = "<S3 path to output location>"

image_uri = "<Image URI from documentation>" # you can choose the image for SFT/DPO
instance_type = "ml.p5.48xlarge" # do not change
instance_count = <Integer number of hosts> # change hosts as needed. Refer to documentation for allowed values based on model type.
role_arn = "<IAM Role you want to use to run the job>"
recipe_path = "<Local path to the recipe file>"
output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption

# 4. Launch SageMaker Training Job
# This block sets up and runs the SageMaker training job using the PyTorch estimator. It configures the training image, hardware, input channels, and TensorBoard integration. Validation data is included if provided.

from sagemaker.debugger import TensorBoardOutputConfig
from sagemaker.pytorch import PyTorch
from sagemaker.inputs import TrainingInput

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=output_s3_uri,
)

estimator = PyTorch(
    output_path=output_s3_uri,
    base_job_name=job_name,
    role=role_arn,
    instance_count=instance_count,
    instance_type=instance_type,
    training_recipe=recipe_path,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    tensorboard_output_config=tensorboard_output_config, # Add the setting for using TensorBoard.
    disable_profiler=True,
    debugger_hook_config=False,
    output_kms_key=output_kms_key
)

trainingInput = TrainingInput(
    s3_data=input_s3_uri,
    distribution='FullyReplicated',
    s3_data_type='Converse'
)

if (validation_s3_uri):
    validationInput = TrainingInput(
        s3_data=validation_s3_uri,
        distribution='FullyReplicated',
        s3_data_type='Converse'
    )

    estimator.fit(inputs={"train": trainingInput, "validation": validationInput}) # inputs must be called "train" and "validation", do not change
else:
    estimator.fit(inputs={"train": trainingInput})
```

## Consejos de optimización de hiperparámetros
<a name="nova-model-hyperparameter"></a>

Para refinar de forma eficaz el modelo de Nova LLM, es necesario seleccionar cuidadosamente los hiperparámetros. Aunque en esta sección se explican la estructura y los componentes básicos de la fórmula, la optimización de los hiperparámetros para su caso de uso específico suele requerir orientación adicional. Para obtener recomendaciones exhaustivas sobre la selección de hiperparámetros, las prácticas recomendadas y las estrategias de optimización, consulte [Selección de hiperparámetros](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html). Este recurso proporciona una guía detallada sobre cómo seleccionar las tasas de aprendizaje, los tamaños de los lotes, las épocas de entrenamiento y otros parámetros críticos adecuados en función de las características del conjunto de datos y los objetivos de entrenamiento. Recomendamos consultar esta guía al refinar la configuración de la fórmula para lograr un rendimiento óptimo del modelo.

Para obtener más información sobre los valores mínimos, máximos y predeterminados de las épocas, la tasa de aprendizaje y los pasos de calentamiento del aprendizaje, consulte [Hiperparámetros para modelos de comprensión](https://docs.aws.amazon.com//nova/latest/userguide/fine-tune-hyperparameters-understanding-models.html).

**Modificaciones comunes de las fórmulas**

Estos son algunos ajustes comunes de las fórmulas en función de casos de uso específicos:
+ **Para conjuntos de datos más pequeños (< 1000 ejemplos)**

  ```
  training_config:
      max_epochs: 2  # More passes through a smaller dataset
  model:
      hidden_dropout: 0.1  # Increase regularization
      weight_decay: 0.01   # Increase regularization
  ```
+ **Para lograr una mayor eficiencia con una computación limitada**

  ```
  peft:
      peft_scheme: "lora"
      lora_tuning:
  ```
+ **Para el refinamiento de instrucciones complejas**

  ```
  optim:
      lr: 5e-6  # Lower learning rate for more stable learning
      sched:
          warmup_steps: 100  # Longer warmup for stability
  ```