

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel de SageMaker pré-formation sur les jobs de formation Trainium
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Ce didacticiel vous guide tout au long du processus de configuration et d'exécution d'une tâche de pré-formation à l'aide de tâches de SageMaker formation avec des instances AWS Trainium.
+ Configuration de votre environnement
+ Lancement d’une tâche d’entraînement

Avant de commencer, assurez-vous d’avoir rempli les conditions préalables suivantes.

**Conditions préalables**  
Avant de commencer à configurer votre environnement, assurez-vous d’avoir :  
Système de FSx fichiers Amazon ou compartiment S3 dans lequel vous pouvez charger les données et générer les artefacts d'entraînement.
Demandez un quota de service pour l'`ml.trn1.32xlarge`instance sur Amazon SageMaker AI. Pour demander une augmentation du quota de service, procédez comme suit :  
Accédez à la console AWS Service Quotas.
Choisissez AWS les services.
Sélectionnez JupyterLab.
Spécifiez une instance pour `ml.trn1.32xlarge`.
Créez un rôle Gestion des identités et des accès AWS (IAM) avec les politiques `AmazonEC2FullAccess` gérées `AmazonSageMakerFullAccess` et. Ces politiques fournissent à Amazon SageMaker AI les autorisations nécessaires pour exécuter les exemples.
Des données dans l’un des formats suivants :  
JSON
JSONGZ (JSON compressé)
ARROW
(Facultatif) Si vous avez besoin des haltères préentraînées HuggingFace ou si vous entraînez un modèle Llama 3.2, vous devez obtenir le HuggingFace jeton avant de commencer l'entraînement. Pour plus d’informations sur l’obtention du jeton, consultez [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configurez votre environnement pour les tâches de formation Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Avant d'exécuter une tâche de SageMaker formation, utilisez la `aws configure` commande pour configurer vos AWS informations d'identification et votre région préférée. Vous pouvez également fournir vos informations d’identification par le biais de variables d’environnement telles que `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` et `AWS_SESSION_TOKEN`. Pour plus d'informations, consultez le [SDK SageMaker AI Python](https://github.com/aws/sagemaker-python-sdk).

Nous vous recommandons vivement d'utiliser un bloc-notes SageMaker AI Jupyter dans SageMaker AI JupyterLab pour lancer une tâche de SageMaker formation. Pour de plus amples informations, veuillez consulter [SageMaker JupyterLab](studio-updated-jl.md).
+ (Facultatif) Si vous utilisez le bloc-notes Jupyter dans Amazon SageMaker Studio, vous pouvez ignorer l'exécution de la commande suivante. Assurez-vous d’utiliser une version >= 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
  ```
+ Installez le SDK SageMaker AI Python

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Si vous exécutez une tâche d’entraînement multimodale Llama 3.2, la version des `transformers` doit être `4.45.2` ou supérieure.
    + Ajoutez `transformers==4.45.2` à `requirements.txt` dans source\$1dir uniquement lorsque vous utilisez le SDK AI SageMaker Python.
    + Si vous utilisez des HyperPod recettes pour lancer en utilisant `sm_jobs` le type de cluster, il n'est pas nécessaire de spécifier la version des transformateurs.
  + `Container`: Le conteneur Neuron est défini automatiquement par le SDK SageMaker AI Python.

## Lancement de la tâche d’entraînement à l’aide d’un bloc-notes Jupyter
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Vous pouvez utiliser le code Python suivant pour exécuter une tâche d' SageMaker entraînement à l'aide de votre recette. Il utilise l' PyTorch estimateur du [SDK AI SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) pour soumettre la recette. L'exemple suivant lance la recette llama3-8b en tant que Job de formation à l'IA. SageMaker 
+ `compiler_cache_url` : cache à utiliser pour enregistrer les artefacts compilés, tels qu’un artefact 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)
```

Le code précédent crée un objet PyTorch estimateur avec la recette d'apprentissage, puis ajuste le modèle à l'aide de la `fit()` méthode. Utilisez le paramètre `training_recipe` pour spécifier la recette que vous souhaitez utiliser pour l’entraînement.

## Lancement de la tâche d’entraînement avec le lanceur de recettes
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Mettre à jour `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\$1cache\$1url : URL utilisée pour enregistrer les artefacts. Il peut s’agir d’une URL 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
  ```
+ Mettre à jour `./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.
  ```
+ Lancez la tâche avec `main.py`

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

Pour plus d'informations sur la configuration des tâches de SageMaker formation, consultez[SageMaker didacticiel de pré-formation sur les tâches de formation (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md).