

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração geral
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

O arquivo config.yaml especifica a fórmula de treinamento e o cluster. Também inclui configurações de runtime, como variáveis de ambiente para a tarefa de treinamento.

```
defaults:
  - _self_
  - cluster: slurm 
  - recipes: training/llama/hf_llama3_8b_seq8192_gpu
instance_type: p5.48xlarge
git:
  repo_url_or_path: null
  branch: null
  commit: null
  entry_script: null
  token: null
env_vars:
  NCCL_DEBUG: WARN
```

Você pode modificar os seguintes parâmetros de um `config.yaml`:

1. `defaults`: especifique suas configurações padrão, como o cluster ou as fórmulas padrão.

1. `instance_type`: modifique o tipo de instância do Amazon EC2 para que corresponda ao tipo de instância que você está usando.

1. `git`: especifique a localização do repositório do adaptador de SageMaker HyperPod receita para o trabalho de treinamento.

1. `env_vars`: você pode especificar as variáveis de ambiente a serem transmitidas à sua tarefa de treinamento de runtime. Por exemplo, você pode ajustar o nível de registro em log da NCCL especificando a variável de ambiente NCCL\$1DEBUG.

A fórmula é a principal configuração que define a arquitetura da tarefa de treinamento. Esse arquivo inclui muitas informações importantes para a tarefa de treinamento, como as seguintes:
+ Se é necessário usar paralelismo do modelo.
+ A fonte de seus conjuntos de dados.
+ Treinamento de precisão mista.
+ Configurações relacionadas ao ponto de verificação.

Você pode usar as fórmulas como estão. Também é possível usar as informações a seguir para modificá-las.

## run
<a name="run"></a>

A seguir são apresentadas informações básicas para executar sua tarefa de treinamento.

```
run:
  name: llama-8b
  results_dir: ${base_results_dir}/${.name}
  time_limit: "6-00:00:00"
  model_type: hf
```

1. `name`: especifique o nome da tarefa de treinamento no arquivo de configuração.

1. `results_dir`: você pode especificar o diretório em que os resultados da tarefa de treinamento são armazenados.

1. `time_limit`: é possível definir um tempo máximo para a tarefa de treinamento para evitar que ela ocupe os recursos de hardware por muito tempo.

1. `model_type`: você pode especificar o tipo de modelo que está usando. Por exemplo, você pode especificar `hf` se seu modelo é de HuggingFace.

## exp\$1manager
<a name="exp-manager"></a>

O exp\$1manager configura o experimento. Com o exp\$1manager, você pode especificar determinados campos, como o diretório de saída, ou configurações do ponto de verificação. Veja a seguir um exemplo de como você pode configurar o exp\$1manager.

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

1. `exp_dir`: o diretório de experimentos inclui a saída padrão e os arquivos de erro padrão da tarefa de treinamento. Seu diretório atual é usado por padrão.

1. `name`: o nome do experimento usado para identificar seu experimento em exp\$1dir.

1. `create_tensorboard_logger`: especifique `True` ou `False` ative ou desative o TensorBoard registrador.

## Pontos de verificação
<a name="checkpointing"></a>

Veja abaixo os três tipos de ponto de verificação que podem ser utilizados:
+ Ponto de verificação automático
+ Ponto de verificação manual
+ Pontos de verificação totais

### Ponto de verificação automático
<a name="auto-checkpointing"></a>

Se você estiver salvando ou carregando pontos de verificação que são gerenciados automaticamente pelo adaptador de SageMaker HyperPod receita, você pode habilitar`auto_checkpoint`. Para habilitar o `auto_checkpoint`, defina `enabled` como `True`. Você pode usar o ponto de verificação automático para treinamento e ajuste fino. Você pode usar o ponto de verificação automático para sistemas de arquivos compartilhados e para o Amazon S3.

```
exp_manager
  checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/
  auto_checkpoint:
    enabled: True
```

O ponto de verificação automático está salvando o local\$1state\$1dict de forma assíncrona com um intervalo de salvamento ideal calculado automaticamente.

**nota**  
Nesse modo de ponto de verificação, o ponto de verificação salvo automaticamente não permite a refragmentação entre as execuções de treinamento. Para continuar a partir do último ponto de verificação salvo automaticamente, você deve preservar os mesmos graus de fragmentação. Não é necessário especificar informações adicionais para retomar automaticamente.

### Ponto de verificação manual
<a name="manual-checkpointing"></a>

Você pode modificar `checkpoint_callback_params` para salvar um ponto de verificação intermediário de forma assíncrona no shared\$1state\$1dict. Por exemplo, você pode especificar a configuração a seguir para habilitar o ponto de verificação fragmentado a cada dez etapas e manter os três pontos de verificação mais recentes.

O ponto de verificação fragmentado permite que você altere os graus de fragmentação entre as execuções de treinamento e carregue o ponto de verificação configurando `resume_from_checkpoint`.

**nota**  
Se for ajuste fino de PEFT, não será possível usar o ponto de verificação fragmentado com o Amazon S3.
Os pontos de verificação automáticos e manuais são mutuamente excludentes.
Somente são permitidas alterações nos graus de fragmentação de FSDP e nos graus de replicação.

