

# SDK de Nova Forge
<a name="nova-forge-sdk"></a>

El SDK de Nova Forge es un SDK para Python completo para personalizar los modelos de Amazon Nova. El SDK proporciona una interfaz unificada para el entrenamiento, la evaluación, la supervisión, la implementación y la inferencia de los modelos de Amazon Nova en diferentes plataformas, como SageMaker AI y Amazon Bedrock. Tanto si va a adaptar los modelos a tareas específicas de un dominio o a optimizar el rendimiento para su caso de uso, este SDK proporciona todo lo que necesita en una interfaz unificada.

## Ventajas
<a name="nova-forge-sdk-why-choose"></a>
+ Un SDK para todo el ciclo de vida de la personalización del modelo, desde la preparación de los datos hasta la implementación y la supervisión.
+ Compatibilidad con varios métodos de entrenamiento, como el entrenamiento previo continuo (CPT), el refinamiento supervisado (SFT), la optimización de preferencias directas (DPO) y el refinamiento por refuerzo (RFT), tanto de un solo turno como de varios turnos, con enfoques LoRA y de rango completo.
+ Soporte integrado para Trabajos de entrenamiento de SageMaker, SageMaker HyperPod y Amazon Bedrock con administración automática de recursos.
+ Ya no tendrá que buscar las fórmulas o el URI de contenedor correctos para sus técnicas de entrenamiento.
+ Cree sus propias fórmulas de entrenamiento o use los valores predeterminados inteligentes del SDK con modificaciones de parámetros.
+ El SDK compara la configuración con las combinaciones de modelos e instancias compatibles y valida los valores para evitar errores antes de que comience el entrenamiento.
+ La supervisión integrada de Amazon CloudWatch le permite hacer un seguimiento del progreso del entrenamiento en tiempo real.
+ MLflow integrado para hacer un seguimiento de los experimentos de entrenamiento con los servidores de seguimiento MLflow de SageMaker AI.

## Requisitos
<a name="nova-forge-sdk-requirements"></a>

El SDK requiere al menos Python 3.12.

## Instalación
<a name="nova-forge-sdk-installation"></a>

Para instalar este SDK, use el siguiente comando:

```
pip install amzn-nova-forge
```

## Modelos y técnicas compatibles
<a name="nova-forge-sdk-supported-models"></a>

El SDK admite los siguientes modelos y técnicas de la familia Amazon Nova:


****  

| Método | Modelos compatibles | 
| --- | --- | 
| Entrenamiento previo continuo | [Todos los modelos de Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) (solo SMHP) | 
| Refinamiento supervisado (LoRA) | [Todos los modelos de Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) | 
| Refinamiento supervisado (rango completo) | [Todos los modelos de Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) (solo SMHP y SMTJ) | 
| Optimización de preferencias directas (LoRA) | Modelos de Nova 1.0 (solo SMHP y SMTJ) | 
| Optimización de preferencias directas (rango completo) | Modelos de Nova 1.0 (solo SMHP y SMTJ) | 
| Refinamiento por refuerzo (LoRA) | Nova Lite 2.0 | 
| Refinamiento por refuerzo (rango completo) | Nova Lite 2.0 (solo SMHP y SMTJ) | 
| Refinamiento por refuerzo de varios turnos (LoRA) | Nova Lite 2.0 (solo SMHP) | 
| Refinamiento por refuerzo de varios turnos (rango completo) | Nova Lite 2.0 (solo SMHP) | 

## Introducción
<a name="nova-forge-sdk-getting-started"></a>

