

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

# SageMaker tutorial de pré-treinamento (GPU) de trabalhos de treinamento
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial"></a>

Este tutorial orienta você pelo processo de configuração e execução de um trabalho de pré-treinamento usando trabalhos de treinamento com SageMaker instâncias de GPU.
+ Configure o ambiente.
+ Inicie um trabalho de treinamento usando SageMaker HyperPod receitas

Antes de começar, verifique se você atendeu aos pré-requisitos a seguir.

**Pré-requisitos**  
Antes de começar a configurar seu ambiente, você deve:  
Sistema de FSx arquivos da Amazon ou um bucket do Amazon S3 onde você pode carregar os dados e gerar os artefatos de treinamento.
Solicitou uma cota de serviço para 1x ml.p4d.24xlarge e 1x ml.p5.48xlarge na Amazon AI. SageMaker Para solicitar um aumento da cota de serviço, você pode seguir um dos seguintes procedimentos:  
No console AWS Service Quotas, navegue até AWS services,
Escolha **Amazon SageMaker AI**.
Escolha uma instância ml.p4d.24xlarge e uma instância ml.p5.48xlarge.
Crie uma função AWS Identity and Access Management(IAM) com as seguintes políticas gerenciadas para dar permissões à SageMaker IA para executar os exemplos.  
AmazonSageMakerFullAccess
Amazon EC2 FullAccess
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).

## Configuração do ambiente de trabalhos SageMaker de treinamento em GPU
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-environment-setup"></a>

