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à.
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.
-
Configurazione dell'ambiente
-
Avvia un processo di formazione utilizzando le ricette SageMaker HyperPod
Prima di iniziare, assicurati di avere i seguenti prerequisiti.
Prerequisiti
Prima di iniziare a configurare l'ambiente, assicurati di disporre di:
-
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 della quota di servizio, procedi come segue:
-
Nella console AWS Service Quotas, accedi ai AWS servizi,
-
Scegli Amazon SageMaker AI.
-
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'IA le autorizzazioni per eseguire gli esempi. SageMaker
-
AmazonSageMakerFullAccess
-
Amazon EC2 FullAccess
-
-
Dati in uno dei seguenti formati:
-
JSON
-
JSONGZ (JSON compresso)
-
FRECCIA
-
-
(Facoltativo) È necessario ottenere un HuggingFace gettone se si utilizzano i pesi modello di cui si dispone HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta Token di accesso degli utenti.
Configurazione dell'ambiente dei lavori SageMaker di formazione su GPU
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 usare 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 il tuo contenitore.Nota
Se stai eseguendo un processo di formazione multimodale su Llama 3.2, la
transformers
versione deve essere4.45.2
uguale o superiore.Aggiungi
transformers==4.45.2
requirements.txt
asource_dir
solo quando usi SageMaker AI Python SDK. Ad esempio, aggiungilo se lo usi in un notebook in AI. SageMaker JupyterLabSe utilizzi HyperPod ricette per l'avvio utilizzando il tipo di cluster
sm_jobs
, ciò verrà eseguito automaticamente.
Avvia il processo di formazione utilizzando 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
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()
Utilizzate il parametro training_recipe per specificare la ricetta che desiderate utilizzare per l'allenamento.
Nota
Se stai eseguendo un processo di formazione multimodale con Llama 3.2, la versione dei transformers deve essere 4.45.2 o successiva.
Aggiungi transformers==4.45.2
requirements.txt
a source_dir
solo quando utilizzi direttamente SageMaker AI Python SDK. Ad esempio, è necessario aggiungere la versione al file di testo quando si utilizza un notebook Jupyter.
Quando si distribuisce l'endpoint per un lavoro di SageMaker formazione, è necessario specificare l'URI dell'immagine che si sta utilizzando. Se non fornite l'URI dell'immagine, lo estimatore utilizza l'immagine di addestramento come immagine per la distribuzione. Le immagini di addestramento SageMaker HyperPod fornite non contengono le dipendenze necessarie per l'inferenza e la distribuzione. Di seguito è riportato un esempio di come un'immagine di inferenza può essere utilizzata per la distribuzione:
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 da AI. SageMaker JupyterLab Se riscontri problemi di spazio non disponibile, crea una nuova istanza del notebook in cui utilizzi un'istanza del notebook diversa e aumenta lo spazio di archiviazione del notebook.
Avvia il processo di formazione con il programma di avvio delle ricette
Aggiorna il ./recipes_collection/cluster/sm_jobs.yaml
file 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
nella cluster
ecluster_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.
Avviare il job con il seguente comando
python3 main.py --config-path recipes_collection --config-name config
Per ulteriori informazioni sulla configurazione dei lavori di SageMaker formazione, consulta Eseguire un processo di formazione sui lavori di SageMaker formazione.