SageMakerlavori di formazione tutorial di pre-formazione (GPU) - 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à.

SageMakerlavori di formazione tutorial di pre-formazione (GPU)

Questo tutorial ti guida attraverso il processo di configurazione ed esecuzione di un processo di pre-formazione utilizzando processi di formazione con SageMaker istanze GPU.

  • Configurare l'ambiente

  • Avvia un processo di formazione utilizzando le ricette SageMaker HyperPod

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 un bucket Amazon S3 in cui caricare i dati e generare gli artefatti di addestramento.

  • È stata richiesta una quota di servizio per 1x ml.p4d.24xlarge e 1x ml.p5.48xlarge su Amazon AI. SageMaker Per richiedere un aumento delle Service Quotas, procedi come descritto di seguito:

    1. Nella console AWS Service Quotas, accedi ai AWS servizi,

    2. Scegli Amazon SageMaker AI.

    3. Scegli un’istanza ml.p4d.24xlarge e un’istanza ml.p5.48xlarge.

  • Crea un ruolo AWS Identity and Access Management (IAM) con le seguenti politiche gestite per concedere all' SageMaker IA le autorizzazioni per eseguire gli esempi.

    • AmazonSageMakerFullAccess

    • Amazon EC2 FullAccess

  • I dati in uno dei seguenti formati:

    • JSON

    • JSONGZ (JSON compresso)

    • ARROW

  • (Facoltativo) Se utilizzi i pesi modello di cui disponi HuggingFace per il pre-allenamento o la messa a punto, devi ricevere un HuggingFace token. Per ulteriori informazioni su come ottenere il token, consulta User access tokens.

Configurazione dell'ambiente di lavoro di formazione su GPU SageMaker

Prima di eseguire un processo di SageMaker formazione, configura le AWS credenziali e la regione preferita eseguendo il aws configure comando. In alternativa al comando configure, puoi fornire le tue credenziali tramite variabili di ambiente comeAWS_ACCESS_KEY_ID, e AWS_SESSION_TOKEN. Per ulteriori informazioniAWS_SECRET_ACCESS_KEY, consulta SageMaker AI 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.

  • (Facoltativo) Configura l’ambiente virtuale e le dipendenze. Se utilizzi un notebook Jupyter in Amazon SageMaker Studio, puoi saltare questo passaggio. Assicurati di utilizzare Python 3.9 o versioni successive.

    # 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>
  • Installa SageMaker AI Python SDK

    pip3 install --upgrade sagemaker
  • Container: Il contenitore GPU viene impostato automaticamente dall'SDK SageMaker AI Python. Puoi anche fornire un tuo container.

    Nota

    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 requirements.txt a source_dir solo quando usi SageMaker AI Python SDK. Ad esempio, aggiungilo se lo usi in un notebook in AI. SageMaker JupyterLab

    Se utilizzi HyperPod ricette per l'avvio utilizzando il tipo di clustersm_jobs, ciò verrà eseguito automaticamente.

Avvio del job di addestramento con un notebook Jupyter

Puoi usare il seguente codice Python per eseguire un processo di SageMaker formazione con la tua ricetta. Sfrutta lo PyTorch stimatore dell'SDK AI SageMaker Python per inviare la ricetta. L'esempio seguente avvia la ricetta llama3-8b sulla piattaforma AI Training. 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)

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.

Nota

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 requirements.txt a source_dir solo quando utilizzi direttamente SageMaker AI Python SDK. Ad esempio, devi aggiungere la versione al file di testo quando utilizzi un notebook Jupyter.

Quando distribuisci l'endpoint per un lavoro di SageMaker formazione, devi specificare l'URI dell'immagine che stai utilizzando. Se non lo fornisci, lo strumento di stima utilizza l’immagine di addestramento per l’implementazione. Le immagini di formazione SageMaker HyperPod fornite non contengono le dipendenze necessarie per l'inferenza e la distribuzione. Di seguito è riportato un esempio di come utilizzare un’immagine di inferenza per l’implementazione:

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

L'esecuzione del codice precedente sull'istanza del notebook Sagemaker potrebbe richiedere più dei 5 GB di spazio di archiviazione predefiniti forniti dall'intelligenza artificiale. SageMaker JupyterLab Se riscontri problemi relativi allo spazio non disponibile, crea una nuova istanza del notebook di tipo diverso e aumenta lo spazio di archiviazione del notebook.

Avvio del job di addestramento con l’utilità di avvio delle ricette

Aggiorna il file ./recipes_collection/cluster/sm_jobs.yaml in modo che abbia il seguente aspetto:

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>"

Aggiorna ./recipes_collection/config.yaml per specificare sm_jobs in 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.

Avvia il processo con il comando seguente.

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

Per ulteriori informazioni sulla configurazione dei lavori di SageMaker formazione, consulta Esegui un lavoro di formazione sui lavori di formazione. SageMaker