

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

## Visão geral
<a name="nova-iterative-overview"></a>

O treinamento iterativo é o processo de ajustar repetidamente um modelo por meio de vários ciclos de treinamento em diferentes métodos de treinamento (treinar, avaliar, analisar erros, ajustar dados/objetivos/hiperparâmetros), com cada rodada começando no ponto de verificação anterior. Essa abordagem permite direcionar sistematicamente os modos de falha do modelo, incorporar exemplos selecionados que abordam pontos fracos específicos e se adaptar às mudanças nos requisitos ao longo do tempo.

**Benefícios em relação ao treinamento de etapa única:**
+ **Melhoria direcionada**: analise padrões de falha específicos descobertos por meio da avaliação
+ **Refinamento adaptativo**: responda às mudanças de distribuição ou à evolução dos requisitos do produto
+ **Mitigação de riscos**: valide as melhorias de forma incremental em vez de se comprometer com uma única execução de treinamento longo
+ **Eficiência de dados**: concentre os esforços de coleta de dados nas áreas em que o modelo tem uma performance inferior
+ **Treinamento curricular**: várias rodadas de treinamento com dados de qualidade progressivamente superior

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

### Acesso e local do ponto de verificação
<a name="nova-iterative-checkpoint-location"></a>

Após a conclusão de cada tarefa de treinamento, um arquivo manifesto é gerado no local de saída especificado pelo parâmetro `output_path` em sua configuração de treinamento.

**Para acessar seu ponto de verificação**
+ Navegue até o `output_path` especificado no S3
+ Faça o download e extraia o arquivo `output.tar.gz`.
+ Abra o arquivo `manifest.json` que está dentro
+ Localize o parâmetro `checkpoint_s3_bucket`, que contém o URI do S3 do seu modelo treinado

**Exemplo de estrutura manifest.json**

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

### Noções básicas sobre buckets de depósito
<a name="nova-iterative-escrow-buckets"></a>

Como os pesos do Amazon Nova são proprietários, os pontos de verificação de modelos treinados são armazenados em **buckets de depósito do S3** em contas gerenciadas pela AWS, em vez de serem copiados para sua conta. Esses buckets de depósito:
+ Contêm seus pesos de modelos personalizados com segurança
+ Podem ser referenciados por outros serviços da AWS (inferência, avaliação e trabalhos de treinamento subsequentes)
+ São acessíveis somente pela sua conta da AWS por meio de permissões do IAM
+ Incorrem em cobranças de armazenamento padrão do S3 em sua conta (consulte Considerações sobre custo)

Você pode usar o caminho do bucket de depósito como `model_name_or_path` em sua próxima execução de treinamento para continuar o treinamento iterativo.

### Uso de pontos de verificação para treinamento iterativo
<a name="nova-iterative-using-checkpoints"></a>

