

# Ajuste fino supervisionado (SFT) no Nova 2.0 no SageMaker HyperPod
<a name="nova-sft-2-smhp"></a>

O Amazon Nova Lite 2.0 traz recursos aprimorados para ajuste fino supervisionado, incluindo modo de raciocínio avançado, melhor compreensão multimodal e tratamento de contexto estendido. O SFT no Nova Lite 2.0 permite que você adapte esses recursos avançados aos seus casos de uso específicos, mantendo a performance superior do modelo em tarefas complexas.

Os principais recursos do SFT no Nova Lite 2.0 estão resumidos em [Recursos compatíveis](nova-data-prep-sft-2.md#nova-2-supported-features).

Para determinar se o SFT é adequado para seu caso de uso, consulte [Ajuste fino supervisionado (SFT)](nova-fine-tune.md).

**Topics**
+ [Seleção do modo de raciocínio (somente Nova 2.0)](#nova-sft-2-reasoning-mode)
+ [Iniciar um trabalho de ajuste fino no SageMaker HyperPod](#nova-sft-2-creating-job)
+ [Parâmetros de ajuste do SFT](#nova-sft-2-tuning-parameters)
+ [Orientações de hiperparâmetros](#nova-sft-2-hyperparameters)

## Exemplo de fórmula do SFT
<a name="nova-sft-2-sample-recipe"></a>

Confira abaixo um exemplo de fórmula para o SFT. 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/fine-tuning/nova) no GitHub.

```
run:
  name: my-full-rank-sft-run
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  data_s3_path: s3://my-bucket-name/train.jsonl  # SageMaker HyperPod only and not compatible with SageMaker Training Jobs
  replicas: 4                                     # Number of compute instances for training, allowed values are 4, 8, 16, 32
  output_s3_path: s3://my-bucket-name/outputs/    # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs)
  mlflow_tracking_uri: ""                         # Required for MLFlow
  mlflow_experiment_name: "my-full-rank-sft-experiment"  # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-full-rank-sft-run"         # Optional for MLFlow. Note: leave this field non-empty

training_config:
  max_steps: 100                    # Maximum training steps. Minimal is 4.
  save_steps: ${oc.select:training_config.max_steps}  # How many training steps the checkpoint will be saved
  save_top_k: 5                     # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1.
  max_length: 32768                 # Sequence length (options: 8192, 16384, 32768 [default], 65536)
  global_batch_size: 32             # Global batch size (options: 32, 64, 128)
  reasoning_enabled: true           # If data has reasoningContent, set to true; otherwise False

  lr_scheduler:
    warmup_steps: 15                # Learning rate warmup steps. Recommend 15% of max_steps
    min_lr: 1e-6                    # Minimum learning rate, must be between 0.0 and 1.0

  optim_config:                     # Optimizer settings
    lr: 1e-5                        # Learning rate, must be between 0.0 and 1.0
    weight_decay: 0.0               # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9                  # Exponential decay rate for first-moment estimates
    adam_beta2: 0.95                 # Exponential decay rate for second-moment estimates

  peft:                             # Parameter-efficient fine-tuning (LoRA)
    peft_scheme: "null"             # Disable LoRA for PEFT
```

## Seleção do modo de raciocínio (somente Nova 2.0)
<a name="nova-sft-2-reasoning-mode"></a>

O Amazon Nova 2.0 é compatível com o modo de raciocínio para recursos analíticos aprimorados:
+ **Modo de raciocínio (habilitado)**:
  + Definir `reasoning_enabled: true` na configuração de treinamento
  + O modelo treina para gerar rastros de raciocínio antes das respostas finais
  + Melhora o desempenho em tarefas complexas de raciocínio
+ **Modo sem raciocínio (desabilitado)**:
  + Definir `reasoning_enabled: false` ou omitir o parâmetro (padrão)
  + SFT padrão sem raciocínio explícito
  + Adequado para tarefas que não se beneficiam do raciocínio passo a passo

**nota**  
Quando o raciocínio está habilitado, ele opera com alto esforço de raciocínio. Não há uma opção de baixo raciocínio para o SFT.
O conteúdo de raciocínio multimodal não é compatível com o SFT. O modo de raciocínio se aplica a entradas somente de texto.

### Uso do modo de raciocínio com conjuntos de dados sem raciocínio
<a name="nova-sft-2-reasoning-non-reasoning-data"></a>

É permitido treinar o Amazon Nova em um conjunto de dados sem raciocínio com `reasoning_enabled: true`. No entanto, isso pode fazer com que o modelo perca suas capacidades de raciocínio, pois o Amazon Nova aprende primariamente a gerar as respostas apresentadas nos dados sem aplicar o raciocínio.

Se estiver treinando o Amazon Nova em um conjunto de dados sem raciocínio, mas ainda quiser usar o raciocínio durante a inferência:

1. Desabilite o raciocínio durante o treinamento (`reasoning_enabled: false`)

1. Habilite o raciocínio posteriormente durante a inferência

Embora essa abordagem permita o raciocínio no momento da inferência, ela não garante um melhor desempenho em comparação com a inferência sem raciocínio.

**Prática recomendada:** habilite o raciocínio para treinamento e inferência ao usar conjuntos de dados de raciocínio, e desabilite-o para ambos ao usar conjuntos de dados sem raciocínio.

**nota**  
Para obter mais informações sobre imagens de contêineres e exemplos de fórmilas, consulte [Fórmulas do Amazon Nova](nova-model-recipes.md).

## Iniciar um trabalho de ajuste fino no SageMaker HyperPod
<a name="nova-sft-2-creating-job"></a>

### Preparar seus dados
<a name="nova-sft-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 SFT, consulte [Preparar dados para SFT no Amazon Nova 2](nova-data-prep-sft-2.md).

### Carregar seus dados
<a name="nova-sft-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"
```

**nota**  
Substitua `<bucket-name>`, `<training-directory>`, `<validation-directory>`, `<training-file>` e `<validation-file>` por caminhos reais do S3.

**nota**  
No momento, os conjuntos de dados de validação não são compatíveis com o SFT com o Amazon Nova 2.0. Se um conjunto de dados de validação for fornecido, ele será ignorado.

### Definir a configuração
<a name="nova-sft-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 SFT
<a name="nova-sft-2-tuning-parameters"></a>

Os parâmetros que estão disponíveis para ajuste com o SFT 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 o 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\_steps**: o número de etapas de treinamento a serem executadas. Cada etapa treinará o modelo com a quantidade de elementos definida no `global_batch_size`.
+ **save\_steps**: a frequência (em etapas) na qual os pontos de verificação do modelo são salvos durante o treinamento.
+ **save\_top\_k**: o número máximo dos melhores pontos de verificação a serem retidos com base nas métricas de validação.
+ **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 é 32.768 tokens para o SFT.

  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.
+ **reasoning\_enabled**: sinalizador booleano para habilitar recursos de raciocínio durante o treinamento.

**Programador da taxa de aprendizado**  

+ **warmup\_steps**: o número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento.
+ **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.

**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.
+ **weight\_decay**: a força de regularização de L2. Valores mais altos (entre 0,01 e 0,1) aumentam a regularização.
+ **adam\_beta1**: a taxa de decaimento exponencial para as estimativas do primeiro momento no otimizador Adam. O padrão é de 0.9.
+ **adam\_beta2**: a taxa de decaimento exponencial para as estimativas do segundo momento no otimizador Adam. A padrão é 0.95.

**Configuração do PEFT**  

+ **peft\_scheme**: o esquema de ajuste fino com eficiência de parâmetros a ser usado. As opções são `'null'` para ajuste fino de full-rank ou `lora` para ajuste fino baseado em LoRA.

**Ajuste LoRA (quando peft\_scheme é "lora")**  

+ **alpha**: o parâmetro de escala LoRA. Controla a magnitude da adaptação de low-rank. Os valores típicos variam de 8 a 128.
+ **lora\_plus\_lr\_ratio**: a taxa de aprendizado para a otimização via LoRA\+. Esse multiplicador ajusta a taxa de aprendizado especificamente para os parâmetros LoRA.

## Orientações de hiperparâmetros
<a name="nova-sft-2-hyperparameters"></a>

Use os seguintes hiperparâmetros recomendados com base na abordagem de treinamento:

**Treinamento de full-rank**
+ **Épocas**: 1
+ **Taxa de aprendizado (lr)**: 1e-5
+ **Taxa mínima de aprendizado (min\_lr)**: 1e-6

**LoRA (Low-Rank Adaptation)**
+ **Épocas**: 2
+ **Taxa de aprendizado (lr)**: 5e-5
+ **Taxa mínima de aprendizado (min\_lr)**: 1e-6

**nota**  
Ajuste os valores com base no tamanho do conjunto de dados e na performance da validação. Monitore as métricas de treinamento para evitar sobreajuste.