View a markdown version of this page

Tutorial preliminare sui lavori di SageMaker formazione con Trainium - Amazon SageMaker AI

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 preliminare sui lavori di SageMaker formazione con Trainium

Questo tutorial ti guida attraverso il processo di impostazione e gestione di un lavoro di pre-formazione utilizzando i lavori di formazione con AWS istanze SageMaker 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:

  • Un file system Amazon FSx o un bucket S3 in cui caricare i dati e generare gli artefatti di addestramento.

  • Richiedi una quota di servizio per l'ml.trn1.32xlargeistanza su Amazon AI. SageMaker Per richiedere un aumento delle Service Quotas, procedi come descritto di seguito:

    Per richiedere un aumento delle Service Quota per l’istanza ml.trn1.32xlarge
    1. Accedi alla console AWS Service Quotas.

    2. Scegli i AWS servizi.

    3. Seleziona JupyterLab.

    4. 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 hai bisogno dei pesi preaddestrati di HuggingFace o se stai addestrando 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.

Configura il tuo ambiente per i lavori di formazione su Trainium SageMaker

Prima di eseguire un lavoro di SageMaker formazione, usa il aws configure comando per configurare AWS le tue 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.

Consigliamo vivamente di utilizzare un notebook SageMaker AI Jupyter in SageMaker AI JupyterLab per avviare un lavoro di formazione. SageMaker Per ulteriori informazioni, consulta SageMaker JupyterLab.

  • (Facoltativo) Se utilizzi il notebook Jupyter in Amazon SageMaker Studio, puoi saltare l'esecuzione del seguente comando. 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 AI Python SDK SageMaker

    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 usi AI Python SDK. SageMaker

      • Se stai usando delle HyperPod ricette per lanciare usando sm_jobs come tipo di cluster, non devi specificare la versione dei trasformatori.

    • Container: il contenitore Neuron viene impostato automaticamente da SageMaker AI Python SDK.

Avvio del job di addestramento con un notebook Jupyter

Puoi usare il seguente codice Python per eseguire un lavoro di SageMaker formazione usando la tua ricetta. Sfrutta l'SDK PyTorch ModelTrainer SageMaker AI Python 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 boto3 from sagemaker.core.debugger import TensorBoardOutputConfig from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, InputData, OutputDataConfig sagemaker_session = Session() role = get_execution_role() bucket = sagemaker_session.default_bucket() output = os.path.join(f"s3://{bucket}", "output") output_path = "<s3-URI>" 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=recipe_overrides["exp_manager"]["explicit_log_dir"] ) model_trainer = ModelTrainer( output_data_config=OutputDataConfig(s3_output_path=output_path), base_job_name=f"llama-trn", role=role, compute=Compute(instance_type="ml.trn1.32xlarge", instance_count=1), training_recipe="training/llama/hf_llama3_70b_seq8k_trn1x16_pretrain", recipe_overrides=recipe_overrides, ) model_trainer.train(input_data_config=[ InputData(channel_name="train", data_source="your-inputs") ], wait=True)

Il codice precedente crea un ModelTrainer oggetto con la ricetta di addestramento e quindi addestra il modello utilizzando il metodo. train() 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

  • 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 processi di SageMaker formazione, vedere. SageMaker tutorial di pre-formazione sui lavori di formazione (GPU)