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.
Ausführen von TensorFlow Trainingsaufträgen mit dem SageMaker Training Compiler
Sie können jede der SageMaker Schnittstellen verwenden, um einen Trainingsauftrag mit dem SageMaker Training Compiler auszuführen: Amazon SageMaker Studio Classic, Amazon- SageMaker Notebook AWS SDK for Python (Boto3)-Instances und AWS Command Line Interface.
Themen
Verwenden des SageMaker Python SDK
Um den SageMaker Training Compiler zu aktivieren, fügen Sie den -compiler_config
Parameter zum SageMaker TensorFlow oder Hugging Face Estimator hinzu. Importieren Sie die TrainingCompilerConfig
-Klasse und übergeben Sie eine Instanz davon an den compiler_config
-Parameter. Die folgenden Codebeispiele zeigen die Struktur der SageMaker Schätzerklassen mit aktiviertem SageMaker Training Compiler.
Tipp
Um mit vorgefertigten Modellen zu beginnen, die von den - TensorFlow und -Transformer-Bibliotheken bereitgestellt werden, versuchen Sie, die in der Referenztabelle unter angegebenen Batchgrößen zu verwendenGetestete Modelle.
Anmerkung
SageMaker Der Training Compiler für TensorFlow ist über die SageMaker TensorFlow
Weitere Informationen, die zu Ihrem Anwendungsfall passen, finden Sie unter einer der folgenden Optionen.
Die folgende Liste enthält den minimalen Satz von Parametern, die zum Ausführen eines SageMaker Trainingsauftrags mit dem Compiler erforderlich sind.
Anmerkung
Wenn Sie den SageMaker Hugging Face Estimator verwenden, müssen Sie die compiler_config
Parameter transformers_version
, tensorflow_version
, und angebenhyperparameters
, um den SageMaker Training Compiler zu aktivieren. 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 Instanzen an. -
instance_type
(str) — Erforderlich. Geben Sie den Instanztyp an. -
transformers_version
(str) – Nur erforderlich, wenn der SageMaker Hugging Face-Schätzer verwendet wird. Geben Sie die vom SageMaker Training Compiler unterstützte Hugging Face Transformers-Bibliotheksversion an. Die verfügbaren Versionen finden Sie unter Unterstützte Frameworks. -
framework_version
odertensorflow_version
(str) — Erforderlich. Geben Sie die TensorFlow Version an, die vom SageMaker Training Compiler unterstützt wird. Informationen zu verfügbaren Versionen finden Sie unter Unterstützte Frameworks.Anmerkung
Wenn Sie den SageMaker TensorFlow Schätzer verwenden, müssen Sie angeben
framework_version
.Wenn Sie den SageMaker 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_gpus
batch_size
, undlearning_rate
. Wenn Sie den SageMaker Training Compiler aktivieren, versuchen Sie größere Batchgrößen auszuprobieren 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 ein, um den SageMaker Training Compiler zu aktivieren. Nachfolgend sind die Parameter für die KlasseTrainingCompilerConfig
aufgeführt.-
enabled
(bool) — Optional. Geben SieTrue
oder anFalse
, um den SageMaker Training Compiler ein- oder auszuschalten. Der Standardwert istTrue
. -
debug
(bool) — Optional. Um detailliertere Trainingsprotokolle von Ihren Compiler-beschleunigten Trainingsaufträgen zu erhalten, ändern Sie es zuTrue
. Die zusätzliche Protokollierung kann jedoch den Aufwand erhöhen und den kompilierten Trainingsjob verlangsamen. Der Standardwert istFalse
.
-
Warnung
Wenn Sie den SageMaker Debugger aktivieren, kann sich dies auf die Leistung des SageMaker Training Compilers auswirken. Wir empfehlen Ihnen, den Debugger zu deaktivieren, wenn Sie den SageMaker Training Compiler ausführen, um sicherzustellen, dass es keine Auswirkungen auf die Leistung gibt. 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 Python SDK und Erweitern von SageMaker Framework Deep Learning Containers
AWS Deep Learning Containers (DLC) zur TensorFlow Verwendung angepasster Versionen von TensorFlow , die zusätzlich zum Open-Source- TensorFlow Framework Änderungen enthalten. Die SageMaker Framework Deep Learning Containers
Anmerkung
Diese Docker-Anpassungsfunktion ist derzeit nur für verfügbar TensorFlow.
Verwenden Sie die folgenden Anweisungen, um die SageMaker TensorFlow DLCs für Ihren Anwendungsfall zu erweitern und anzupassen.
Erstellen einer Docker-Datei
Verwenden Sie die folgende Dockerfile-Vorlage, um den SageMaker TensorFlow DLC zu erweitern. Sie müssen das SageMaker TensorFlow DLC-Image als Basis-Image Ihres Docker-Containers verwenden. Informationen zu den SageMaker TensorFlow DLC-Image-URIs finden Sie unter Unterstützte Frameworks.
# SageMaker 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 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.
Berücksichtigen Sie die folgenden Fallstricke bei der Erweiterung von SageMaker Framework-DLCs:
-
Deinstallieren oder ändern Sie die Version von TensorFlow Paketen in SageMaker Containern nicht explizit. Dadurch werden die AWS optimierten TensorFlow Pakete von Open-Source- TensorFlow Paketen ü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 deinstallieren möglicherweise implizit die AWS optimierten TensorFlow und installieren Open-Source- TensorFlow Pakete.
Es gibt beispielsweise ein bekanntes Problem, dass die Bibliotheken tensorflow/modelstensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu
. In den Dockerfiles sollten Sie die Codezeilen finden, um AWS verwaltete TensorFlow Binärdateien (angegeben für die TF_URL
Umgebungsvariable) und andere Abhängigkeiten der Reihe nach neu zu installieren. 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:
Führen Sie mit dem SageMaker Python-SDK-Schätzer aus
Verwenden Sie den SageMaker TensorFlow Framework-Schätzer 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 des SageMaker Training Compilers mithilfe der SageMaker CreateTrainingJob
API-Operation
SageMaker Die Konfigurationsoptionen des Training Compilers müssen über das HyperParameters
Feld AlgorithmSpecification
und in der Anforderungssyntax für die APICreateTrainingJob
-Operation 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-Image-URIs, für die SageMaker Training Compiler implementiert ist, finden Sie unter Unterstützte Frameworks.