

# Pré-treinamento contínuo (CPT) no Nova 2.0 no SageMaker HyperPod
<a name="nova-cpt-2"></a>

O Amazon Nova Lite 2.0 é um modelo de raciocínio treinado em um conjunto de dados maior e mais diversificado do que o Nova Lite 1.0. Apesar de ser um modelo maior, o Nova Lite 2.0 oferece inferência mais rápida do que o Nova Lite 1.0, ao mesmo tempo em que oferece recursos aprimorados de raciocínio, janelas de contexto mais longas e melhor desempenho multilíngue.

Com o CPT no Nova 2.0 Lite, é possível estender esses recursos avançados com seus dados específicos de domínio e desenvolver experiência profunda em áreas especializadas enquanto as habilidades superiores de raciocínio e análise do modelo são mantidas.

## Exemplo de fórmula de CPT
<a name="nova-cpt-2-sample-recipe"></a>

Confira a seguir um exemplo de fórmula de CPT. Essa e outras fórmulas podem ser encontradas no repositório de [fórmulas do SageMaker HyperPod](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/training/nova) no 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
```

## Iniciar uma tarefa de pré-treinamento contínuo no SageMaker HyperPod
<a name="nova-cpt-2-starting-job"></a>

### Preparar seus dados
<a name="nova-cpt-2-preparing-data"></a>

Para obter informações sobre formato dos dados, recursos compatíveis, restrições e melhores práticas para preparar os dados de treinamento do CPT, consulte [Preparando dados para CPT no Amazon Nova 2](nova-data-prep-cpt-2.md).

### Carregar seus dados
<a name="nova-cpt-2-data-upload"></a>

Faça upload de conjuntos de dados de treinamento e validação para um bucket do S3. Especifique esses locais no bloco `run` da 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**  
Substitua `<bucket-name>`, `<training-directory>`, `<validation-directory>`, `<training-file>` e `<validation-file>` por caminhos reais do S3.

### Definir a configuração
<a name="nova-cpt-2-defining-config"></a>

Defina o modelo base usando os campos `model_type` e `model_name_or_path` no bloco `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 do CTP
<a name="nova-cpt-2-tuning-parameters"></a>

Os parâmetros que estão disponíveis para ajuste com o CPT incluem:

**Configuração da execução**  

+ **name**: um nome descritivo para a tarefa de treinamento. Isso ajuda a identificar sua tarefa no Console de Gerenciamento da AWS.
+ **model\_type**: a variante do modelo do Amazon Nova a ser usada. As opções disponíveis são `amazon.nova-2-lite-v1:0:256k`.
+ **model\_name\_or\_path**: o caminho para o modelo de base a ser usado em seu treinamento. As opções disponíveis são `nova-lite-2/prod` ou o caminho do S3 para o ponto de verificação pós-treinamento (`s3://customer-escrow-bucket-unique_id/training_run_name`).
+ **replicas**: o número de instâncias de computação a serem usadas no treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Lite 2.0 é compatível com 4, 8, 16 ou 32 réplicas.
+ **data\_s3\_path**: o local no S3 do conjunto de dados de treinamento, que é um arquivo JSONL. Esse arquivo deve residir na mesma conta e região da AWS que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.
+ **validation\_data\_s3\_path**: (opcional) o local no S3 do conjunto de dados de validação, que é um arquivo JSONL. Esse arquivo deve estar na mesma conta e região que o cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.
+ **output\_s3\_path**: o local do S3 onde o manifesto e os logs do TensorBoard são armazenados. Todos os locais do S3 fornecidos devem estar na mesma conta da AWS e região da AWS.
+ **mlflow\_tracking\_uri**: o ARN da aplicação MLFlow a ser usada para registro em log do MLFlow
+ **mlflow\_experiment\_name**: nome do experimento do MLFlow
+ **mlflow\_run\_name**: nome de execução do MLFlow

**Configuração do treinamento**  

+ **max\_length**: o tamanho máximo da sequência em tokens. Isso determina o tamanho da janela de contexto para treinamento. O valor máximo permitido é 8.192 tokens para CPT.

  Sequências mais longas melhorarão a eficiência do treinamento à custa de maiores requisitos de memória. Recomendamos que você faça a correspondência do parâmetro max\_length com sua distribuição de dados.
+ **global\_batch\_size**: o número total de exemplos de treinamento processados juntos em uma única etapa de propagação (forward ou backward) em todos os dispositivos e operadores.

  Esse valor multiplica o tamanho do lote por dispositivo e o número de dispositivos. Isso afeta a estabilidade do treinamento e o throughput. Recomendamos que você comece com um tamanho de lote que caiba confortavelmente na memória e possa ter a escala aumentada verticalmente a partir daí. Para dados específicos do domínio, lotes maiores podem suavizar demais os gradientes.

**Configurações do treinador**  

+ **max\_steps**: o número de etapas de treinamento a serem executadas. Cada etapa treinará o modelo com o número de elementos `global_batch_size`

**Configurações do modelo**  

+ **hidden\_dropout**: a probabilidade de descartar saídas de estados ocultos. Aumente esse valor em aproximadamente 0,0-0,2 para reduzir o sobreajuste em conjuntos de dados menores. Os valores válidos estão entre 0 e 1, inclusive.
+ **attention\_dropout**: a probabilidade de descartar pesos de atenção. Esse parâmetro pode ajudar na generalização. Os valores válidos estão entre 0 e 1, inclusive.

**Configuração do otimizador**  

+ **lr**: a taxa de aprendizado, que controla o tamanho da etapa durante a otimização. Recomendamos valores entre 1e-6 e 1e-4 para um obter bom desempenho. Os valores válidos estão entre 0 e 1, inclusive.
+ **name**: o algoritmo otimizador. No momento, só há compatibilidade com `distributed_fused_adam`.
+ **weight\_decay**: a força de regularização de L2. Valores mais altos (entre 0,01 e 0,1) aumentam a regularização.
+ **warmup\_steps**: o número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento. Os valores válidos estão entre 1 e 20, inclusive.
+ **min\_lr**: a taxa mínima de aprendizado ao término do decaimento. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.