Esegui processi di addestramento PyTorch con il compilatore Addestramento SageMaker - 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à.

Esegui processi di addestramento PyTorch con il compilatore Addestramento SageMaker

Puoi utilizzare qualsiasi interfaccia SageMaker AI per eseguire un job di addestramento con il Compilatore SageMaker per l’addestramento: Amazon SageMaker Studio Classic, istanze del notebook Amazon SageMaker, AWS SDK per Python (Boto3) e AWS Command Line Interface.

Utilizzo di SageMaker Python SDK

Il Compilatore SageMaker per l’addestramento per PyTorch è disponibile tramite le classi degli strumenti di stima del framework PyTorch e HuggingFace di SageMaker AI. Per attivare il Compilatore SageMaker per l’addestramento, aggiungi il parametro compiler_config agli strumenti di stima di SageMaker AI. Importa la classe TrainingCompilerConfig e passa un'istanza al parametro compiler_config. I seguenti esempi di codice mostrano la struttura delle classi degli strumenti di stima di SageMaker AI con il Compilatore SageMaker per l’addestramento attivato.

Suggerimento

Per iniziare con i modelli predefiniti forniti da PyTorch o Transformers, prova a utilizzare le dimensioni dei batch fornite nella tabella di riferimento su .Modelli testati

Nota

Il supporto PyTorch nativo è disponibile in SageMaker Python SDK v2.121.0 e versioni successive. Assicurati di aggiornare l'SDK SageMaker Python di conseguenza.

Nota

A partire da PyTorch v1.12.0, sono disponibili i container del compilatore Addestramento SageMaker per PyTorch. Nota che i container del compilatore Addestramento SageMaker per PyTorch non sono preconfezionati con Hugging Face Transformers. Se devi installare la libreria nel container, assicurati di aggiungere il file requirements.txt nella directory di origine quando invii un processo di addestramento.

Per PyTorch v1.11.0 e precedenti, usa le versioni precedenti dei container del compilatore Addestramento SageMaker per Hugging Face e PyTorch.

Per un elenco completo delle versioni del framework e le informazioni sui container corrispondenti, consulta Framework supportati.

Per informazioni adatte al tuo caso d'uso, consulta una delle seguenti opzioni.

PyTorch v1.12.0 and later

Per compilare e addestrare un modello PyTorch, configura uno strumento di stima PyTorch di SageMaker AI con il Compilatore SageMaker per l’addestramento, come mostrato nel seguente esempio di codice.

Nota

Questo supporto PyTorch nativo è disponibile in SageMaker AI Python SDK v2.120.0 e versioni successive. Assicurati di aggiornare SageMaker AI Python SDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='train.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=1, instance_type='ml.p3.2xlarge', framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Hugging Face Transformers with PyTorch v1.11.0 and before

Per compilare e addestrare un modello di trasformatore con PyTorch, configura uno strumento di stima Hugging Face di SageMaker AI con il Compilatore SageMaker per l’addestramento, come mostrato nel seguente esempio di codice.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Per preparare lo script di addestramento, consulta le pagine seguenti.

Per trovare esempi end-to-end, consulta i seguenti notebook:

PyTorch v1.12

Per PyTorch v1.12, è possibile eseguire l’addestramento distribuito con il Compilatore SageMaker per l’addestramento aggiungendo l’opzione pytorch_xla specificata al parametro distribution della classe dello strumento di stima PyTorch di SageMaker AI.

Nota

Questo supporto PyTorch nativo è disponibile in SageMaker AI Python SDK v2.121.0 e versioni successive. Assicurati di aggiornare SageMaker AI Python SDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='your_training_script.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=instance_count, instance_type=instance_type, framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Suggerimento

Per preparare lo script di addestramento, vedi PyTorch

Transformers v4.21 with PyTorch v1.11

Per PyTorch v1.11 e versioni successive, il compilatore Addestramento SageMaker è disponibile per l'addestramento distribuito con l'opzione pytorch_xla specificata nel parametro distribution.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='your_training_script.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()
Suggerimento

Per preparare lo script di addestramento, consulta le pagine seguenti.

Transformers v4.17 with PyTorch v1.10.2 and before

Per la versione supportata di PyTorch v1.10.2 e precedenti, il compilatore Addestramento SageMaker richiede un meccanismo alternativo per l'avvio di un processo di addestramento distribuito. Per eseguire l’addestramento distribuito, il Compilatore SageMaker per l’addestramento richiede di passare uno script di avvio dell’addestramento distribuito di SageMaker AI all’argomento entry_point e di passare lo script di addestramento all’argomento hyperparameters. L’esempio di codice seguente mostra come configurare uno strumento di stima Hugging Face di SageMaker AI applicando le modifiche richieste.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count training_script="your_training_script.py" hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate, "training_script": training_script # Specify the file name of your training script. } pytorch_huggingface_estimator=HuggingFace( entry_point='distributed_training_launcher.py', # Specify the distributed training launcher script. instance_count=instance_count, instance_type=instance_type, transformers_version='4.17.0', pytorch_version='1.10.2', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Lo script di avvio avrà un aspetto simile al seguente. Racchiude lo script di addestramento e configura l'ambiente di addestramento distribuito in base alla dimensione dell'istanza di addestramento scelta.