Antes de executar um trabalho SageMaker de treinamento, configure suas AWS credenciais e sua região preferencial executando o `aws configure` comando. Como alternativa ao comando configure, você pode fornecer suas credenciais por meio de variáveis de ambiente como`AWS_ACCESS_KEY_ID`,, e `AWS_SESSION_TOKEN.` Para obter mais informações`AWS_SECRET_ACCESS_KEY`, consulte SDK para [SageMaker AI Python](https://github.com/aws/sagemaker-python-sdk).

É altamente recomendável usar um notebook SageMaker AI Jupyter em SageMaker IA JupyterLab para iniciar um trabalho de SageMaker treinamento. Para obter mais informações, consulte [SageMaker JupyterLab](studio-updated-jl.md).
+ (Opcional) Configure o ambiente virtual e as dependências. Se você estiver usando um notebook Jupyter no Amazon SageMaker Studio, você pode pular esta etapa. Você deve usar o Python 3.9 ou posterior.

  ```
  # set up a virtual environment
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  # install dependencies after git clone.
  
  git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
  cd sagemaker-hyperpod-recipes
  pip3 install -r requirements.txt
  # Set the aws region.
  
  aws configure set <your_region>
  ```
+ Instale o SageMaker SDK AI Python

  ```
  pip3 install --upgrade sagemaker
  ```
+ `Container`: o contêiner da GPU é definido automaticamente pelo SDK do SageMaker AI Python. Você também pode fornecer seu próprio contêiner.
**nota**  
Se você estiver executando uma tarefa de treinamento multimodal do Llama 3.2, a versão dos `transformers` deve ser `4.45.2 ` ou posterior.

  Adicione `transformers==4.45.2` a `requirements.txt` entrada `source_dir` somente quando estiver usando o SDK AI SageMaker Python. Por exemplo, anexe-o se você o estiver usando em um notebook em SageMaker IA. JupyterLab

  Se você estiver usando HyperPod receitas para iniciar usando o tipo de cluster`sm_jobs`, isso será feito automaticamente.

## Iniciar a tarefa de treinamento usando um caderno Jupyter
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-launch-training-job-notebook"></a>

Você pode usar o código Python a seguir para executar um trabalho de SageMaker treinamento com sua receita. Ele usa o PyTorch estimador do [SDK AI SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) para enviar a receita. O exemplo a seguir lança a receita llama3-8b na plataforma de treinamento de IA. SageMaker 

```
import os
import sagemaker,boto3
from sagemaker.debugger import TensorBoardOutputConfig

from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()

bucket = sagemaker_session.default_bucket() 
output = os.path.join(f"s3://{bucket}", "output")
output_path = "<s3-URI>"

overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "exp_manager": {
        "exp_dir": "",
        "explicit_log_dir": "/opt/ml/output/tensorboard",
        "checkpoint_dir": "/opt/ml/checkpoints",
    },   
    "model": {
        "data": {
            "train_dir": "/opt/ml/input/data/train",
            "val_dir": "/opt/ml/input/data/val",
        },
    },
}

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=os.path.join(output, 'tensorboard'),
    container_local_output_path=overrides["exp_manager"]["explicit_log_dir"]
)

estimator = PyTorch(
    output_path=output_path,
    base_job_name=f"llama-recipe",
    role=role,
    instance_type="ml.p5.48xlarge",
    training_recipe="training/llama/hf_llama3_8b_seq8k_gpu_p5x16_pretrain",
    recipe_overrides=recipe_overrides,
    sagemaker_session=sagemaker_session,
    tensorboard_output_config=tensorboard_output_config,
)

estimator.fit(inputs={"train": "s3 or fsx input", "val": "s3 or fsx input"}, wait=True)
```

O código anterior cria um objeto PyTorch estimador com a receita de treinamento e, em seguida, ajusta o modelo usando o método. `fit()` Use o parâmetro training\$1recipe para especificar a fórmula que você deseja usar para treinamento.

**nota**  
Se você estiver executando uma tarefa de treinamento multimodal do Llama 3.2, a versão dos transformadores deve ser 4.45.2 ou posterior.

Adicione `transformers==4.45.2` a `requirements.txt` entrada `source_dir` somente quando estiver usando o AI SageMaker Python SDK diretamente. Por exemplo, você deve acrescentar a versão ao arquivo de texto quando estiver usando um caderno Jupyter.

Ao implantar o endpoint para um trabalho de SageMaker treinamento, você deve especificar o URI da imagem que está usando. Se não fornecer o URI da imagem, o estimador usará a imagem de treinamento como imagem para a implantação. As imagens de treinamento SageMaker HyperPod fornecidas não contêm as dependências necessárias para inferência e implantação. Veja abaixo um exemplo de como uma imagem de inferência pode ser usada para implantação:

```
from sagemaker import image_uris
container=image_uris.retrieve(framework='pytorch',region='us-west-2',version='2.0',py_version='py310',image_scope='inference', instance_type='ml.p4d.24xlarge')
predictor = estimator.deploy(initial_instance_count=1,instance_type='ml.p4d.24xlarge',image_uri=container)
```

**nota**  
A execução do código anterior na instância do notebook Sagemaker pode precisar de mais do que os 5 GB de armazenamento padrão que a IA fornece. SageMaker JupyterLab Se você se deparar com problemas de espaço não disponível, crie uma instância de caderno em que você use outra instância de caderno e aumente o armazenamento do caderno.

## Iniciar a tarefa de treinamento com o inicializador de fórmulas
<a name="sagemaker-hyperpod-gpu-sagemaker-training-jobs-launch-training-job-recipes"></a>

Atualize o método no arquivo `./recipes_collection/cluster/sm_jobs.yaml` para que fique como se segue:

```
sm_jobs_config:
  output_path: <s3_output_path>
  tensorboard_config:
    output_path: <s3_output_path>
    container_logs_path: /opt/ml/output/tensorboard  # Path to logs on the container
  wait: True  # Whether to wait for training job to finish
  inputs:  # Inputs to call fit with. Set either s3 or file_system, not both.
    s3:  # Dictionary of channel names and s3 URIs. For GPUs, use channels for train and validation.
      train: <s3_train_data_path>
      val: null
  additional_estimator_kwargs:  # All other additional args to pass to estimator. Must be int, float or string.
    max_run: 180000
    enable_remote_debug: True
  recipe_overrides:
    exp_manager:
      explicit_log_dir: /opt/ml/output/tensorboard
    data:
      train_dir: /opt/ml/input/data/train
    model:
      model_config: /opt/ml/input/data/train/config.json
    compiler_cache_url: "<compiler_cache_url>"
```

Atualize o `./recipes_collection/config.yaml` para especificar `sm_jobs` em `cluster` e `cluster_type`.

```
defaults:
  - _self_
  - cluster: sm_jobs  # set to `slurm`, `k8s` or `sm_jobs`, depending on the desired cluster
  - recipes: training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain
cluster_type: sm_jobs  # bcm, bcp, k8s or sm_jobs. If bcm, k8s or sm_jobs, it must match - cluster above.
```

Inicie o trabalho com o seguinte comando:

```
python3 main.py --config-path recipes_collection --config-name config
```

Para obter mais informações sobre como configurar trabalhos de SageMaker treinamento, consulte Executar um trabalho de treinamento em trabalhos SageMaker de treinamento.