

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 arquivos do Amazon FSx ou um sistema do NFS acessível por meio 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 [Build AWS-optimized image 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).