

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

# Tutorial de pré-treinamento de empregos SageMaker de treinamento no Trainium
<a name="sagemaker-hyperpod-trainium-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 do AWS Trainium.
+ Configure o ambiente.
+ Iniciar uma tarefa de treinamento

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 Amazon ou bucket S3 onde você pode carregar os dados e gerar os artefatos de treinamento.
Solicite uma cota de serviço para a `ml.trn1.32xlarge` instância na Amazon SageMaker AI. Para solicitar um aumento da cota de serviço, você pode seguir um dos seguintes procedimentos:  
Navegue até o AWS console Service Quotas.
Escolha AWS os serviços.
Selecione JupyterLab.
Especifique 1 instância para `ml.trn1.32xlarge`.
Crie uma função AWS Identity and Access Management (IAM) com as `AmazonSageMakerFullAccess` políticas `AmazonEC2FullAccess` gerenciadas. Essas políticas fornecem à Amazon SageMaker AI permissões para executar os exemplos.
Ter dados 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).

## Configure seu ambiente para trabalhos de treinamento do Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Antes de executar um trabalho SageMaker de treinamento, use o `aws configure` comando para configurar suas AWS credenciais e sua região preferencial. Também é possível fornecer suas credenciais por meio de variáveis de ambiente, como `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`. Para obter mais informações, consulte [SageMaker AI Python SDK](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) Se você estiver usando o notebook Jupyter no Amazon SageMaker Studio, poderá pular a execução do comando a seguir. Use uma versão >= à Python 3.9.

  ```
  # 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
  ```
+ Instale o SageMaker SDK AI Python

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Se você estiver executando uma tarefa de treinamento multimodal do llama 3.2, a versão do `transformers` deve ser `4.45.2` ou posterior.
    + Adicione `transformers==4.45.2` `requirements.txt` em source\$1dir somente quando estiver usando o SDK AI Python. SageMaker 
    + Se você estiver usando HyperPod receitas para iniciar usando `sm_jobs` como tipo de cluster, não precisará especificar a versão dos transformadores.
  + `Container`: o contêiner Neuron é definido automaticamente pelo SageMaker AI Python SDK.

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

Você pode usar o código Python a seguir para executar um trabalho de SageMaker treinamento usando 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 como um AI Training Job. SageMaker 
+ `compiler_cache_url`: cache a ser usado para salvar os artefatos compilados, como um artefato do Amazon S3.

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

from sagemaker.pytorch import PyTorch

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

recipe_overrides = {
    "run": {
        "results_dir": "/opt/ml/model",
    },
    "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>"
} 

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-trn",
    role=role,
    instance_type="ml.trn1.32xlarge",
    sagemaker_session=sagemaker_session,
    training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain",
    recipe_overrides=recipe_overrides,
)

estimator.fit(inputs={"train": "your-inputs"}, 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_recipe` para especificar a fórmula que você deseja usar para treinamento.

## Iniciar a tarefa de treinamento com o inicializador de fórmulas
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Atualizar as `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\$1cache\$1url: o URL usado para salvar os artefatos. Pode ser um URL do Amazon S3.

  ```
  sm_jobs_config:
    output_path: <s3_output_path>
    wait: True
    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
      image_uri: <your_image_uri>
      enable_remote_debug: True
      py_version: py39
    recipe_overrides:
      model:
        exp_manager:
          exp_dir: <exp_dir>
        data:
          train_dir: /opt/ml/input/data/train
          val_dir: /opt/ml/input/data/val
  ```
+ Atualizar as `./recipes_collection/config.yaml`

  ```
  defaults:
    - _self_
    - cluster: sm_jobs
    - 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.
  
  instance_type: ml.trn1.32xlarge
  base_results_dir: ~/sm_job/hf_llama3_8B # Location to store the results, checkpoints and logs.
  ```
+ Iniciar a tarefa com `main.py`

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

Para obter mais informações sobre como configurar trabalhos SageMaker de treinamento, consulte[SageMaker tutorial de pré-treinamento (GPU) de trabalhos de treinamento](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md).