

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

O Nova Forge SDK é um SDK de Python abrangente para personalizar modelos do Amazon Nova. O SDK oferece uma interface unificada para treinamento, avaliação, monitoramento, implantação e inferência de modelos do Amazon Nova em diferentes plataformas, incluindo o SageMaker AI e Amazon Bedrock. Se você está adaptando modelos para tarefas específicas do domínio ou otimizando a performance para seu caso de uso, esse SDK fornece tudo o que você precisa em uma interface unificada.

## Benefícios
<a name="nova-forge-sdk-why-choose"></a>
+ Um SDK para todo o ciclo de vida da personalização do modelo, desde a preparação dos dados até a implantação e o monitoramento.
+ Suporte para vários métodos de treinamento, incluindo pré-treinamento contínuo (CPT), ajuste fino supervisionado (SFT), otimização de preferência direta (DPO) e ajuste fino por reforço (RFT), tanto de turno único quanto de vários turnos, com abordagens LoRA e full-rank.
+ Suporte integrado para tarefas de treinamento do SageMaker, SageMaker HyperPod e Amazon Bedrock com gerenciamento automático de recursos.
+ Não é mais necessário encontrar o URI de contêiner ou as fórmulas corretas para suas técnicas de treinamento.
+ Traga suas próprias fórmulas de treinamento ou use os padrões inteligentes do SDK com substituições de parâmetros.
+ O SDK valida sua configuração em relação às combinações de modelos e instâncias compatíveis e fornece suporte à validação, evitando erros antes do início do treinamento.
+ O monitoramento integrado do Amazon CloudWatch permite que você acompanhe o progresso do treinamento em tempo real.
+ MLflow integrado para acompanhar experimentos de treinamento com os servidores de rastreamento MLflow do SageMaker AI.

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

O SDK requer pelo menos o Python 3.12.

## Instalação
<a name="nova-forge-sdk-installation"></a>

Para instalar esse SDK, siga o comando abaixo.

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

## Modelos e técnicas compatíveis
<a name="nova-forge-sdk-supported-models"></a>

O SDK é compatível com os seguintes modelos e técnicas dentro da família do Amazon Nova:


****  

| Método | Modelos compatíveis | 
| --- | --- | 
| Pré-treinamento contínuo | [Todos os modelos Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) (somente SMHP) | 
| Ajuste fino supervisionado LoRA | [Todos os modelos Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) | 
| Ajuste fino supervisionado full-rank | [Todos os modelos Nova](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) (somente SMHP e SMTJ) | 
| Otimização direta de preferências LoRA | Modelos Nova 1.0 (somente SMHP e SMTJ) | 
| Otimização direta de preferências full-rank | Modelos Nova 1.0 (somente SMHP e SMTJ) | 
| Ajuste fino por reforço LoRA | Nova Lite 2.0 | 
| Ajuste fino por reforço full-rank | Nova Lite 2.0 (somente SMHP e SMTJ) | 
| Ajuste fino por reforço de várias turnos LoRA | Nova Lite 2.0 (somente SMHP) | 
| Ajuste fino por reforço de vários turnos full-rank | Nova Lite 2.0 (somente SMHP) | 

## Conceitos básicos
<a name="nova-forge-sdk-getting-started"></a>

**Topics**
+ [1. Preparar seus dados](#nova-forge-sdk-prepare-data)
+ [2. Configurar sua infraestrutura](#nova-forge-sdk-configure-infrastructure)
+ [3. Treinamento](#nova-forge-sdk-train)
+ [4. Monitor](#nova-forge-sdk-monitor)
+ [5. Avaliar](#nova-forge-sdk-evaluate)
+ [6. Implantar](#nova-forge-sdk-deploy)

### 1. Preparar seus dados
<a name="nova-forge-sdk-prepare-data"></a>

Carregue seu conjunto de dados de arquivos locais ou do S3 e deixe que o SDK faça a transformação para o formato correto para o método de treinamento escolhido. Ou forneça dados formatados e comece imediatamente.

```
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. Configurar sua infraestrutura
<a name="nova-forge-sdk-configure-infrastructure"></a>

Escolha seus recursos de computação. O SDK valida as configurações e garante a configuração ideal.

```
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. Treinamento
<a name="nova-forge-sdk-train"></a>

Comece a treinar com apenas algumas linhas 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. Monitor
<a name="nova-forge-sdk-monitor"></a>

Acompanhe seu progresso no treinamento diretamente no 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. Avaliar
<a name="nova-forge-sdk-evaluate"></a>

Avalie a performance do modelo com uma variedade de [avaliações comparativas integradas](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-evaluation.html#nova-model-evaluation-benchmark), ou crie suas próprias avaliações.

```
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. Implantar
<a name="nova-forge-sdk-deploy"></a>

Implante seu modelo personalizado para produção com suporte integrado para o Amazon Bedrock ou 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",
    }
)
```

## Principais recursos
<a name="nova-forge-sdk-key-capabilities"></a>

### Criação de fórmulas em tempo real
<a name="nova-forge-sdk-recipe-creation"></a>

O SDK elimina a necessidade de pesquisar as fórmulas apropriadas ou o URI de contêiner para técnicas específicas.

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

O SDK transforma automaticamente seus dados no formato correto para treinamento. Se você estiver trabalhando com arquivos JSON, JSONL ou CSV, o carregador de dados processará a conversão sem problemas. O carregador de dados é compatível com texto e dados multimodais (imagens e vídeos).

### Suporte à infraestrutura de empresas
<a name="nova-forge-sdk-infrastructure-support"></a>

O SDK funciona tanto com tarefas de treinamento do SageMaker quanto com o SageMaker HyperPod, gerenciando automaticamente:
+ Validação do tipo de instância
+ Validação da fórmula
+ Validação do conjunto de dados
+ Monitoramento e orquestração de tarefas

O SDK também é compatível com a personalização de tarefas de treinamento do SageMaker sem servidor e do Bedrock.

### Avaliação abrangente
<a name="nova-forge-sdk-evaluation"></a>

Avalie seus modelos personalizados em relação às [avaliações comparativas padrão](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html), incluindo:
+ MMLU (Massive Multitask Language Understanding)
+ BBH (Advanced Reasoning Tasks)
+ GPQA (Graduate-Level Google-Proof Q&A)

Use os padrões de avaliação comparativa ou modifique-os para atender às suas necessidades:
+ BYOM (traga sua própria métrica)
+ BYOD (traga seu próprio conjunto de dados)

### Implantação na produção
<a name="nova-forge-sdk-deployment"></a>

Implante seus modelos no Amazon Bedrock ou no SageMaker com opções para:
+ **Throughput provisionado do Bedrock**: capacidade dedicada para performance consistente
+ **Bedrock sob demanda (aplicável apenas à personalização baseada em LoRA)**: preço conforme o uso
+ **Inferência em tempo real do Sagemaker**: capacidade dedicada para performance consistente

### Inferência em lote
<a name="nova-forge-sdk-batch-inference"></a>

Execute tarefas de inferência em grande escala com eficiência:
+ Processe milhares de solicitações em paralelo
+ Agregação automática de resultados
+ Processamento em lote de baixo custo

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

Para assinantes do Nova Forge, o SDK é compatível com fórmulas de combinação de dados.

## Saiba mais
<a name="nova-forge-sdk-learn-more"></a>

Tudo pronto para começar a personalizar os modelos Nova com o Nova Forge SDK? Confira nosso repositório do GitHub para obter guias detalhados, referências de APIs e exemplos adicionais: [https://github.com/aws/nova-forge-sdk](https://github.com/aws/nova-forge-sdk)