# distributed_training_launcher.py #!/bin/python import subprocess import sys if __name__ == "__main__": arguments_command = " ".join([arg for arg in sys.argv[1:]]) """ The following line takes care of setting up an inter-node communication as well as managing intra-node workers for each GPU. """ subprocess.check_call("python -m torch_xla.distributed.sm_dist " + arguments_command, shell=True)
Suggerimento

Per preparare lo script di addestramento, consulta le pagine seguenti.

L'elenco seguente è il set minimo di parametri richiesti per eseguire un processo di addestramento SageMaker con il compilatore.

Nota

In caso di utilizzo dello strumento di stima Hugging Face di SageMaker AI, è necessario specificare i parametri transformers_version, pytorch_version, hyperparameters e compiler_config per abilitare il Compilatore SageMaker per l’addestramento. Non è possibile utilizzare image_uri per specificare manualmente i Deep Learning Containers integrati nel compilatore Addestramento elencati in Framework supportati.

  • entry_point (str) — Obbligatorio. Specifica il nome del file dello script di addestramento.

    Nota

    Per eseguire un addestramento distribuito con il compilatore Addestramento SageMaker e PyTorch v1.10.2 e versioni precedenti, specifica il nome del file di uno script di avvio con questo parametro. Lo script di avvio deve essere preparato per completare lo script di addestramento e configurare l'ambiente di addestramento distribuito. Per maggiori informazioni, vedi i seguenti notebook di esempio:

  • source_dir (str) — Facoltativo. Aggiungilo se hai bisogno di installare pacchetti aggiuntivi. Per installare i pacchetti, è necessario preparare un file requirements.txt in questa directory.

  • instance_count (int) — Obbligatorio. Specifica il numero di istanze.

  • instance_type (str) — Obbligatorio. Specifica il tipo di istanza.

  • transformers_version (str) - Obbligatorio solo quando si utilizza lo strumento di stima Hugging Face di SageMaker AI. Specifica la versione della libreria Hugging Face Transformers supportata da SageMaker Training Compiler. Per trovare le versioni disponibili, consulta Framework supportati.

  • framework_version o pytorch_version (str) — Obbligatorio. Specifica la versione di PyTorch supportata da SageMaker Training Compiler. Per trovare le versioni disponibili, consulta Framework supportati.

    Nota

    In caso di utilizzo dello strumento di stima Hugging Face di SageMaker AI, è necessario specificare transformers_version e pytorch_version.

  • hyperparameters (dict) — Facoltativo. Specifica gli iperparametri per il processo di addestramento, ad esempio n_gpusbatch_size, e learning_rate. Quando abiliti il compilatore Addestramento SageMaker, prova batch di dimensioni maggiori e regola il tasso di apprendimento di conseguenza. Per trovare casi di studio sull'uso del compilatore e sulle dimensioni dei batch modificate per migliorare la velocità di addestramento, consulta Modelli testati e Notebook e blog di esempio di SageMaker Training Compiler.

    Nota

    Per eseguire un addestramento distribuito con il compilatore Addestramento SageMaker e PyTorch v1.10.2 e versioni precedenti, è necessario aggiungere un parametro aggiuntivo, "training_script", per specificare lo script di addestramento, come mostrato nell'esempio di codice precedente.

  • compiler_config (oggetto TrainingCompilerConfig) — Necessario per attivare il compilatore Addestramento SageMaker. Includi questo parametro per attivare il compilatore Addestramento SageMaker. I seguenti sono parametri per la classe TrainingCompilerConfig.

    • enabled (bool) — Facoltativo. Specifica True o False per attivare o disattivare il compilatore Addestramento SageMaker. Il valore predefinito è True.

    • debug (bool) — Facoltativo. Per ricevere log di addestramento più dettagliati relativi ai processi di addestramento accelerati dal compilatore, modificalo in True. Tuttavia, la registrazione aggiuntiva potrebbe aumentare il sovraccarico e rallentare il processo di addestramento compilato. Il valore predefinito è False.

  • distribution (dict) — Facoltativo. Per eseguire un processo di addestramento distribuito con il compilatore Addestramento SageMaker, aggiungi distribution = { 'pytorchxla' : { 'enabled': True }}.

avvertimento

Se attivi Debugger SageMaker, ciò potrebbe influire sulle prestazioni del compilatore Addestramento SageMaker. Ti consigliamo di disattivare Debugger durante l'esecuzione del compilatore Addestramento SageMaker per assicurarti che non ci sia alcun impatto sulle prestazioni. Per ulteriori informazioni, consulta Considerazioni. Per disattivare le funzionalità di Debugger, aggiungi i seguenti due argomenti allo strumento di valutazione:

disable_profiler=True, debugger_hook_config=False

Se il processo di addestramento con il compilatore viene avviato correttamente, durante la fase di inizializzazione del processo vengono ricevuti i seguenti log:

  • Con TrainingCompilerConfig(debug=False)

    Found configuration for Training Compiler Configuring SM Training Compiler...
  • Con TrainingCompilerConfig(debug=True)

    Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode

Utilizzo dell’operazione API CreateTrainingJob SageMaker AI

Le opzioni di configurazione del compilatore Addestramento SageMaker devono essere specificate tramite il campo AlgorithmSpecification e HyperParameters nella sintassi della richiesta per l’operazione API CreateTrainingJob.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false", "sagemaker_pytorch_xla_multi_worker_enabled": "false" // set to "true" for distributed training }

Per trovare un elenco completo degli URI delle immagini dei container di deep learning su cui è implementato il compilatore Addestramento SageMaker, consulta Framework supportati.