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.
Konfigurieren Sie einen Trainingsjob mit einem heterogenen Cluster in Amazon AI SageMaker
Dieser Abschnitt enthält Anweisungen zum Ausführen eines Trainingsauftrags mit einem heterogenen Cluster, der aus mehreren Instance-Typen besteht.
Bevor Sie beginnen, beachten Sie Folgendes.
-
Alle Instance-Gruppen verwenden dasselbe Docker-Image und dasselbe Trainingsskript. Daher sollte Ihr Trainingsskript so geändert werden, dass erkannt wird, zu welcher Instance-Gruppe es gehört, und die Ausführung entsprechend aufgeteilt werden.
-
Die Funktion für heterogene Cluster ist nicht mit dem lokalen SageMaker KI-Modus kompatibel.
-
Die CloudWatch Amazon-Log-Streams eines heterogenen Cluster-Trainingsjobs sind nicht nach Instanzgruppen gruppiert. Sie müssen anhand der Protokolle herausfinden, welche Knoten zu welcher Gruppe gehören.
Option 1: Verwenden des SageMaker Python-SDK
Folgen Sie den Anweisungen zur Konfiguration von Instanzgruppen für einen heterogenen Cluster mithilfe des SageMaker Python-SDK.
-
Verwenden Sie die
sagemaker.instance_group.InstanceGroupKlasse, um Instance-Gruppen eines heterogenen Clusters für einen Trainingsauftrages zu konfigurieren. Sie können für jede Instance-Gruppe einen benutzerdefinierten Namen, den Instance-Typ und die Anzahl der Instances für jede Instance-Gruppe angeben. Weitere Informationen finden Sie unter sagemaker.instance_group. InstanceGroupin der AI-Python-SDK-Dokumentation. SageMaker Anmerkung
Weitere Informationen zu verfügbaren Instanztypen und der maximalen Anzahl von Instanzgruppen, die Sie in einem heterogenen Cluster konfigurieren können, finden Sie in der InstanceGroup API-Referenz.
Das folgende Codebeispiel zeigt, wie zwei Instanzgruppen eingerichtet werden, die aus zwei benannten
ml.c5.18xlargeCPU-only Instanzeninstance_group_1und einer benanntenml.p3dn.24xlargeGPU-Instanz besteheninstance_group_2, wie in der folgenden Abbildung dargestellt.
Das obige Diagramm zeigt ein konzeptionelles Beispiel dafür, wie Prozesse vor dem Training, wie z. B. die Datenvorverarbeitung, der CPU-Instance-Gruppe zugewiesen und die vorverarbeiteten Daten an die GPU-Instance-Gruppe gestreamt werden können.
from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge",2) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge",1) -
Richten Sie mithilfe der Instanzgruppenobjekte die Eingabekanäle für das Training ein und weisen Sie den Kanälen mithilfe des
instance_group_namesArguments Instanzgruppen zu. Dasinstance_group_names-Argument akzeptiert eine Liste von Strings mit Instance-Gruppennamen.Das folgende Beispiel zeigt, wie zwei Trainingseingangskanäle eingerichtet und die im Beispiel des vorherigen Schritts erstellten Instance-Gruppen zugewiesen werden. Sie können auch Amazon S3-Bucket-Pfade für die Instanzgruppen angeben, um Daten für Ihre Nutzungszwecke zu verarbeiten.
from sagemaker.train.configs import InputData from sagemaker.core.shapes import Channel, DataSource, S3DataSource training_input_channel_1 = Channel( channel_name='training', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder1', s3_data_distribution_type='FullyReplicated', # Available Options: FullyReplicated | ShardedByS3Key instance_group_names=["instance_group_1"], ) ), input_mode='File', # Available Options: File | Pipe | FastFile ) training_input_channel_2 = Channel( channel_name='dummy-input-channel', data_source=DataSource( s3_data_source=S3DataSource( s3_data_type='S3Prefix', s3_uri='s3://your-training-data-storage/folder2', s3_data_distribution_type='FullyReplicated', instance_group_names=["instance_group_2"], ) ), input_mode='File', )Weitere Informationen zu den Argumenten von
InputData, finden Sie unter den folgenden Links.-
Die sagemaker.train.configs. InputData
Klasse in der Python-SDK-Dokumentation SageMaker -
Die S3DataSource API in der SageMaker AI-API-Referenz
-
-
Konfigurieren Sie ein SageMaker AI-Trainingsobjekt mit dem
instance_groupsArgument, wie im folgenden Codebeispiel gezeigt. Dasinstance_groups-Argument akzeptiert eine Liste vonInstanceGroup-Objekten.Anmerkung
Die Funktion für heterogene Cluster ist über die SageMaker KI PyTorch
und die TensorFlow ModelTrainer Klassen verfügbar. Unterstützte Frameworks sind PyTorch v1.10 oder höher und TensorFlow v2.6 oder höher. Eine vollständige Liste der verfügbaren Framework-Container, Framework-Versionen und Python-Versionen finden Sie unter SageMaker AI Framework-Container im AWS GitHub Deep-Learning-Container-Repository. PyTorch
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="pytorch", region=region, version='x.y.z', # 1.10.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )TensorFlow
from sagemaker.trainimportModelTrainerfrom sagemaker.train.configs import SourceCode from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="tensorflow", region=region, version='x.y.z', # 2.6.0 or later py_version='pyxy', instance_type='ml.p3dn.24xlarge', image_scope="training" ) model_trainer =ModelTrainer( ... source_code=SourceCode(entry_script='my-training-script.py'), training_image=training_image, job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1,instance_group_2] )Anmerkung
Das
instance_typeinstance_countArgumentpaar und dasinstance_groupsArgument der SageMaker ModelTrainer AI-Klasse schließen sich gegenseitig aus. Verwenden Sie für ein homogenes Clusterttraining das Argumentpaarinstance_typeundinstance_count. Verwenden Sieinstance_groupsfür heterogenes Clustertraining.Anmerkung
Eine vollständige Liste der verfügbaren Framework-Container, Framework-Versionen und Python-Versionen finden Sie unter SageMaker AI Framework-Container
im AWS GitHub Deep-Learning-Container-Repository. -
Starten Sie den Trainingsjob mit den Trainingseingabekanälen, die mit den Instanzgruppen konfiguriert wurden.
model_trainer.train( inputs={ 'training':training_input_channel_1, 'dummy-input-channel':training_input_channel_2} )
Option 2: Verwenden der Low-Level-APIs SageMaker
Wenn Sie AWS Command Line Interface oder verwenden AWS SDK für Python (Boto3) und SageMaker Low-Level-APIs verwenden möchten, um eine Anfrage für einen Schulungsauftrag mit einem heterogenen Cluster einzureichen, lesen Sie die folgenden API-Referenzen.