TensorFlow Trainingsjobs mit dem SageMaker Training Compiler ausführen - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

TensorFlow Trainingsjobs mit dem SageMaker Training Compiler ausführen

Sie können jede der SageMaker KI-Schnittstellen verwenden, um einen Trainingsjob mit SageMaker Training Compiler auszuführen: Amazon SageMaker Studio Classic, Amazon SageMaker Notebook-Instances und AWS Command Line Interface. AWS SDK for Python (Boto3)

Verwenden des SageMaker Python-SDK

Um den SageMaker Training Compiler zu aktivieren, fügen Sie den compiler_config Parameter dem SageMaker KI TensorFlow - oder Hugging Face Face-Schätzer hinzu. Importieren Sie die TrainingCompilerConfig-Klasse und übergeben Sie eine Instance davon an den compiler_config-Parameter. Die folgenden Codebeispiele zeigen die Struktur der SageMaker AI-Estimator-Klassen bei aktiviertem SageMaker Training Compiler.

Tipp

Um mit den vorgefertigten Modellen der Bibliotheken TensorFlow und Transformers zu beginnen, versuchen Sie, die in der Referenztabelle unter angegebenen Batchgrößen zu verwenden. Getestete Modelle

Anmerkung

SageMaker Training Compiler for TensorFlow ist über die SageMaker AI TensorFlow- und Hugging Face Face-Framework-Schätzer verfügbar.

Weitere Informationen, die zu Ihrem Anwendungsfall passen, finden Sie unter einer der folgenden Optionen.

TensorFlow
from sagemaker.tensorflow import TensorFlow, 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 the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_estimator=TensorFlow( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', framework_version='2.9.1', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_estimator.fit()

Informationen zum Erstellen Ihres Trainingsskripts finden Sie auf den folgenden Seiten.

Hugging Face Estimator with TensorFlow
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 the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()

Informationen zum Erstellen Ihres Trainingsskripts finden Sie auf den folgenden Seiten.

Hugging Face Estimator with TensorFlow
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 } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()
Tipp

Informationen zum Erstellen Ihres Trainingsskripts finden Sie auf den folgenden Seiten.

Die folgende Liste enthält die Mindestanzahl von Parametern, die für die Ausführung eines SageMaker Trainingsjobs mit dem Compiler erforderlich sind.

Anmerkung

Wenn Sie den SageMaker AI Hugging Face Estimator verwenden, müssen Sie die compiler_config Parameter,, und angeben transformers_version tensorflow_versionhyperparameters, um den Training Compiler zu aktivieren SageMaker . Sie können image_uri nicht verwenden, um die unter Unterstützte Frameworks aufgelisteten integrierten Deep-Learning-Container für den Trainingscompiler manuell anzugeben.

  • entry_point (str) – Erforderlich. Geben Sie den Dateinamen Ihres Trainingsskripts an.

  • instance_count (int) – Erforderlich. Geben Sie die Anzahl der Instances an.

  • instance_type (str) – Erforderlich. Geben Sie den Instance-Typ an.

  • transformers_version(str) — Nur erforderlich, wenn der SageMaker AI Hugging Face Estimator verwendet wird. Geben Sie die Hugging Face Transformers-Bibliotheksversion an, die vom SageMaker Training Compiler unterstützt wird. Die verfügbaren Versionen finden Sie unter Unterstützte Frameworks.

  • framework_version oder tensorflow_version (str) – Erforderlich. Geben Sie die vom Training TensorFlow Compiler unterstützte SageMaker Version an. Die verfügbaren Versionen finden Sie unter Unterstützte Frameworks.

    Anmerkung

    Wenn Sie den SageMaker TensorFlow AI-Estimator verwenden, müssen Sie Folgendes angeben. framework_version

    Wenn Sie den SageMaker AI Hugging Face Estimator verwenden, müssen Sie sowohl als auch angeben. transformers_version tensorflow_version

  • hyperparameters (dict) – Optional. Geben Sie Hyperparameter für den Trainingsjob an, z. B. n_gpusbatch_size, und learning_rate. Wenn Sie SageMaker Training Compiler aktivieren, probieren Sie größere Batchgrößen aus und passen Sie die Lernrate entsprechend an. Fallstudien zur Verwendung des Compilers und zur Anpassung der Batchgrößen zur Verbesserung der Trainingsgeschwindigkeit finden Sie unter Getestete Modelle und SageMaker Beispiel für Notizbücher und Blogs zum Training Compiler.

  • compiler_config(TrainingCompilerConfig Objekt) — Erforderlich. Fügen Sie diesen Parameter hinzu, um den SageMaker Training Compiler zu aktivieren. Nachfolgend sind die Parameter für die Klasse TrainingCompilerConfig aufgeführt.

    • enabled (bool) – Optional. Geben Sie True oder anFalse, um den SageMaker Training Compiler ein- oder auszuschalten. Der Standardwert ist True.

    • debug (bool) – Optional. Um detailliertere Trainingsprotokolle von Ihren Compiler-beschleunigten Trainingsaufträgen zu erhalten, ändern Sie es zu True. Die zusätzliche Protokollierung kann jedoch den Aufwand erhöhen und den kompilierten Trainingsjob verlangsamen. Der Standardwert ist False.

