

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 pré-treinamento (GPU) do cluster Slurm
<a name="hyperpod-gpu-slurm-pretrain-tutorial"></a>

O tutorial a seguir configura o ambiente do Slurm e inicia uma tarefa de treinamento em um modelo Llama com 8 bilhões de parâmetros.

**Pré-requisitos**  
Antes de começar a configurar seu ambiente para executar a fórmula, você deve:  
Configure um 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 da Amazon ou um sistema NFS acessível a partir dos nós do cluster.
Ter dados em um dos seguintes formatos:  
JSON
JSONGZ (JSON compactado)
ARROW
(Opcional) Você deve receber uma HuggingFace ficha se estiver usando os pesos do modelo HuggingFace para pré-treinamento ou ajuste fino. Para ter mais informações sobre como obter o token, consulte [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## HyperPod Configuração do ambiente GPU Slurm
<a name="hyperpod-gpu-slurm-environment-setup"></a>

Para iniciar um trabalho de treinamento em um cluster HyperPod GPU Slurm, faça o seguinte:

1. Use SSH no nó cabeça do cluster.

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

1. Clone as SageMaker HyperPod receitas e os repositórios SageMaker HyperPod do adaptador em um local de armazenamento compartilhado.

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

1. 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 uma compreensão mais profunda de 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>}}"
   ```

1. 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-launch-training-job"></a>

Depois de instalar as dependências, inicie uma tarefa de treinamento no diretório `sagemaker-hyperpod-recipes/launcher_scripts`. Você obtém as dependências clonando o repositório de [SageMaker HyperPod receitas](https://github.com/aws/sagemaker-hyperpod-recipes):

Primeiro, escolha sua fórmula de treinamento no GitHub. O nome do modelo é especificado como parte da fórmula. Usamos o script `launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh` para executar o Llama 8b usando uma fórmula de pré-treinamento com um tamanho de sequência de 8.192, `llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain`, no exemplo a seguir.
+ `IMAGE`: o contêiner da seção de configuração do ambiente.
+ (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={{<your_hf_token>}}
  ```

```
#!/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 ouput directory
EXP_DIR="${YOUR_EXP_DIR}"

HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
  recipes=training/llama/hf_llama3_8b_seq16k_gpu_p5x16_pretrain \
  base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
  recipes.run.name="hf_llama3_8b" \
  recipes.exp_manager.exp_dir="$EXP_DIR" \
  recipes.model.data.train_dir="$TRAIN_DIR" \
  recipes.model.data.val_dir="$VAL_DIR" \
  container="${IMAGE}" \
  +cluster.container_mounts.0="/fsx:/fsx"
```

Depois de configurar todos os parâmetros necessários no script de execução, você pode executar o script usando o comando a seguir.

```
bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.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).