

# Entrenamiento iterativo
<a name="nova-iterative-training"></a>

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

El entrenamiento iterativo es el proceso de refinar repetidamente un modelo realizando varios ciclos de entrenamiento con diferentes métodos de entrenamiento (entrenar, evaluar, analizar errores y ajustar los datos, objetivos o hiperparámetros). Cada ronda comienza desde el punto de control anterior. Este enfoque le permite centrarse sistemáticamente en los modos de error del modelo, incorporar ejemplos seleccionados que aborden puntos débiles específicos y adaptarse a los requisitos que cambian con el tiempo.

**Ventajas en comparación con el entrenamiento de una sola iteración:**
+ **Mejora específica**: aborde los patrones de error específicos detectados en la evaluación.
+ **Perfeccionamiento adaptativo**: responda a los cambios de distribución o a la evolución de los requisitos de los productos.
+ **Mitigación de riesgos**: valide las mejoras de forma gradual en lugar de tener que hacer una sola sesión de entrenamiento de larga duración.
+ **Eficiencia de los datos**: centre los esfuerzos de recopilación de datos en las áreas en las que el modelo tenga un rendimiento inferior.
+ **Formación curricular**: haga varias rondas de entrenamiento con datos de cada vez mayor calidad.

## Funcionamiento
<a name="nova-iterative-how-it-works"></a>

### Ubicación de los puntos de control y acceso
<a name="nova-iterative-checkpoint-location"></a>

Una vez finalizado cada trabajo de entrenamiento, se genera un archivo de manifiesto en la ubicación de salida especificada por el parámetro `output_path` en la configuración del entrenamiento.

**Para acceder al punto de control**
+ Navegue hasta la `output_path` especificada en S3.
+ Descargue y extraiga el archivo `output.tar.gz`.
+ Abra el archivo `manifest.json`.
+ Localice el parámetro `checkpoint_s3_bucket`, que contiene el URI de S3 de su modelo entrenado.

**Ejemplo de la estructura de manifest.json**

```
{  
  "checkpoint_s3_bucket": "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>/stepID",  
  ...  
}
```

### Explicación de los buckets de custodia
<a name="nova-iterative-escrow-buckets"></a>

Dado que las ponderaciones de Amazon Nova son exclusivas, los puntos de control de los modelos entrenados se almacenan en **buckets de S3 de custodia** dentro de las cuentas administradas por AWS, en lugar de copiarlos en su cuenta. Estos buckets de custodia:
+ Guardan las ponderaciones de sus modelos personalizados de forma segura.
+ Pueden ser consultados por otros servicios de AWS (inferencia, evaluación y posteriores trabajos de entrenamiento).
+ Solo pueden ser accedidos por su cuenta de AWS mediante permisos de IAM.
+ Incurren en cargos de almacenamiento de S3 estándar en su cuenta (consulte Consideraciones sobre costos).

Puede usar la ruta del bucket de custodia a modo de `model_name_or_path` en su próxima sesión de entrenamiento para continuar con el entrenamiento iterativo.

### Uso de puntos de control para el entrenamiento iterativo
<a name="nova-iterative-using-checkpoints"></a>

Configure su siguiente trabajo de entrenamiento para que use el punto de control anterior como modelo base:

```
run:  
  name: "my-iterative-training-job"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<previous-job-name>"  
  data_s3_path: s3://<bucket>/<data-file>.jsonl  
  replicas: 4
```

## Cuándo utilizar el entrenamiento iterativo
<a name="nova-iterative-when-to-use"></a>

### Casos de uso ideales
<a name="nova-iterative-ideal-use-cases"></a>

Utilice el entrenamiento iterativo cuando tenga:
+ **Bucles de retroalimentación**: capacidad de recopilar casos de errores del mundo real y abordarlos de manera sistemática.
+ **Entornos dinámicos**: documentación, API o temas de soporte en evolución que requieran actualizaciones periódicas del modelo.
+ **Evaluación sólida**: pruebas comparativas y marcos de evaluación sólidos (consulte los ejemplos a continuación) para medir las mejoras con confianza.
+ **Capacidad de operaciones de ML**: recursos para gestionar varios ciclos de entrenamiento y control de versiones.