Warnung

Wenn Sie den SageMaker Debugger aktivieren, kann dies die Leistung des SageMaker Training Compilers beeinträchtigen. Es wird empfohlen, den Debugger zu deaktivieren, wenn SageMaker Training Compiler ausgeführt wird, um sicherzustellen, dass die Leistung nicht beeinträchtigt wird. Weitere Informationen finden Sie unter Überlegungen. Um die Debugger-Funktionen auszuschalten, fügen Sie dem Schätzer die folgenden beiden Argumente hinzu:

disable_profiler=True, debugger_hook_config=False

Wenn der Trainingsjob mit dem Compiler erfolgreich gestartet wurde, erhalten Sie während der Job-Initialisierungsphase die folgenden Protokolle:

  • Mit TrainingCompilerConfig(debug=False)

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

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

Verwenden des SageMaker AI Python SDK und Erweiterung von SageMaker AI Framework Deep Learning Containers

AWS Deep Learning Containers (DLC) zur TensorFlow Verwendung sind angepasste Versionen TensorFlow davon, die zusätzlich zum TensorFlow Open-Source-Framework Änderungen enthalten. Die Deep Learning Containers des SageMaker KI-Frameworks sind für die zugrunde liegende AWS Infrastruktur und Amazon SageMaker AI optimiert. Mit dem Vorteil der Integration von bietet die DLCs SageMaker Training Compiler-Integration weitere Leistungsverbesserungen gegenüber der nativen TensorFlow Version. Darüber hinaus können Sie einen benutzerdefinierten Trainingscontainer erstellen, indem Sie das DLC-Image erweitern.

Anmerkung

Diese Docker-Anpassungsfunktion ist derzeit nur für verfügbar. TensorFlow

Verwenden Sie die folgenden Anweisungen, um die SageMaker KI TensorFlow DLCs für Ihren Anwendungsfall zu erweitern und anzupassen.

Erstellen einer Docker-Datei

Verwenden Sie die folgende Dockerfile-Vorlage, um den AI-DLC zu erweitern. SageMaker TensorFlow Sie müssen das SageMaker TensorFlow AI-DLC-Image als Basisimage Ihres Docker-Containers verwenden. Das SageMaker TensorFlow AI-DLC-Image finden Sie unter Unterstützte URIs Frameworks.

# 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 ...

Weitere Informationen finden Sie unter Schritt 2: Dockerfile- und Python-Trainingsskripts erstellen und hochladen.

Beachten Sie bei der Erweiterung von SageMaker AI Framework die folgenden Fallstricke: DLCs

  • Deinstallieren oder ändern Sie die Version von TensorFlow Paketen in SageMaker AI-Containern nicht explizit. Dadurch werden die AWS optimierten TensorFlow Pakete durch TensorFlow Open-Source-Pakete überschrieben, was zu Leistungseinbußen führen kann.

  • Achten Sie auf Pakete, die eine bestimmte TensorFlow Version oder Variante als Abhängigkeit haben. Diese Pakete könnten implizit die AWS optimierten Pakete deinstallieren TensorFlow und TensorFlow Open-Source-Pakete installieren.

Es gibt beispielsweise ein bekanntes Problem, dass die Bibliotheken tensorflow/models und tensorflow/text immer versuchen, Open Source neu zu installieren. TensorFlow Wenn Sie diese Bibliotheken installieren müssen, um eine bestimmte Version für Ihren Anwendungsfall auszuwählen, empfehlen wir Ihnen, sich die AI DLC Dockerfiles für Version 2.9 oder höher anzusehen. SageMaker TensorFlow Die Pfade zu den Dockerfiles haben normalerweise das folgende Format: tensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu. In den Dockerfiles sollten Sie die Codezeilen für die Neuinstallation der AWS verwalteten TensorFlow Binärdatei (in der TF_URL Umgebungsvariablen angegeben) und anderer Abhängigkeiten der Reihe nach finden. Der Abschnitt für die Neuinstallation sollte wie das folgende Beispiel aussehen:

# 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.z RUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z \ tensorflow-datasets==x.y.z

Erstellen und auf ECR übertragen

Folgen Sie den Anweisungen unter den folgenden Links, um Ihren Docker-Container zu erstellen und auf Amazon ECR zu übertragen:

Mit dem SageMaker Python SDK Estimator ausführen

Verwenden Sie den SageMaker AI TensorFlow Framework Estimator wie gewohnt. Sie müssen image_uri angeben, dass Sie den neuen Container verwenden möchten, den Sie in Amazon ECR gehostet haben.

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()

Aktivieren Sie den SageMaker Training Compiler mithilfe des SageMaker AI-API-Vorgangs CreateTrainingJob

SageMaker Die Konfigurationsoptionen des Training Compilers müssen im HyperParameters Feld AlgorithmSpecification und in der Anforderungssyntax für den CreateTrainingJobAPI-Vorgang angegeben werden.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false" }

Eine vollständige Liste der Deep-Learning-Container-Images URIs , für die SageMaker Training Compiler implementiert wurde, finden Sie unter. Unterstützte Frameworks