**Topics**
+ [1. Preparación de datos](#nova-forge-sdk-prepare-data)
+ [2. Configuración de la infraestructura](#nova-forge-sdk-configure-infrastructure)
+ [3. Entrenamiento](#nova-forge-sdk-train)
+ [4. Supervisión](#nova-forge-sdk-monitor)
+ [5. Evaluación](#nova-forge-sdk-evaluate)
+ [6. Implementación](#nova-forge-sdk-deploy)

### 1. Preparación de datos
<a name="nova-forge-sdk-prepare-data"></a>

Cargue el conjunto de datos desde su equipo o desde S3 y deje que el SDK se encargue de la transformación al formato correcto para el método de entrenamiento que haya elegido. También puede usar datos formateados y comenzar de inmediato.

```
from amzn_nova_forge.dataset.dataset_loader import JSONLDatasetLoader
from amzn_nova_forge.model.model_enums import Model, TrainingMethod

loader = JSONLDatasetLoader(question="input", answer="output")
loader.load("s3://your-bucket/training-data.jsonl")
loader.transform(method=TrainingMethod.SFT_LORA, model=Model.NOVA_LITE)
```

### 2. Configuración de la infraestructura
<a name="nova-forge-sdk-configure-infrastructure"></a>

Elija los recursos computacionales: el SDK valida las configuraciones y garantiza una configuración óptima.

```
from amzn_nova_forge.manager.runtime_manager import BedrockRuntimeManager, SMTJRuntimeManager, SMHPRuntimeManager

# Bedrock
runtime = BedrockRuntimeManager(
     execution_role="arn:aws:iam::123456789012:role/ExampleRole"
)

# SageMaker Training Jobs
runtime = SMTJRuntimeManager(
    instance_type="ml.p5.48xlarge",
    instance_count=4
)

# SageMaker HyperPod
runtime = SMHPRuntimeManager(
    instance_type="ml.p5.48xlarge",
    instance_count=4,
    cluster_name="my-hyperpod-cluster",
    namespace="kubeflow"
)
```

### 3. Entrenamiento
<a name="nova-forge-sdk-train"></a>

Comience a entrenar con tan solo unas pocas líneas de código.

```
from amzn_nova_forge.model import NovaModelCustomizer
from amzn_nova_forge.model.model_enums import Model, TrainingMethod

customizer = NovaModelCustomizer(
    model=Model.NOVA_LITE_2,
    method=TrainingMethod.SFT_LORA,
    infra=runtime,
    data_s3_path="s3://your-bucket/prepared-data.jsonl"
)

result = customizer.train(job_name="my-training-job")
```

### 4. Supervisión
<a name="nova-forge-sdk-monitor"></a>

Haga un seguimiento del progreso del entrenamiento directamente desde el SDK.

```
from amzn_nova_forge.monitor.log_monitor import CloudWatchLogMonitor

# Monitor training logs
customizer.get_logs()

# Or monitor directly via CloudWatchLogMonitor
monitor = CloudWatchLogMonitor.from_job_result(result)
monitor.show_logs(limit=10)

# Check job status
result.get_job_status() # InProgress, Completed, Failed
```

### 5. Evaluación
<a name="nova-forge-sdk-evaluate"></a>

Evalúe el rendimiento del modelo usando varias [pruebas comparativas integradas](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-evaluation.html#nova-model-evaluation-benchmark) o diseñe sus propias evaluaciones.

```
from amzn_nova_forge.recipe_config.eval_config import EvaluationTask

# Evaluate on benchmark tasks
eval_result = customizer.evaluate(
    job_name="model-eval",
    eval_task=EvaluationTask.MMLU,
    model_path=result.model_artifacts.checkpoint_s3_path
)
```

### 6. Implementación
<a name="nova-forge-sdk-deploy"></a>

Implemente el modelo personalizado en producción gracias a la compatibilidad nativa con Amazon Bedrock o SageMaker.

```
from amzn_nova_forge.model.model_enums import DeployPlatform

# Bedrock provisioned throughput
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.BEDROCK_PT,
    unit_count=10
)

# Bedrock On-Demand
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.BEDROCK_OD
)

# Sagemaker Real-time Inference
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.SAGEMAKER,
    unit_count=10,
    sagemaker_instance_type="ml.p5.48xlarge",
    sagemaker_environment_variables={
        "CONTEXT_LENGTH": "12000",
        "MAX_CONCURRENCY": "16",
    }
)
```

## Capacidades clave
<a name="nova-forge-sdk-key-capabilities"></a>

### Creación de fórmulas sobre la marcha
<a name="nova-forge-sdk-recipe-creation"></a>

Gracias al SDK, no es necesario buscar las fórmulas o el URI de contenedor adecuados para técnicas específicas.

### Procesamiento inteligente de datos
<a name="nova-forge-sdk-data-processing"></a>

El SDK transforma automáticamente los datos en el formato correcto para el entrenamiento. Tanto si usa JSON, JSONL o CSV, el cargador de datos gestiona la conversión sin problemas. El cargador de datos admite texto y datos multimodales (imágenes y videos).

### Soporte para infraestructura empresarial
<a name="nova-forge-sdk-infrastructure-support"></a>

El SDK funciona tanto con Trabajos de entrenamiento de SageMaker como con SageMaker HyperPod, y administra automáticamente los siguientes aspectos:
+ Validación del tipo de instancia
+ Validación de receta
+ Validación del conjunto de datos
+ Orquestación y supervisión de trabajos

El SDK también es compatible con Trabajo de entrenamiento de SageMaker sin servidor y con la personalización de Bedrock.

### Evaluación completa
<a name="nova-forge-sdk-evaluation"></a>

Evalúe sus modelos personalizados con [pruebas comparativas estándar](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html) como las siguientes:
+ Comprensión masiva del lenguaje multitarea (Massive Multitask Language Understanding, MMLU)
+ Tareas de razonamiento avanzado (Advanced Reasoning Tasks, BBH)
+ Preguntas y respuestas de posgrado diseñadas por Google (Graduate-Level Google-Proof Q&A, GPQA)

Use los valores predeterminados de las pruebas comparativas o modifíquelos para adaptarlos a sus necesidades:
+ Traiga sus propias métricas (Bring Your Own Métrica, BYOM)
+ Traiga su propio conjunto de datos (Bring Your Own Dataset, BYOD)

### Implementación en entornos de producción
<a name="nova-forge-sdk-deployment"></a>

Implemente sus modelos en Amazon Bedrock o SageMaker con opciones para lo siguiente:
+ **Rendimiento aprovisionado de Bedrock**: capacidad dedicada para garantizar un rendimiento uniforme.
+ **Bedrock bajo demanda (solo disponible para la personalización basada en LoRA**): precios de pago por uso.
+ **Inferencia en tiempo real de SageMaker**: capacidad dedicada para garantizar un rendimiento uniforme.

### Inferencia en lotes
<a name="nova-forge-sdk-batch-inference"></a>

Lleve a cabo trabajos de inferencia a gran escala de manera eficiente:
+ Procesamiento de miles de solicitudes en paralelo
+ Agrupación automática de resultados
+ Procesamiento por lotes rentable

### Nova Forge
<a name="nova-forge-sdk-forge"></a>

Los suscriptores de Nova Forge pueden usar el SDK para utilizar fórmulas de mezcla de datos.

## Más información
<a name="nova-forge-sdk-learn-more"></a>

¿Todo listo para empezar a personalizar los modelos de Nova con el SDK de Nova Forge? Consulte nuestro repositorio de GitHub para obtener guías detalladas, referencias de la API y más ejemplos: [https://github.com/aws/nova-forge-sdk](https://github.com/aws/nova-forge-sdk)