

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á.

# HyperPod Tutorial de DPO (GPU) do cluster Slurm
<a name="hyperpod-gpu-slurm-dpo-tutorial"></a>

O tutorial a seguir configura um ambiente do Slurm e inicia um trabalho de otimização direta de preferências (DPO) em um modelo Llama com 8 bilhões de parâmetros.

**Pré-requisitos**  
Antes de começar a configurar seu ambiente, você deve:  
Configurar o cluster HyperPod GPU Slurm  
Seu cluster HyperPod Slurm deve ter o Nvidia Enroot e o Pyxis habilitados (eles são habilitados por padrão).
Ter um local de armazenamento compartilhado. Pode ser um sistema de FSx arquivos Amazon ou um sistema NFS acessível a partir dos nós do cluster.
Ter um conjunto de dados de preferência binária tokenizada em um dos seguintes formatos:  
JSON
JSONGZ (JSON compactado)
ARROW
(Opcional) Se você precisar de pesos pré-treinados HuggingFace ou estiver treinando um modelo Llama 3.2, deverá obter o HuggingFace token antes de começar a treinar. Para ter mais informações sobre como obter o token, consulte [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurar o ambiente HyperPod GPU Slurm
<a name="hyperpod-gpu-slurm-dpo-hyperpod-gpu-slurm-environment"></a>

Para iniciar uma tarefa de treinamento em um cluster do Slurm, faça o seguinte:
+ Use SSH no nó cabeça do cluster.
+ Depois de fazer login, configure o ambiente virtual. Você deve usar o Python 3.9 ou posterior.

  ```
  #set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Clone as SageMaker HyperPod receitas e os repositórios SageMaker HyperPod do adaptador em um local de armazenamento compartilhado. O local de armazenamento compartilhado pode ser um sistema de FSx arquivos Amazon ou um sistema NFS acessível a partir dos nós do cluster.

  ```
  git clone https://github.com/aws/sagemaker-hyperpod-training-adapter-for-nemo.git
  git clone --recursive https://github.com/aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  ```
+ Crie um arquivo squash usando o Enroot. Para encontrar a versão mais recente do contêiner da SMP, consulte[Notas de lançamento da biblioteca de SageMaker paralelismo de modelos](model-parallel-release-notes.md). Para obter mais informações sobre como usar o arquivo Enroot, consulte Imagem [AWS otimizada para compilação do Nemo-Launcher](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/2.nemo-launcher#2-build-aws-optimized-nemo-launcher-image).

  ```
  REGION="{{<region>}}"
  IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
  aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin 658645717510.dkr.ecr.${REGION}.amazonaws.com
  enroot import -o $PWD/smdistributed-modelparallel.sqsh dockerd://${IMAGE}
  mv $PWD/smdistributed-modelparallel.sqsh "/fsx/{{<any-path-in-the-shared-filesystem>}}"
  ```
+ Para usar o arquivo squash do Enroot para iniciar o treinamento, use o exemplo a seguir para modificar o arquivo `recipes_collection/config.yaml`.

  ```
  container: /fsx/path/to/your/smdistributed-modelparallel.sqsh
  ```

## Iniciar a tarefa de treinamento
<a name="hyperpod-gpu-slurm-dpo-launch-training-job"></a>

Para iniciar um trabalho de DPO para o modelo Llama de 8 bilhões de parâmetros com um comprimento de sequência de 8.192 em um único nó de computação do Slurm, defina o script de execução `launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_dpo.sh` como o seguinte:
+ `IMAGE`: o contêiner da seção de configuração do ambiente.
+ `HF_MODEL_NAME_OR_PATH`: defina o nome ou o caminho dos pesos pré-treinados no parâmetro hf\_model\_name\_or\_path da fórmula.
+ (Opcional) Você pode fornecer o HuggingFace token se precisar de pesos pré-treinados HuggingFace definindo o seguinte par de valores-chave:

  ```
  recipes.model.hf_access_token=${HF_ACCESS_TOKEN}
  ```

**nota**  
O modelo de referência usado para DPO nessa configuração é derivado automaticamente do modelo de base que está sendo treinado (nenhum modelo de referência diferente é definido explicitamente). Os hiperparâmetros específicos de DPO são pré-configurados com os seguintes valores padrão:  
`beta`: 0,1 (controla a força da regularização da divergência de KL).
`label_smoothing`: 0,0 (nenhuma uniformização é aplicada aos rótulos de preferência).

```
recipes.dpo.beta=${BETA}
recipes.dpo.label_smoothing=${LABEL_SMOOTHING}
```

```
#!/bin/bash
IMAGE="${YOUR_IMAGE}"
SAGEMAKER_TRAINING_LAUNCHER_DIR="${SAGEMAKER_TRAINING_LAUNCHER_DIR:-${PWD}}"

TRAIN_DIR="${YOUR_TRAIN_DIR}" # Location of training dataset
VAL_DIR="${YOUR_VAL_DIR}" # Location of validation dataset
# experiment output directory
EXP_DIR="${YOUR_EXP_DIR}"
HF_ACCESS_TOKEN="${YOUR_HF_TOKEN}"
HF_MODEL_NAME_OR_PATH="${HF_MODEL_NAME_OR_PATH}"
BETA="${BETA}"
LABEL_SMOOTHING="${LABEL_SMOOTHING}"

# Add hf_model_name_or_path and turn off synthetic_data
HYDRA_FULL_ERROR=1 python3 ${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py \
recipes=fine-tuning/llama/hf_llama3_8b_seq8k_gpu_dpo \
base_results_dir=${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results \
recipes.run.name="hf_llama3_dpo" \
recipes.exp_manager.exp_dir="$EXP_DIR" \
recipes.model.data.train_dir="$TRAIN_DIR" \
recipes.model.data.val_dir="$VAL_DIR" \
recipes.model.hf_model_name_or_path="$HF_MODEL_NAME_OR_PATH" \
container="${IMAGE}" \
+cluster.container_mounts.0="/fsx:/fsx" \
recipes.model.hf_access_token="${HF_ACCESS_TOKEN}" \
recipes.dpo.enabled=true \
recipes.dpo.beta="${BETA}" \
recipes.dpo.label_smoothing="${LABEL_SMOOTHING}$" \
```

Depois de configurar todos os parâmetros necessários no script anterior, você pode começar a executar a tarefa de treinamento.

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_gpu_dpo.sh
```

Para ter mais informações sobre como configurar um cluster do Slurm, consulte [Executando um trabalho de treinamento no HyperPod Slurm](cluster-specific-configurations-run-training-job-hyperpod-slurm.md).