Configure sua próxima tarefa de treinamento para usar o ponto de verificação anterior como modelo de 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
```

## Quando usar o treinamento iterativo
<a name="nova-iterative-when-to-use"></a>

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

Use o treinamento iterativo quando você tiver:
+ **Ciclos de comentários**: capacidade para coletar casos de falha do mundo real e analisá-los sistematicamente
+ **Ambientes dinâmicos**: documentação em evolução, APIs ou tópicos de suporte que exigem atualizações periódicas do modelo
+ **Avaliação robusta**: avaliações comparativas e frameworks de avaliação fortes (veja os exemplos abaixo) para avaliar as melhorias com confiança
+ **Capacidade de operações de ML**: recursos para gerenciar vários ciclos de treinamento e controle de versão

**Exemplos de frameworks robustos de avaliação**
+ Conjuntos de avaliações comparativas automatizadas com limites de aprovação/reprovação
+ Protocolos de avaliação humana com métricas de confiabilidade entre avaliadores
+ Cenários de testes da red-team que abrangem casos de borda e entradas adversariais
+ Infraestrutura de testes A/B para avaliar o impacto na produção

### Padrões comuns
<a name="nova-iterative-common-patterns"></a>

**SFT → Pipeline do RFT**: um padrão iterativo usado com frequência envolve:
+ **SFT primeiro**: ensine o modelo a resolver problemas por meio de exemplos de demonstração
+ **RFT segundo**: otimize a performance em todo o espaço de problemas usando sinais de recompensa

Essa sequência é essencial quando os modelos têm uma performance inicial ruim. O RFT em modelos de precisão próxima de zero não melhorará a performance sem primeiro estabelecer recursos básicos de resolução de problemas por meio do SFT.

### Quando não usar o treinamento iterativo
<a name="nova-iterative-when-not-to-use"></a>

Evite o treinamento iterativo para:
+ **Tarefas estáveis e bem definidas**: dados estacionários com requisitos consistentes que já atingem uma performance próxima ao limite máximo
+ **Problemas simples de classificação**: tarefas restritas em que o treinamento de uma única etapa é suficiente
+ **Restrições de recursos**: falta de recursos operacionais de ML dedicados para gerenciar vários ciclos de treinamento
+ **Ganhos marginais**: quando a sobrecarga não justifica melhorias mínimas de performance

## Exemplo de fluxo de trabalho: SFT → RFT
<a name="nova-iterative-example-workflow"></a>

Este exemplo demonstra um padrão comum de treinamento iterativo para modelos de raciocínio.

### Etapa 1: treinamento inicial do SFT
<a name="nova-iterative-step1"></a>

Configure e inicie sua tarefa de treinamento de SFT com seu conjunto de dados:

```
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
```

**Justificativa**: o SFT fornece demonstrações adicionais que moldam as saídas do modelo no formato e na voz desejados, estabelecendo recursos fundamentais.

**Após o treinamento ser concluído**
+ Observe o `output_path` configurado em sua tarefa de treinamento
+ Faça o download de `output.tar.gz` nesse local
+ Extraia e localize `manifest.json`
+ Copie o valor `checkpoint_s3_bucket`

### Etapa 2: treinamento de RFT no ponto de verificação do SFT
<a name="nova-iterative-step2"></a>

Crie uma nova tarefa de treinamento de RFT usando o ponto de verificação do 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>
```

**Justificativa**: o treinamento de RFT se baseia nos fundamentos do SFT, permitindo que o modelo desenvolva padrões de raciocínio mais complexos, otimizados por sua função de recompensa.

### Etapa 3: avaliar e iterar
<a name="nova-iterative-step3"></a>

Execute a avaliação no ponto de verificação do RFT para avaliar a performance:

```
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
```

Se as métricas-alvo não forem satisfeitas, continue iterando com dados ou hiperparâmetros ajustados.

**Importante**  
A técnica de treinamento (LoRA versus full-rank) deve permanecer consistente em todas as iterações:  
Se você usa o SFT com **LoRA**, deve usar o RFT com **LoRA**
Se você usa o SFT com **full-rank**, deve usar o RFT com **full-rank**
Você não pode alternar entre LoRA e full-rank no meio do pipeline

**Importante**  
Se uma chave do KMS for usada para criptografia no bucket de saída do S3 de propriedade da Amazon, essa mesma chave do KMS deverá ser usada para todas as iterações futuras.

## Monitoramento do progresso em todas as iterações
<a name="nova-iterative-monitoring"></a>