**Ejemplos de marcos de evaluación sólidos**
+ Conjuntos de pruebas comparativas automatizadas con umbrales de éxito o error
+ Protocolos de evaluación humana con métricas de fiabilidad entre evaluadores
+ Escenarios de pruebas de equipo rojo que tratan casos límite y entradas contradictorias
+ Infraestructura de pruebas A/B para medir el impacto en la producción

### Patrones comunes
<a name="nova-iterative-common-patterns"></a>

**Canalización SFT → RFT**: un patrón iterativo de uso frecuente implica lo siguiente:
+ **SFT primero**: enseñe al modelo cómo resolver problemas mediante ejemplos de demostración.
+ **RFT después**: optimice el rendimiento en un ámbito más amplio de problemas mediante señales de recompensa.

Este orden es esencial cuando los modelos tienen un rendimiento deficiente al principio: el RFT en modelos de precisión cercana a cero no mejorará el rendimiento sin establecer primero las capacidades básicas de resolución de problemas mediante el SFT.

### Cuándo no utilizar el entrenamiento iterativo
<a name="nova-iterative-when-not-to-use"></a>

Evite el entrenamiento iterativo en los siguientes casos:
+ **Tareas estables y bien definidas**: datos estacionarios con requisitos consistentes que ya lleguen a un rendimiento cercano al máximo.
+ **Problemas de clasificación sencillos**: tareas limitadas en las que basta con una entrenamiento de una sola iteración.
+ **Limitaciones de recursos**: falta de capacidades dedicadas de operaciones de ML para administrar varios ciclos de entrenamiento.
+ **Ganancias marginales**: cuando la sobrecarga no justifique mejoras mínimas en el rendimiento.

## Ejemplo de flujo de trabajo: SFT → RFT
<a name="nova-iterative-example-workflow"></a>

Este ejemplo muestra un patrón de entrenamiento iterativo común para los modelos de razonamiento.

### Paso 1: entrenamiento inicial con SFT
<a name="nova-iterative-step1"></a>

Configure e inicie el trabajo de entrenamiento con SFT con su conjunto de datos:

```
run:  
  name: "initial-sft-training"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "nova-lite-2/prod"  
  data_s3_path: s3://<bucket>/sft-training-data.jsonl  
  validation_data_s3_path: s3://<bucket>/sft-validation-data.jsonl
```

**Justificación**: SFT ofrece demostraciones adicionales que configuran los resultados de los modelos en la voz y el formato deseados, estableciendo las capacidades fundamentales.

**Una vez finalizado el entrenamiento**
+ Anote la `output_path` configurada en su trabajo de entrenamiento.
+ Descargue `output.tar.gz` desde esa ubicación.
+ Extraiga y busque `manifest.json`.
+ Copie el valor `checkpoint_s3_bucket`.

### Paso 2: entrenamiento con RFT en el punto de control del SFT
<a name="nova-iterative-step2"></a>

Cree un nuevo trabajo de entrenamiento con RFT utilizando el punto de control del SFT:

```
run:  
  name: "rft-on-sft-checkpoint"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<initial-sft-training>"  
  data_s3_path: s3://<bucket>/rft-training-data.jsonl  
  reward_lambda_arn: <your-reward-function-arn>
```

**Justificación**: el entrenamiento con RFT se basa en el SFT, lo que permite al modelo desarrollar patrones de razonamiento más complejos optimizados por su función de recompensa.

### Paso 3: evaluación e iteración
<a name="nova-iterative-step3"></a>

Ponga en marcha la evaluación en el punto de control del RFT para evaluar el rendimiento:

```
run:  
  name: "evaluate-rft-checkpoint"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<rft-on-sft-checkpoint>"  
  data_s3_path: s3://<bucket>/evaluation-data.jsonl
```

Si las métricas objetivo no se cumplen, continúe iterando con los datos o hiperparámetros ajustados.

**importante**  
La técnica de entrenamiento (LoRA o rango completo) debe permanecer constante en todas las iteraciones:  
Si usa SFT con **LoRA**, debe usar RFT con **LoRA**.
Si usa SFT con **rango completo**, debe usar RFT con **rango completo**.
No puede cambiar entre LoRA y rango completo a mitad del proceso