```
exp_manager:
  checkpoint_callback_params:
    # Set save_top_k = 0 to disable sharded checkpointing
    save_top_k: 3
    every_n_train_steps: 10
    monitor: "step"
    mode: "max"
    save_last: False
  resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
```

Para saber mais sobre pontos de verificação, consulte [Ponto de verificação com uso do SMP](model-parallel-core-features-v2-checkpoints.md).

### Pontos de verificação totais
<a name="full-checkpointing"></a>

O ponto de verificação full\$1state\$1dict exportado pode ser usado para inferência ou ajuste fino. É possível carregar um ponto de verificação completo por meio de hf\$1model\$1name\$1or\$1path. Nesse modo, somente os pesos do modelo são salvos.

Para exportar o modelo full\$1state\$1dict, você pode definir os parâmetros a seguir.

**nota**  
No momento, não e possível usar o ponto de verificação completo com o ponto de verificação do Amazon S3. Você pode definir o caminho do S3 para `exp_manager.checkpoint_dir` se estiver habilitando o ponto de verificação completo. No entanto, é possível definir `exp_manager.export_full_model.final_export_dir` como um diretório específico em seu sistema de arquivos local e definir `exp_manager.checkpoint_dir` como um caminho do Amazon S3.

```
exp_manager:
  export_full_model:
    # Set every_n_train_steps = 0 to disable full checkpointing
    every_n_train_steps: 0
    save_last: True
    final_export_dir : null
```

## model
<a name="model"></a>

Defina vários aspectos da arquitetura do modelo e do processo de treinamento. Isso inclui configurações de paralelismo do modelo, precisão e tratamento de dados. Abaixo são apresentados os principais componentes que você pode configurar na seção “Modelo”:

### paralelismo do modelo
<a name="model-parallelism"></a>

Depois de especificar a fórmula, defina o modelo que você está treinando. Você também pode definir o paralelismo do modelo. Por exemplo, você pode definir tensor\$1model\$1parallel\$1degree. Você pode ativar outros recursos, como treinar com FP8 precisão. Por exemplo, você pode treinar um modelo com paralelismo de tensores e paralelismo de contexto:

```
model:
  model_type: llama_v3
  # Base configs
  train_batch_size: 4
  val_batch_size: 1
  seed: 12345
  grad_clip: 1.0

  # Model parallelism
  tensor_model_parallel_degree: 4
  expert_model_parallel_degree: 1
  context_parallel_degree: 2
```

Para compreender melhor os diferentes tipos de técnicas de paralelismo de modelos, você pode consultar as seguintes abordagens:

1. [Paralelismo de tensores](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Paralelismo especializado](model-parallel-core-features-v2-expert-parallelism.md)

1. [Paralelismo de contexto](model-parallel-core-features-v2-context-parallelism.md)

1. [Paralelismo de dados híbridos compartilhados](model-parallel-core-features-v2-sharded-data-parallelism.md)

### FP8
<a name="fp8"></a>

Para habilitar FP8 (precisão de ponto flutuante de 8 bits), você pode especificar a configuração FP8 relacionada no exemplo a seguir:

```
model:
  # FP8 config
  fp8: True
  fp8_amax_history_len: 1024
  fp8_amax_compute_algo: max
```

É importante observar que o formato de FP8 dados atualmente é compatível somente com o tipo de instância P5. Se você estiver usando um tipo de instância mais antigo, como P4, desative o FP8 recurso do seu processo de treinamento de modelos. Para obter mais informações sobre FP8, consulte[Treinamento de precisão mista](model-parallel-core-features-v2-mixed-precision.md).

### dados
<a name="data"></a>

Você pode especificar conjuntos de dados personalizados para a tarefa de treinamento adicionando os caminhos de dados em “Dados”. O módulo de dados em nosso sistema é compatível com os seguintes formatos de dados:

1. JSON

1. JSONGZ (JSON compactado)

1. ARROW

No entanto, você é responsável por preparar seu próprio conjunto de dados pré-tokenizado. Para usuários avançados com requisitos específicos, também há a opção de implementar e integrar um módulo de dados personalizado. Para obter mais informações sobre HuggingFace conjuntos de dados, consulte Conjuntos de [dados](https://huggingface.co/docs/datasets/v3.1.0/en/index).

```
model:
  data:
    train_dir: /path/to/your/train/data
    val_dir: /path/to/your/val/data
    dataset_type: hf
    use_synthetic_data: False
```

Você pode especificar como você está treinando o modelo. Por padrão, a fórmula usa pré-treinamento em vez de ajuste fino. O exemplo a seguir configura a fórmula para executar uma tarefa de ajuste fino com a adaptação de baixa classificação (LoRa).

```
model:
  # Fine tuning config
  do_finetune: True
  # The path to resume from, needs to be HF compatible
  hf_model_name_or_path: null
  hf_access_token: null
  # PEFT config
  peft:
    peft_type: lora
    rank: 32
    alpha: 16
    dropout: 0.1
```

Para obter informações sobre as receitas, consulte [SageMaker HyperPodreceitas](https://github.com/aws/sagemaker-hyperpod-recipes).