

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial di pre-formazione sui lavori SageMaker di formazione Trainium
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-pretrain-tutorial"></a>

Questo tutorial ti guida attraverso il processo di configurazione ed esecuzione di un lavoro di pre-formazione utilizzando lavori di formazione con SageMaker AWS istanze Trainium.
+ Configurare l'ambiente
+ Avvio di un job di addestramento

Prima di cominciare, assicurati che i requisiti seguenti siano soddisfatti.

**Prerequisiti**  
Prima di iniziare a configurare l’ambiente, assicurati di avere:  
 FSx File system Amazon o bucket S3 in cui è possibile caricare i dati e generare gli artefatti di addestramento.
Richiedi una quota di servizio per l'`ml.trn1.32xlarge`istanza su Amazon SageMaker AI. Per richiedere un aumento delle Service Quotas, procedi come descritto di seguito:  
Vai alla console AWS Service Quotas.
Scegli i AWS servizi.
Seleziona JupyterLab.
Specifica un’istanza per `ml.trn1.32xlarge`.
Crea un ruolo AWS Identity and Access Management (IAM) con `AmazonSageMakerFullAccess` le policy `AmazonEC2FullAccess` gestite. Queste politiche forniscono ad Amazon SageMaker AI le autorizzazioni per eseguire gli esempi.
I dati in uno dei seguenti formati:  
JSON
JSONGZ (JSON compresso)
ARROW
(Facoltativo) Se ti servono i pesi preallenati di HuggingFace o se stai allenando un modello Llama 3.2, devi ottenere il HuggingFace token prima di iniziare l'allenamento. Per ulteriori informazioni su come ottenere il token, consulta [User access tokens](https://huggingface.co/docs/hub/en/security-tokens).

## Configura il tuo ambiente per i lavori di formazione Trainium SageMaker
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-environment-setup"></a>

Prima di eseguire un processo di SageMaker formazione, utilizza il `aws configure` comando per configurare AWS le credenziali e la regione preferita. In alternativa, puoi fornire le tue credenziali anche tramite variabili di ambiente come `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`. Per ulteriori informazioni, consulta [SageMaker AI Python SDK](https://github.com/aws/sagemaker-python-sdk).

Consigliamo vivamente di utilizzare un notebook SageMaker AI Jupyter in SageMaker AI JupyterLab per avviare un processo di formazione. SageMaker Per ulteriori informazioni, consulta [SageMaker JupyterLab](studio-updated-jl.md).
+ (Facoltativo) Se utilizzi il notebook Jupyter in Amazon SageMaker Studio, puoi saltare l'esecuzione del comando seguente. Assicurati di utilizzare una versione uguale o superiore a 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
  ```
+ Installa SageMaker AI Python SDK

  ```
  pip3 install --upgrade sagemaker
  ```
+ 
  + Se stai eseguendo un job di addestramento multimodale Llama 3.2, la versione di `transformers` deve essere `4.45.2` o superiore.
    + Aggiungi `transformers==4.45.2` a `requirements.txt` in source\_dir solo quando utilizzi l'SDK AI Python. SageMaker 
    + Se si utilizzano HyperPod ricette da avviare utilizzandole `sm_jobs` come tipo di cluster, non è necessario specificare la versione dei transformers.
  + `Container`: Il contenitore Neuron viene impostato automaticamente da SageMaker AI Python SDK.

## Avvio del job di addestramento con un notebook Jupyter
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-notebook"></a>

Puoi usare il seguente codice Python per eseguire un processo di SageMaker formazione utilizzando la tua ricetta. Sfrutta lo PyTorch stimatore dell'[SDK AI SageMaker Python](https://sagemaker.readthedocs.io/en/stable/) per inviare la ricetta. L'esempio seguente avvia la ricetta llama3-8b come AI Training Job. SageMaker 
+ `compiler_cache_url`: cache da utilizzare per salvare gli artefatti compilati, ad esempio un artefatto 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)
```

Il codice precedente crea un oggetto PyTorch estimatore con la ricetta di addestramento e quindi adatta il modello utilizzando il metodo. `fit()` Utilizza il parametro `training_recipe` per specificare la ricetta da utilizzare per l’addestramento.

## Avvio del job di addestramento con l’utilità di avvio delle ricette
<a name="sagemaker-hyperpod-trainium-sagemaker-training-jobs-launch-training-job-recipes"></a>
+ Aggiornamento di `./recipes_collection/cluster/sm_jobs.yaml`
  + compiler\_cache\_url: l’URL utilizzato per salvare gli artefatti. Può essere un URL di 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
  ```
+ Aggiornamento di `./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.
  ```
+ Avvia il processo con `main.py`.

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

Per ulteriori informazioni sulla configurazione dei lavori di SageMaker formazione, vedere. [SageMaker lavori di formazione tutorial di pre-formazione (GPU)](sagemaker-hyperpod-gpu-sagemaker-training-jobs-pretrain-tutorial.md)