**importante**  
Si se usa una clave de KMS para el cifrado en el bucket de S3 resultante propiedad de Amazon, se debe usar esa misma clave de KMS en todas las iteraciones futuras.

## Supervisión del progreso en las iteraciones
<a name="nova-iterative-monitoring"></a>

Puede hacer un seguimiento de las métricas mediante MLflow [configurando MLflow](nova-model-monitor.md#nova-customization-mlflow-setup) para sus trabajos.

### Creación de una aplicación MLflow
<a name="nova-iterative-create-mlflow"></a>

**Uso de la interfaz de usuario de Studio**: si crea un trabajo de entrenamiento a través de la interfaz de usuario de Studio, se crea automáticamente una aplicación MLflow predeterminada que se selecciona por defecto en Opciones avanzadas.

**Uso de la CLI**: si usa la CLI, debe crear una aplicación MLflow y pasarla como entrada a la solicitud de la API del trabajo de entrenamiento.

```
mlflow_app_name="<enter your MLflow app name>"  
role_arn="<enter your role ARN>"   
bucket_name="<enter your bucket name>"   
region="<enter your region>"  
  
mlflow_app_arn=$(aws sagemaker create-mlflow-app \  
  --name $mlflow_app_name \  
  --artifact-store-uri "s3://$bucket_name" \  
  --role-arn $role_arn \  
  --region $region)
```

### Acceso a la aplicación MLflow
<a name="nova-iterative-access-mlflow"></a>

**Uso de la CLI**: cree una URL prefirmada para acceder a la interfaz de usuario de la aplicación MLflow:

```
aws sagemaker create-presigned-mlflow-app-url \  
  --arn $mlflow_app_arn \  
  --region $region \  
  --output text
```

**Uso de la interfaz de usuario de Studio:** la interfaz de usuario de Studio muestra las métricas clave almacenadas en MLflow y proporciona un enlace a la interfaz de usuario de la aplicación MLflow.

### Métricas clave para hacer un seguimiento
<a name="nova-iterative-key-metrics"></a>

Supervise estas métricas en las iteraciones para evaluar la mejora y hacer un seguimiento del progreso del trabajo:

**Para SFT**
+ Curvas de pérdidas de entrenamiento
+ Número de muestras consumidas y tiempo de procesamiento
+ Precisión del rendimiento en conjuntos de prueba reservados
+ Cumplimiento del formato (por ejemplo, velocidad de salida JSON válida)
+ Perplejidad en datos de evaluación específicos del dominio

**Para RFT**
+ Puntuaciones promedio de recompensa durante el entrenamiento
+ Distribución de las recompensas (porcentaje de respuestas con alta recompensa)
+ Tendencias de la recompensa en validación (atención al sobreajuste)
+ Tasas de éxito específicas por tarea (por ejemplo, tasa de aprobación en procesamiento de código, precisión en problemas matemáticos)

**General**
+ Diferencias de rendimiento en pruebas comparativas entre iteraciones
+ Puntuaciones de evaluación humana en muestras representativas
+ Métricas de producción (si se realiza una implementación iterativa)

### Cómo determinar cuándo parar
<a name="nova-iterative-when-to-stop"></a>

Deje de iterar en los siguientes casos:
+ **Rendimiento estancado**: el entrenamiento adicional ya no mejora significativamente las métricas objetivo
+ **Cambio de técnica para seguir progresando**: si una técnica se estanca, pruebe a cambiarla (por ejemplo, SFT → RFT → SFT) para superar los límites de rendimiento
+ **Métricas objetivo alcanzadas:** se cumplen sus criterios de rendimiento correcto.
+ **Regresión detectada**: las nuevas iteraciones reducen el rendimiento (consulte los procedimientos de reversión que aparecen a continuación)

Para obtener información detallada sobre los procedimientos de evaluación, consulte la sección **Evaluación**.

## Prácticas recomendadas
<a name="nova-iterative-best-practices"></a>

### Comience en pequeño y amplíe poco a poco
<a name="nova-iterative-start-small"></a>

Empiece con conjuntos de datos mínimos y épocas de entrenamiento únicas para validar su enfoque antes de escalar verticalmente. Esto genera confianza y permite identificar los problemas de forma temprana.

### Establezca métricas de éxito claras
<a name="nova-iterative-success-metrics"></a>

Defina los indicadores cuantitativos y cualitativos antes de empezar:

**Ejemplo de métricas de éxito por caso de uso**
+ **Respuesta a la pregunta**: precisión de coincidencia exacta, puntuación de F1, puntuaciones de preferencia humana
+ **Generación de código**: tasa de aprobación de las pruebas unitarias, éxito de compilación, tiempo de ejecución
+ **Tareas de razonamiento**: precisión de los pasos, exactitud de la respuesta final, puntuaciones de recompensa
+ **Generación de contenido**: puntuaciones de coherencia, precisión fáctica, adherencia al estilo

### Implemente la evaluación automatizada
<a name="nova-iterative-automated-eval"></a>

Configure procesos de evaluación automatizada para hacer un seguimiento del rendimiento después de cada ronda, lo que permitirá una iteración rápida y una comparación objetiva.

### Lleve a cabo un control de versiones riguroso
<a name="nova-iterative-version-control"></a>

Documente lo siguiente en cada iteración:
+ Versiones y modificaciones del conjunto de datos
+ Ubicaciones de los puntos de control del modelo
+ Cambios en los hiperparámetros
+ Métricas de rendimiento y diferencias de rendimiento
+ Observaciones cualitativas

Esto crea conocimiento institucional y permite la depuración.

### Céntrese en la calidad de datos antes que en la cantidad
<a name="nova-iterative-data-quality"></a>

Analice los casos de error de rondas anteriores y agregue ejemplos específicos y de alta calidad en lugar de simplemente aumentar el tamaño del conjunto de datos.

### Planifique el presupuesto de las iteraciones
<a name="nova-iterative-iteration-budget"></a>

Planifique **entre 3 y 5 iteraciones** como rango habitual:
+ **Entre 1 y 2 iteraciones**: suelen ser suficientes para llevar a cabo mejoras sencillas o para dar los toques finales.
+ **Entre 3 y 5 iteraciones**: adecuadas para tareas complejas que requieren varios ciclos de refinamiento.
+ **Más de 5 iteraciones**: esto puede indicar rendimientos decrecientes o la necesidad de adoptar enfoques distintos.

Ajuste el número en función del presupuesto computacional y las tasas de mejora del rendimiento.

### Implemente capacidades de restauración
<a name="nova-iterative-rollback"></a>

Si una iteración introduce regresiones, haga lo siguiente:
+ **Identifique la regresión**: compare las métricas de evaluación de los puntos de control.
+ **Regrese al punto de control anterior**: utilice la ruta de S3 del punto de control anterior como `model_name_or_path`.
+ **Ajuste el enfoque de entrenamiento**: modifique los datos, los hiperparámetros o la técnica antes de volver a intentarlo.
+ **Documente el error**: registre la causa de la regresión para evitar que se repita.

**Ejemplo de reversión**

```
run:  
  name: "rollback-to-iteration-2"  
  model_type: amazon.nova-2-lite-v1:0:256k  
  # Use iteration 2 checkpoint instead of failed iteration 3  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<iteration-2-job-name>"
```

## Consideraciones sobre costos
<a name="nova-iterative-cost"></a>

### Almacenamiento de puntos de control
<a name="nova-iterative-checkpoint-storage"></a>
+ **Ubicación**: los puntos de control almacenados en buckets de custodia incurren en cargos de almacenamiento de S3 estándar que se facturan a su cuenta de AWS.
+ **Retención**: los puntos de control se conservan indefinidamente a menos que se eliminen de forma explícita.
+ **Administración**: implemente políticas de ciclo de vida para archivar o eliminar los puntos de control antiguos que ya no necesite.

**Consejos par optimizar los costos**
+ Elimine los puntos de control intermedios después de validar las iteraciones más recientes.
+ Archive los puntos de control en S3 Glacier para conservarlos a largo plazo a un costo menor.
+ Defina políticas de retención en función de sus necesidades de cumplimiento y experimentación.

## Limitaciones
<a name="nova-iterative-limitations"></a>

### Consistencia en la familia de modelos
<a name="nova-iterative-model-consistency"></a>

Al entrenar de forma iterativa, debe usar el **mismo tipo de modelo** en todas las iteraciones.

**Entrenamiento inicial**

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

**Las iteraciones posteriores deben usar el mismo model\$1type**

```
run:  
  model_type: amazon.nova-2-lite-v1:0:256k  # Must match original  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

### Consistencia en la técnica de entrenamiento
<a name="nova-iterative-technique-consistency"></a>

La técnica de entrenamiento debe permanecer constante en todas las iteraciones:
+ Los **modelos entrenados con LoRA** solo se pueden entrenar de forma iterativa con LoRA.
+ Los **modelos entrenados en rango completo** solo se pueden entrenar de forma iterativa en rango completo.

**Cómo funcionan los adaptadores LoRA en el entrenamiento iterativo**
+ Cada iteración de entrenamiento con LoRA genera nuevas ponderaciones de adaptación
+ Los adaptadores nuevos sustituyen (no se apilan) a los adaptadores anteriores.
+ El modelo base permanece congelado; solo se actualizan los adaptadores.

### Matriz de compatibilidad de técnicas
<a name="nova-iterative-compatibility-matrix"></a>


| Entrenamiento inicial | Puede iterar con | 
| --- | --- | 
| SFT (rango completo) | SFT (rango completo), RFT (rango completo) | 
| SFT (LoRA) | SFT (LoRA), RFT (LoRA) | 
| RFT (rango completo) | RFT (rango completo) | 
| RFT (LoRA) | RFT (LoRA) | 

**Verificación de la compatibilidad antes de comenzar un trabajo**
+ Consulte la fórmula de entrenamiento anterior para identificar el tipo de modelo y la técnica de entrenamiento (LoRA o rango completo)
+ Asegúrese de que la nueva fórmula coincida tanto con el tipo de modelo como con la técnica
+ Revise el archivo manifest.json para confirmar que la ruta del punto de control sea correcta

## Solución de problemas
<a name="nova-iterative-troubleshooting"></a>

### Error: “Incompatible model training techniques detected”
<a name="nova-iterative-error-incompatible"></a>

**Causa**: la técnica de entrenamiento (LoRA o rango completo) no coincide con la técnica del punto de control.

**Solución**: asegúrese de que la fórmula utilice la misma técnica de entrenamiento que el modelo original:
+ Si el punto de control se entrenó con LoRA, use LoRA en la nueva fórmula
+ Si el punto de control se entrenó en rango completo, use el rango completo en la nueva fórmula

### Error: “Base model for the job extracted from model\$1name\$1or\$1path does not match model\$1type”
<a name="nova-iterative-error-base-model"></a>

**Causa**: el tipo de modelo especificado en `model_type` no coincide con el modelo real del punto de control.

**Solución**: compruebe lo siguiente:
+ El `model_type` de la fórmula coincide con el tipo de modelo original.
+ La ruta del punto de control de S3 de `model_name_or_path` es correcta.
+ Está utilizando la ruta del archivo manifest.json correcto.

**Ejemplo de configuración correcta**

```
run:  
  model_type: amazon.nova-2-lite-v1:0:256k  # Must match checkpoint's model  
  model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

### Error: “Model configuration not found”
<a name="nova-iterative-error-config"></a>

**Causa**: la ruta de S3 de `model_name_or_path` no es válida o no es accesible.

**Solución**:
+ Compruebe que la ruta de S3 se haya copiado correctamente del archivo manifest.json.
+ Asegúrese de que el rol de IAM tenga permisos para acceder al bucket de custodia.
+ Confirme que el trabajo de entrenamiento anterior se completó correctamente.
+ Compruebe si hay errores tipográficos en la ruta.

### Regresión del rendimiento después de la iteración
<a name="nova-iterative-error-regression"></a>

**Síntomas**: las métricas de evaluación disminuyen después de una nueva iteración de entrenamiento.

**Solución**:
+ **Reversión**: use el punto de control anterior como modelo base.
+ **Análisis**: revise los registros de entrenamiento y la calidad de los datos para detectar la iteración fallida.
+ **Ajuste**: modifique los hiperparámetros (reduzca el ritmo de aprendizaje), mejore la calidad de los datos o reduzca las épocas de entrenamiento.
+ **Reintento**: inicie una nueva iteración con ajustes.