Você pode monitorar as métricas por meio do MLflow [configurando o MLflow](nova-model-monitor.md#nova-customization-mlflow-setup) em suas tarefas.

### Criar uma aplicação MLflow
<a name="nova-iterative-create-mlflow"></a>

**Usando a interface do usuário do Studio**: se você criar uma tarefa de treinamento por meio da interface do usuário do Studio, uma aplicação MLflow padrão será criada automaticamente e estará selecionada por padrão em Opções avançadas.

**Usando a CLI**: se você usar a CLI, deverá criar uma aplicação MLflow e passá-la como uma entrada para a solicitação da API da tarefa de treinamento.

```
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)
```

### Acessar a aplicação MLflow
<a name="nova-iterative-access-mlflow"></a>

**Usando a CLI**: crie um URL pré-assinado para acessar a interface do usuário da aplicação MLflow:

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

**Usando a interface do usuário do Studio**: a interface do usuário do Studio exibe as principais métricas armazenadas no MLflow e fornece um link para a interface do usuário da aplicação MLflow.

### Principais métricas a serem acompanhadas
<a name="nova-iterative-key-metrics"></a>

Monitore essas métricas em todas as iterações para avaliar a melhoria e acompanhar o progresso da tarefa:

**No SFT**
+ Curvas de perda de treinamento
+ Número de amostras consumidas e tempo para processar amostras
+ Precisão de performance em conjuntos de teste retidos
+ Conformidade de formato (por exemplo, taxa de saída JSON válida)
+ Perplexidade nos dados de avaliação específicos do domínio

**No RFT**
+ Pontuações médias de recompensa em relação ao treinamento
+ Distribuição de recompensas (porcentagem de respostas de alta recompensa)
+ Tendências de recompensa de validação (observe se há sobreajuste)
+ Taxas de sucesso específicas de tarefas (por exemplo, taxa de aprovação de execução de código, precisão de problemas matemáticos)

**Geral**
+ Avaliação comparativa dos deltas de performance entre as iterações
+ Pontuações de avaliação humana em amostras representativas
+ Métricas de produção (se implantadas de forma iterativa)

### Determinação de quando parar
<a name="nova-iterative-when-to-stop"></a>

Pare de iterar quando:
+ **Estagnação da performance**: o treinamento adicional não melhora mais significativamente as métricas-alvo
+ **Trocar de técnica ajuda**: se uma técnica estagnar, tente alternar (por exemplo, SFT → RFT → SFT) para ultrapassar os limites de performance
+ **Métricas-alvo alcançadas**: seus critérios de sucesso foram atendidos
+ **Regressão detectada**: novas iterações degradam a performance (consulte os procedimentos de reversão abaixo)

Para obter procedimentos de avaliação detalhados, consulte a seção **Avaliação**.

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

### Comece pequeno e escale gradualmente
<a name="nova-iterative-start-small"></a>

Comece com conjuntos de dados mínimos e épocas únicas de treinamento para validar sua abordagem antes de aumentar a escala verticalmente. Isso aumenta a confiança e ajuda a identificar problemas de forma antecipada.

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

Defina indicadores quantitativos e qualitativos antes de começar:

**Exemplo de métricas de sucesso por caso de uso**
+ **Resposta às perguntas**: precisão exata de correspondência, pontuação F1, classificações de preferência humana
+ **Geração de código**: taxa de aprovação no teste unitário, sucesso da compilação, tempo de execução
+ **Tarefas de raciocínio**: precisão das etapas, exatidão das respostas finais, pontuações de recompensa
+ **Geração de conteúdo**: pontuações de coerência, precisão factual, aderência ao estilo

### Implementar avaliação automatizada
<a name="nova-iterative-automated-eval"></a>

Configure pipelines de avaliação automatizados para monitorar a performance após cada rodada, permitindo uma rápida iteração e comparação objetiva.

### Manter um controle de versão rigoroso
<a name="nova-iterative-version-control"></a>

Documento para cada iteração:
+ Versões e modificações do conjunto de dados
+ Locais dos pontos de verificação do modelo
+ Alterações de hiperparâmetros
+ Deltas e métricas de performance
+ Observações qualitativas

Isso cria conhecimento institucional e permite a depuração.

### Concentrar-se na qualidade dos dados em vez da quantidade
<a name="nova-iterative-data-quality"></a>

Analise casos de falha de rodadas anteriores e adicione exemplos direcionados e de alta qualidade em vez de simplesmente aumentar o tamanho do conjunto de dados.

### Planejar o orçamento de iteração
<a name="nova-iterative-iteration-budget"></a>

Planeje de **3 a 5 iterações** como um intervalo típico:
+ **1 a 2 iterações**: geralmente são suficientes para melhorias simples ou polimento final
+ **3 a 5 iterações**: adequado para tarefas complexas que exigem vários ciclos de refinamento
+ **Mais de 5 iterações**: pode indicar retornos decrescentes ou necessidade de abordagens diferentes

Ajuste com base no orçamento computacional e nas taxas de melhoria de performance.

### Implementar recursos de reversão
<a name="nova-iterative-rollback"></a>

Se uma iteração introduzir regressões:
+ **Identifique a regressão**: compare as métricas de avaliação em todos os pontos de verificação
+ **Retorne ao ponto de verificação anterior**: use o caminho do S3 do ponto de verificação anterior como seu `model_name_or_path`
+ **Ajuste a abordagem de treinamento**: modifique dados, hiperparâmetros ou técnicas antes de tentar novamente
+ **Documente a falha**: registre o que causou a regressão para evitar que se repita

**Exemplo de reversão**

```
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>"
```

## Considerações sobre custos
<a name="nova-iterative-cost"></a>

### Armazenamento de pontos de verificação
<a name="nova-iterative-checkpoint-storage"></a>
+ **Local**: os pontos de verificação armazenados em buckets de depósito incorrem em cobranças padrão de armazenamento do S3 faturadas em sua conta da AWS
+ **Retenção**: os pontos de verificação são retidos indefinidamente, a menos que sejam explicitamente excluídos
+ **Gerenciamento**: implemente políticas de ciclo de vida para arquivar ou excluir pontos de verificação antigos de que você não precisa mais

**Dicas de otimização de custos**
+ Exclua os pontos de verificação intermediários após validar as iterações mais recentes
+ Arquive pontos de verificação no S3 Glacier para retenção de longo prazo a um custo menor
+ Defina políticas de retenção com base em suas necessidades de conformidade e experimentação

## Limitações
<a name="nova-iterative-limitations"></a>

### Consistência da família de modelos
<a name="nova-iterative-model-consistency"></a>

Ao treinar iterativamente, você deve usar o **mesmo tipo de modelo** em todas as iterações.

**Treinamento inicial**

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

**As iterações subsequentes devem usar o mesmo 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>"
```

### Consistência da técnica de treinamento
<a name="nova-iterative-technique-consistency"></a>

A técnica de treinamento deve permanecer consistente em todas as iterações:
+ **Modelos treinados via LoRA** só podem ser treinados iterativamente via LoRa
+ **Modelos treinados em full-rank** só podem ser treinados de forma iterativa em full-rank

**Como os adaptadores LoRA funcionam no treinamento iterativo**
+ Cada iteração de treinamento LoRA gera novos pesos de adaptador
+ Os novos adaptadores substituem (não se empilham) os adaptadores anteriores
+ O modelo de base permanece congelado; somente os adaptadores são atualizados

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


| Treinamento inicial | Pode iterar com | 
| --- | --- | 
| SFT (full-rank) | SFT (full-rank), RFT (full-rank) | 
| SFT (LoRA) | SFT (LoRA), RFT (LoRA) | 
| RFT (full-rank) | RFT (full-rank) | 
| RFT (LoRA) | RFT (LoRA) | 

**Verificação da compatibilidade antes de iniciar uma tarefa**
+ Verifique sua fórmula de treinamento anterior para identificar o tipo de modelo e a técnica de treinamento (LoRA vs. full-rank)
+ Certifique-se de que sua nova fórmula corresponda ao tipo de modelo e à técnica
+ Revise o manifest.json para confirmar se o caminho do ponto de verificação está correto

## Solução de problemas
<a name="nova-iterative-troubleshooting"></a>

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

**Causa**: a técnica de treinamento (LoRA vs. full-rank) não corresponde à técnica do ponto de verificação.

**Resolução**: certifique-se de que sua fórmula use a mesma técnica de treinamento do modelo original:
+ Se o ponto de verificação tiver sido treinado com LoRA, use a LoRA em sua nova fórmula
+ Se o checkpoint foi treinado com full-rank, use-o em sua nova fórmula

### Erro: “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**: o tipo de modelo especificado em `model_type` não corresponde ao modelo real no ponto de verificação.

**Resolução**: verifique se:
+ O `model_type` em sua fórmula corresponde ao tipo do modelo original
+ O caminho do ponto de verificação do S3 em `model_name_or_path` está correto
+ Você está usando o caminho do arquivo manifest.json correto

**Exemplo de configuração correta**

```
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>"
```

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

**Causa**: o caminho do S3 em `model_name_or_path` é inválido ou está inacessível.

**Resolução**:
+ Verifique se o caminho do S3 foi copiado corretamente do arquivo manifest.json
+ Garanta que seu perfil do IAM tenha permissões para acessar o bucket de depósito
+ Confirme se a tarefa de treinamento anterior foi concluída com êxito
+ Verifique se há erros de digitação no caminho

### Regressão da performance após a iteração
<a name="nova-iterative-error-regression"></a>

**Sintomas**: as métricas de avaliação diminuem após uma nova iteração de treinamento.

**Resolução**:
+ **Reverter**: use o ponto de verificação anterior como seu modelo de base
+ **Analisar**: revise os logs de treinamento e a qualidade dos dados da iteração que falhou
+ **Ajustar**: modifique os hiperparâmetros (reduza a taxa de aprendizado), melhore a qualidade dos dados ou reduza as épocas de treinamento
+ **Tentar novamente**: inicie uma nova iteração com ajustes