

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

# Tutoriais - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3"></a>

A sequência de etapas a seguir é necessária para executar receitas de treinamento sem pontos de verificação. HyperPod

## Pré-requisitos
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-prereqs"></a>

Antes de começar a configurar seu ambiente, você deve:
+ [Suporte habilitado para Amazon EKS na Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configurar operador HyperPod de treinamento (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 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 dados em um dos seguintes formatos:
  + JSON
  + JSONGZ (JSON compactado)
  + ARROW
+ [Escolha uma receita de treinamento sem ponto de verificação compatível para Llama 70B ou GPT-OSS 120B na fonte.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Baixe os pesos do modelo Hugging Face](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [e converta para o formato compatível com Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurar o ambiente

## Configuração do ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubernetes"></a>

Para configurar seu ambiente Kubernetes, faça o seguinte:

1. Configure um ambiente virtual. Certifique-se de usar Python maior ou igual a 3,10 e menor que 3,14.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Configurar kubectl e eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Instale Helm](https://helm.sh/docs/intro/install/)

1. Conecte-se ao cluster do Kubernetes.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Instale as dependências usando um dos seguintes métodos:

   1. Método 1: método de SageMaker HyperPod receitas:

      ```
      # install SageMaker HyperPod Recipes.
      git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
      cd sagemaker-hyperpod-recipes
      pip3 install -r requirements.txt
      ```

   1. Método 2: kubectl com método yaml de trabalho predefinido

      ```
      # install SageMaker HyperPod checkpointless training.
      git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
      cd sagemaker-hyperpod-checkpointless-training
      ```

Agora você pode iniciar a receita de treinamento sem ponto de verificação usando o inicializador NeMo -style ou usando kubectl.

## Método 1: Inicie o trabalho de treinamento com o lançador de receitas
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-recipes-launcher"></a>

Como alternativa, você pode usar as SageMaker HyperPod receitas para enviar seu trabalho de treinamento. O uso das receitas envolve atualizar k8s.yaml, config.yaml e executar o script de inicialização.

1. Atualizar as `launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh`

   Um contêiner de aprendizado profundo. Para encontrar a versão mais recente do contêiner de treinamento checkpointless, consulte as notas de versão do [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.

   ```
   #!/bin/bash
   
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=training/llama/checkpointless_llama3_70b_pretrain \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.data.global_batch_size=16 \
       recipes.data.micro_batch_size=4 \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. Iniciar a tarefa de treinamento

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
   ```

1. Depois de enviar a tarefa de treinamento, você pode usar o comando a seguir para verificar se a enviou com êxito.

   ```
   kubectl get pods
   
   NAME                             READY   STATUS             RESTARTS        AGE
   llama-3-70b-worker-0             0/1    running               0            36s
   ```

1. Se o STATUS estiver em PENDING ou ContainerCreating, execute o comando a seguir para obter mais detalhes

   ```
   kubectl describe pod <name of pod>
   ```

1. Depois que o STATUS da tarefa mudar para Running, você poderá examinar o log usando o comando a seguir.

   ```
   kubectl logs <name of pod>
   ```

   O STATUS mudará para Concluído quando você executar kubectl get pods

## Método 2: iniciar o trabalho de treinamento com kubectl com yaml predefinido
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubectl"></a>

Outra opção é iniciar o treinamento por meio do kubectl com um job pré-definido yaml.

1. Atualizar a `examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml`
   + `image`: contêiner de deep learning. Para encontrar a versão mais recente do contêiner de treinamento checkpointless, consulte as notas de versão do [checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) training.
   + `resume.restore_config.path=<path_to_pretrained_weights>`[: O caminho para baixar os pesos do modelo pré-treinado no formato Nemo na etapa de Pré-requisitos.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)
   + `dataset.dataset_path=<path_to_dataset>`: o caminho para o conjunto de dados armazenado no armazenamento compartilhado

1. Envie o trabalho usando kubectl com `pretrain_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
   ```

1. Depois de enviar a tarefa de treinamento, você pode usar o comando a seguir para verificar se a enviou com êxito.

   ```
   kubectl get pods
   
   NAME                                             READY   STATUS             RESTARTS        AGE
   llama3-pretrain-checkpointless-worker-0             0/1    running               0            36s
   ```

1. Se o STATUS estiver em PENDING ou ContainerCreating, execute o comando a seguir para obter mais detalhes

   ```
   kubectl describe pod <name of pod>
   ```

1. Depois que o STATUS da tarefa mudar para Running, você poderá examinar o log usando o comando a seguir.

   ```
   kubectl logs <name of pod>
   ```

   O STATUS mudará para Concluído quando você executar kubectl get pods