

# Entrenamiento previo continuo (CPT) sobre Nova 2.0 en SageMaker HyperPod
<a name="nova-cpt-2"></a>

Amazon Nova Lite 2.0 es un modelo de razonamiento entrenado con un conjunto de datos más amplio y diverso que Amazon Nova Lite 1.0. A pesar de ser un modelo más grande, Nova Lite 2.0 ofrece inferencias más rápidas que Nova Lite 1.0 y, al mismo tiempo, ofrece capacidades de razonamiento mejoradas, contextos más extensos y un rendimiento multilingüe mejorado.

Con CPT en Nova 2.0 Lite, puede ampliar estas capacidades avanzadas con datos específicos del dominio y desarrollar una amplia experiencia en áreas especializadas, al tiempo que mantiene las superiores capacidades de razonamiento y análisis del modelo.

## Fórmula del CPT de muestra
<a name="nova-cpt-2-sample-recipe"></a>

A continuación se ofrece una fórmula de muestra para el CPT. Puede encontrar esta fórmula y otras en el repositorio de [fórmulas de SageMaker HyperPod](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/nova) en GitHub.

```
# Note:
# This recipe can run on p5.48xlarge
# Run config
run:
  name: "my-cpt-run"                           # A descriptive name for your training job
  model_type: "amazon.nova-2-lite-v1:0:256k"   # Model variant specification, do not change
  model_name_or_path: "nova-lite-2/prod"        # Base model path, do not change
  replicas: 8                                   # Number of compute instances for training, allowed values are 4, 8, 16, 32
  data_s3_path: ""                              # Customer data paths
  validation_data_s3_path: ""                   # Customer validation data paths
  output_s3_path: ""                            # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training Jobs
  mlflow_tracking_uri: ""                       # Required for MLFlow
  mlflow_experiment_name: "my-cpt-experiment"   # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-cpt-run"                 # Optional for MLFlow. Note: leave this field non-empty

## Training specific configs
training_config:
  task_type: cpt
  max_length: 8192                              # Maximum context window size (tokens)
  global_batch_size: 256                        # Global batch size, allowed values are 32, 64, 128, 256.

  trainer:
    max_steps: 10                               # The number of training steps to run total
    val_check_interval: 10                      # The number of steps between running validation. Integer count or float percentage
    limit_val_batches: 2                        # Batches of the validation set to use each trigger

  model:
    hidden_dropout: 0.0                         # Dropout for hidden states, must be between 0.0 and 1.0
    attention_dropout: 0.0                      # Dropout for attention weights, must be between 0.0 and 1.0

  optim:
    optimizer: adam
    lr: 1e-5                                    # Learning rate
    name: distributed_fused_adam                # Optimizer algorithm, do not change
    adam_w_mode: true                           # Enable AdamW mode
    eps: 1e-06                                  # Epsilon for numerical stability
    weight_decay: 0.0                           # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9                             # Beta1 for Adam optimizer
    adam_beta2: 0.95                            # Beta2 for Adam optimizer
    sched:
      warmup_steps: 10                          # Learning rate warmup steps
      constant_steps: 0                         # Steps at constant learning rate
      min_lr: 1e-6                              # Minimum learning rate, must be lower than lr
```

## Inicio de un trabajo de preentrenamiento continuo en SageMaker HyperPod
<a name="nova-cpt-2-starting-job"></a>

### Preparación de los datos de entrada
<a name="nova-cpt-2-preparing-data"></a>

Para obtener información sobre el formato de datos, las características compatibles, las restricciones y las prácticas recomendadas para preparar los datos de entrenamiento de CPT, consulte [Preparación de datos para el CPT en Amazon Nova 2](nova-data-prep-cpt-2.md).

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

Cargue conjuntos de datos de entrenamiento y validación en un bucket de S3. Especifique estas ubicaciones en el bloque `run` de la fórmula:

```
## Run config
run:
  ...
  data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"
  validation_data_s3_path: "s3://<bucket-name>/<validation-directory>/<validation-file>.jsonl"
```

**nota**  
Sustituya `<bucket-name>`, `<training-directory>`, `<validation-directory>`, `<training-file>` y `<validation-file>` por las rutas de S3 reales.

