Esegui processi di addestramento TensorFlow 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.
Argomenti
Utilizzo di SageMaker Python SDK
Per attivare il Compilatore SageMaker per l’addestramento, aggiungi il parametro compiler_config allo strumento di stima TensorFlow o Hugging Face 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 dalle librerie TensorFlow e Transformers, prova a utilizzare le dimensioni dei batch fornite nella tabella di riferimento su Modelli testati.
Nota
Il Compilatore SageMaker per l’addestramento per TensorFlow è disponibile tramite gli strumenti di stima del framework TensorFlow
Per informazioni adatte al tuo caso d'uso, consulta una delle seguenti opzioni.
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, tensorflow_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. -
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_versionotensorflow_version(str) — Obbligatorio. Specifica la versione di TensorFlow supportata dal compilatore Addestramento SageMaker. Per trovare le versioni disponibili, consulta Framework supportati.Nota
In caso di utilizzo dello strumento di stima TensorFlow di SageMaker AI, è necessario specificare
framework_version.In caso di utilizzo dello strumento di stima Hugging Face di SageMaker AI, è necessario specificare
transformers_versionetensorflow_version. -
hyperparameters(dict) — Facoltativo. Specifica gli iperparametri per il processo di addestramento, ad esempion_gpusbatch_size, elearning_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. -
compiler_config(oggetto TrainingCompilerConfig) — Obbligatorio. Includi questo parametro per attivare il compilatore Addestramento SageMaker. I seguenti sono parametri per la classeTrainingCompilerConfig.-
enabled(bool) — Facoltativo. SpecificaTrueoFalseper 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 inTrue. Tuttavia, la registrazione aggiuntiva potrebbe aumentare il sovraccarico e rallentare il processo di addestramento compilato. Il valore predefinito èFalse.
-
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 di SageMaker AI Python SDK ed estensione dei Container per il Deep Learning del framework SageMaker AI
AWS Deep Learning Containers (DLC) per TensorFlow utilizzano versioni adattate di TensorFlow che includono modifiche al framework open source TensorFlow. I Container per il Deep Learning del framework SageMaker AI
Nota
Questa funzionalità di personalizzazione Docker è attualmente disponibile solo per TensorFlow.
Per estendere e personalizzare i Container DL SageMaker AI TensorFlow per il tuo caso d’uso, utilizza le seguenti istruzioni.
Crea un Dockerfile.
Utilizza il seguente modello Dockerfile per estendere il Container DL SageMaker AI TensorFlow. È necessario utilizzare l’immagine del Container DL SageMaker AI TensorFlow come immagine di base del container Docker. Per trovare gli URI delle immagini dei Container DL SageMaker AI TensorFlow, consulta Framework supportati.
# SageMaker AI TensorFlow Deep Learning Container image FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/tensorflow-training:<image-tag>ENV PATH="/opt/ml/code:${PATH}" # This environment variable is used by the SageMaker AI container # to determine user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code # Add more code lines to customize for your use-case ...
Per ulteriori informazioni, consulta Fase 2: creare e caricare gli script di addestramento Dockerfile e Python.
Considera le seguenti insidie quando estendi i Container DL del framework SageMaker AI:
-
Non disinstallare o modificare in modo esplicito la versione dei pacchetti TensorFlow nei container SageMaker AI. In questo modo i pacchetti TensorFlow AWS ottimizzati vengono sovrascritti da pacchetti TensorFlow open source, il che potrebbe comportare un peggioramento delle prestazioni.
-
Fai attenzione ai pacchetti che hanno una particolare versione o variante di TensorFlow come dipendenza. Questi pacchetti potrebbero disinstallare implicitamente il TensorFlow AWS ottimizzato e installare pacchetti TensorFlow open source.
Ad esempio, esiste un problema noto per cui le librerie tensorflow/modelstensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu. Nei Dockerfile, dovresti trovare le righe di codice per reinstallare il binario TensorFlow gestito AWS (specificato nella variabile di ambiente TF_URL) e altre dipendenze in ordine. La sezione di reinstallazione sarà simile all'esempio seguente:
# tf-models does not respect existing installations of TensorFlow # and always installs open source TensorFlow RUN pip3 install --no-cache-dir -U \ tf-models-official==x.y.zRUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z\ tensorflow-datasets==x.y.z
Crea e invia a ECR
Per creare e inviare il tuo container Docker ad Amazon ECR, segui le istruzioni nei seguenti link:
Esegui utilizzando lo strumento di valutazione SageMaker Python SDK
Utilizza lo strumento di stima del framework TensorFlow di SageMaker AI come al solito. Devi specificare image_uri per utilizzare il nuovo container ospitato in Amazon ECR.
import sagemaker, boto3 from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig account_id = boto3.client('sts').get_caller_identity().get('Account') ecr_repository ='tf-custom-container-test'tag =':latest'region = boto3.session.Session().region_name uri_suffix = 'amazonaws.com' byoc_image_uri = '{}.dkr.ecr.{}.{}/{}'.format( account_id, region, uri_suffix, ecr_repository + tag ) byoc_image_uri # This should return something like # 111122223333.dkr.ecr.us-east-2.amazonaws.com/tf-custom-container-test:latest estimator = TensorFlow( image_uri=image_uri, role=get_execution_role(), base_job_name='tf-custom-container-test-job', instance_count=1, instance_type='ml.p3.8xlarge' compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) # Start training estimator.fit()
Abilitare il Compilatore SageMaker per l’addestramento utilizzando l’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" }
Per trovare un elenco completo degli URI delle immagini dei container di deep learning su cui è implementato il compilatore Addestramento SageMaker, consulta Framework supportati.