Ausführen von PyTorch Trainingsaufträgen mit dem SageMaker Training Compiler - Amazon SageMaker

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

Verwenden des SageMaker Python SDK

SageMaker Der Training Compiler für PyTorch ist über die SageMaker PyTorch HuggingFace Framework-Schätzerklassen und verfügbar. Um den SageMaker Training Compiler zu aktivieren, fügen Sie den compiler_config Parameter zu den SageMaker Schätzern 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 PyTorch oder Transformers bereitgestellt werden, versuchen Sie, die in der Referenztabelle unter angegebenen Batchgrößen zu verwendenGetestete Modelle.

Anmerkung

Die native PyTorch Unterstützung ist im SageMaker Python SDK v2.121.0 und höher verfügbar. Stellen Sie sicher, dass Sie das SageMaker Python-SDK entsprechend aktualisieren.

Anmerkung

Ab PyTorch v1.12.0 PyTorch sind SageMaker Trainings-Compiler-Container für verfügbar. Beachten Sie, dass die SageMaker Training Compiler-Container für nicht mit Hugging Face Transformers vorgefertigt PyTorch sind. Wenn Sie die Bibliothek im Container installieren müssen, stellen Sie sicher, dass Sie die requirements.txt Datei im Quellverzeichnis hinzufügen, wenn Sie einen Trainingsjob einreichen.

Verwenden Sie für PyTorch v1.11.0 und früher die vorherigen Versionen der SageMaker Training Compiler-Container für Hugging Face und PyTorch.

Eine vollständige Liste der Framework-Versionen und der entsprechenden Container-Informationen finden Sie unter Unterstützte Frameworks.

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

PyTorch v1.12.0 and later

Um ein PyTorch Modell zu kompilieren und zu trainieren, konfigurieren Sie einen SageMaker PyTorch Schätzer mit SageMaker Training Compiler, wie im folgenden Codebeispiel gezeigt.

Anmerkung

Diese native PyTorch Unterstützung ist im SageMaker Python SDK v2.120.0 und höher verfügbar. Stellen Sie sicher, dass Sie das SageMaker Python-SDK aktualisieren.

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

Um ein Transformer-Modell mit zu kompilieren und zu trainieren PyTorch, konfigurieren Sie einen SageMaker Hugging Face Estimator mit SageMaker Training Compiler, wie im folgenden Codebeispiel gezeigt.

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

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

end-to-end Beispiele finden Sie in den folgenden Notebooks:

PyTorch v1.12

Für PyTorch v1.12 können Sie verteiltes Training mit dem SageMaker Training Compiler ausführen, indem Sie die angegebene pytorch_xla Option zum distribution Parameter der SageMaker PyTorch Schätzerklasse hinzufügen.

Anmerkung

Diese native PyTorch Unterstützung ist im SageMaker Python SDK v2.121.0 und höher verfügbar. Stellen Sie sicher, dass Sie das SageMaker Python-SDK aktualisieren.

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

Informationen zur Vorbereitung Ihres Trainingsskripts finden Sie unter PyTorch

Transformers v4.21 with PyTorch v1.11

Für PyTorch v1.11 und höher ist der SageMaker Trainings-Compiler für verteiltes Training verfügbar, wobei die pytorch_xla Option für den distribution Parameter angegeben ist.

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

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

Transformers v4.17 with PyTorch v1.10.2 and before

Für die unterstützte Version von PyTorch v1.10.2 und früher benötigt der SageMaker Trainings-Compiler einen alternativen Mechanismus zum Starten eines verteilten Trainingsauftrags. Um verteiltes Training durchzuführen, erfordert SageMaker Training Compiler, dass Sie ein SageMaker verteiltes Trainingsstartskript an das entry_point -Argument übergeben und Ihr Trainingsskript an das hyperparameters -Argument übergeben. Das folgende Codebeispiel zeigt, wie Sie einen SageMaker Hugging Face-Schätzer konfigurieren, der die erforderlichen Änderungen anwendet.

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

Das Startskript sollte wie folgt aussehen. Es umschließt Ihr Trainingsskript und konfiguriert die verteilte Trainingsumgebung in Abhängigkeit von der Größe der Trainingsinstanz Ihrer Wahl.

# 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)
Tipp

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

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, pytorch_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.

    Anmerkung

    Um ein verteiltes Training mit SageMaker Training Compiler und PyTorch v1.10.2 und früher durchzuführen, geben Sie den Dateinamen eines Launcher-Skripts für diesen Parameter an. Das Launcher-Skript sollte so vorbereitet sein, dass es Ihr Trainingsskript umschließt und die verteilte Trainingsumgebung konfiguriert. Weitere Informationen finden Sie in den folgenden Notebook-Beispielen:

  • source_dir (str) — Optional. Fügen Sie dies hinzu, wenn Sie zusätzliche Pakete installieren müssen. Um Pakete zu installieren, müssen Sie eine requirements.txt Datei in diesem Verzeichnis vorbereiten.

  • 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 oder pytorch_version (str) — Erforderlich. Geben Sie die PyTorch 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 Hugging Face Estimator verwenden, müssen Sie sowohl als auch angebentransformers_versionpytorch_version.

  • hyperparameters (dict) — Optional. Geben Sie Hyperparameter für den Trainingsjob an, z. B. n_gpusbatch_size, und learning_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.

    Anmerkung

    Um ein verteiltes Training mit SageMaker Training Compiler und PyTorch v1.10.2 und früher durchzuführen, müssen Sie einen zusätzlichen Parameter hinzufügen, "training_script", um Ihr Trainingsskript anzugeben, wie im vorherigen Codebeispiel gezeigt.

  • compiler_config (TrainingCompilerConfig Objekt) – Erforderlich, um den SageMaker Training Compiler zu aktivieren. Fügen Sie diesen Parameter ein, 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.

  • distribution (dict) — Fakultativ. Um einen verteilten Schulungsauftrag mit SageMaker dem Training Compiler auszuführen, fügen Sie hinzudistribution = { 'pytorchxla' : { 'enabled': True }}.

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 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 CreateTrainingJob API-Operation angegeben werden.

"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 }

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