### Definición de su configuración
<a name="nova-cpt-2-defining-config"></a>

Defina el modelo base mediante los campos `model_type` y `model_name_or_path` del bloque `run`:

```
## Run config
run:
  ...
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  ...
```

## Parámetros de ajuste del CPT
<a name="nova-cpt-2-tuning-parameters"></a>

Entre los parámetros disponibles para el refinamiento con CPT, se incluyen los siguientes:

**Configuración de una ejecución**  

+ **name**: nombre descriptivo para el trabajo de entrenamiento. Ayuda a identificar el trabajo en la Consola de administración de AWS.
+ **model\_type**: variante del modelo de Amazon Nova que desea utilizar. Las opciones disponibles son `amazon.nova-2-lite-v1:0:256k`.
+ **model\_name\_or\_path**: ruta al modelo base que desea utilizar para el entrenamiento. Las opciones disponibles son `nova-lite-2/prod` o la ruta de S3 para el punto de comprobación de entrenamiento posterior (`s3://customer-escrow-bucket-unique_id/training_run_name`).
+ **replicas**: número de instancias de computación que desea utilizar para entrenamiento distribuido. Los valores disponibles varían en función del modelo que elija. Amazon Nova Lite 2.0 admite 4, 8, 16 o 32 réplicas.
+ **data\_s3\_path**: ubicación de S3 del conjunto de datos de entrenamiento, que es un archivo JSONL. Este archivo debe residir en la misma región y cuenta de AWS que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región.
+ **validation\_data\_s3\_path** (opcional): ubicación de S3 del conjunto de datos de validación, que es un archivo JSONL. Este archivo debe residir en la misma cuenta y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región.
+ **output\_s3\_path**: ubicación de S3 donde se almacenan el manifiesto y los registros de TensorBoard. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta de AWS y región de AWS.
+ **mlflow\_tracking\_uri**: ARN de la aplicación de MLFlow que se usará para los registros de MLFlow
+ **mlflow\_experiment\_name**: nombre del experimento de MLFlow
+ **mlflow\_run\_name**: nombre de la ejecución de MLFlow

**Configuración de entrenamiento**  

+ **max\_length**: longitud máxima de la secuencia en tokens. Determina el tamaño de la ventana de contexto para entrenamiento. El valor máximo admitido es de 8192 tokens para CPT.

  Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Es recomendable que el parámetro max\_length coincida con la distribución de datos.
+ **global\_batch\_size**: número total de muestras de entrenamiento procesadas juntas en una sola pasada hacia delante o hacia atrás en todos los dispositivos y trabajadores.

  Este valor multiplica el tamaño del lote por dispositivo y el número de dispositivos. Afecta a la estabilidad del entrenamiento y al rendimiento. Le recomendamos que comience con un tamaño de lote que se ajuste fácilmente a la memoria y, a partir de ahí, se escale verticalmente. En el caso de datos específicos de un dominio, es posible que los lotes de mayor tamaño suavicen en exceso los gradientes.

**Ajustes del entrenador**  

+ **max\_steps**: número de pasos de entrenamiento que se ejecutarán. Cada paso entrenará al modelo con el número de elementos de `global_batch_size`

**Ajustes de modelos**  

+ **hidden\_dropout**: probabilidad de eliminar salidas de estado ocultas. Aumente este valor aproximadamente 0,0-0,2 para reducir el ajuste excesivo en conjuntos de datos más pequeños. Los valores válidos van de 0 a 1, ambos inclusive.
+ **attention\_dropout**: probabilidad de perder ponderaciones de atención. Este parámetro puede ayudar en la generalización. Los valores válidos van de 0 a 1, ambos inclusive.

**Configuración del optimizador**  

+ **lr**: tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. Los valores válidos van de 0 a 1, ambos inclusive.
+ **name**: algoritmo del optimizador. En la actualidad, solo se admite `distributed_fused_adam`.
+ **weight\_decay**: fuerza de regularización de L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización.
+ **warmup\_steps**: número de pasos para aumentar gradualmente la tasa de aprendizaje. Mejora la estabilidad del entrenamiento. Los valores válidos van de 1 a 20, ambos inclusive.
+ **min\_lr**: tasa mínima de aprendizaje al final de la degradación. Los valores válidos van de 0 a 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.