parallel Jobs mit mehreren Knoten - AWS Batch

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.

parallel Jobs mit mehreren Knoten

Sie können parallel Jobs mit mehreren Knoten verwenden, um einzelne Jobs auszuführen, die sich über mehrere Amazon EC2 EC2-Instances erstrecken. Mit parallel Aufträgen mit AWS Batch mehreren Knoten können Sie umfangreiche Hochleistungsrechnungsanwendungen und das Training verteilter GPU-Modelle ausführen, ohne Amazon EC2 EC2-Ressourcen direkt starten, konfigurieren und verwalten zu müssen. Ein parallel Job mit AWS Batch mehreren Knoten ist mit jedem Framework kompatibel, das IP-basierte Internode-Kommunikation unterstützt. Beispiele hierfür sind Apache MXNet TensorFlow, Caffe2 oder Message Passing Interface (MPI).

Parallele Aufträge mit mehreren Knoten werden als ein einzelner Auftrag übermittelt. Ihre Auftragsdefinition (oder Überschreibungen durch den Auftragsübergabeknoten) legt jedoch die Anzahl der Knoten fest, die für den Auftrag erstellt werden müssen, und welche Knotengruppen erstellt werden müssen. Jeder parallele Auftrag mit mehreren Knoten enthält einen Hauptknoten, der zuerst gestartet wird. Sobald der Hauptknoten aktiv ist, werden die untergeordneten Knoten gestartet. Der Job ist nur abgeschlossen, wenn der Hauptknoten beendet wird. Alle untergeordneten Knoten werden dann gestoppt. Weitere Informationen finden Sie unter Knotengruppen.

parallel Jobknoten mit mehreren Knoten sind Single-Tenants. Das bedeutet, dass auf jeder Amazon EC2 EC2-Instance nur ein einziger Jobcontainer ausgeführt wird.

Der letzte Auftragsstatus (SUCCEEDED oder FAILED) wird durch den letzten Auftragsstatus des Hauptknotens bestimmt. Um den Status eines parallel Jobs mit mehreren Knoten abzurufen, beschreiben Sie den Job anhand der Job-ID, die beim Absenden des Jobs zurückgegeben wurde. Wenn Sie die Details für untergeordnete Knoten benötigen, beschreiben Sie jeden untergeordneten Knoten einzeln. Sie können Knoten anhand der #N Notation adressieren (beginnend mit 0). Um beispielsweise auf die Details des zweiten Knotens eines Jobs zuzugreifen, beschreiben Sie aws_batch_job_id #1 mithilfe der API-Operation. AWS Batch DescribeJobs Die Informationen started, stoppedAt, statusReason und exit für einen parallelen Auftrag mit mehreren Knoten stammen aus dem Hauptknoten.

Wenn Sie Auftragswiederholungen angeben, führt ein Ausfall des Hauptknotens zu einem weiteren Versuch. Ausfälle von untergeordneten Knoten führen nicht zu weiteren Versuchen. Jeder neue Versuch eines parallelen Auftrags mit mehreren Knoten aktualisiert den entsprechenden Versuch seiner zugehörigen untergeordneten Knoten.

Um parallel Jobs mit mehreren Knoten ausführen zu können AWS Batch, muss Ihr Anwendungscode die Frameworks und Bibliotheken enthalten, die für die verteilte Kommunikation erforderlich sind.

Umgebungsvariablen

Zur Laufzeit werden für jeden Knoten die Standardumgebungsvariablen konfiguriert, die alle AWS Batch Jobs erhalten. Darüber hinaus sind die Knoten mit den folgenden Umgebungsvariablen konfiguriert, die für parallel Jobs mit mehreren Knoten spezifisch sind:

AWS_BATCH_JOB_MAIN_NODE_INDEX

Diese Variable ist auf die Indexnummer des Hauptknotens des Auftrags festgelegt. Ihr Anwendungscode kann den mit dem AWS_BATCH_JOB_MAIN_NODE_INDEX AWS_BATCH_JOB_NODE_INDEX auf einem einzelnen Knoten vergleichen, um festzustellen, ob es sich um den Hauptknoten handelt.

AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS

Diese Variable wird nur in untergeordneten Knoten für parallel Jobs mit mehreren Knoten gesetzt. Diese Variable ist auf dem Hauptknoten nicht vorhanden. Diese Variable ist auf die private IPv4-Adresse des Hauptknotens des Auftrags festgelegt. Der Anwendungscode Ihres untergeordneten Knotens kann diese Adresse zur Kommunikation mit dem Hauptknoten verwenden.

AWS_BATCH_JOB_NODE_INDEX

Diese Variable ist auf die Indexnummer des Knotens festgelegt. Der Knotenindex beginnt bei 0 und jeder Knoten erhält eine eindeutige Indexnummer. Beispielsweise weist ein paralleler Auftrag mit mehreren Knoten und 10 untergeordneten Aufträgen die Indexwerte 0–9 auf.

AWS_BATCH_JOB_NUM_NODES

Diese Variable ist auf die Anzahl der Knoten festgelegt, die Sie für Ihren parallelen Auftrag mit mehreren Knoten angefordert haben.

Knotengruppen

Eine Knotengruppe ist eine identische Gruppe von Job-Knoten, die alle dieselben Container-Eigenschaften haben. Sie können AWS Batch damit bis zu fünf verschiedene Knotengruppen für jeden Job angeben.

Jede Gruppe kann ihre eigenen Container-Images, Befehle, Umgebungsvariablen und so weiter besitzen. Sie können beispielsweise einen Job einreichen, für den eine einzelne c5.xlarge Instanz für den Hauptknoten und fünf untergeordnete c5.xlarge Instanzknoten erforderlich sind. Jede dieser unterschiedlichen Knotengruppen kann unterschiedliche Container-Images oder Befehle angeben, die für jeden Job ausgeführt werden sollen.

Alternativ können alle Knoten in Ihrem Job eine einzelne Knotengruppe verwenden. Darüber hinaus kann Ihr Anwendungscode zwischen Knotenrollen wie dem Hauptknoten und dem untergeordneten Knoten unterscheiden. Dazu wird die AWS_BATCH_JOB_MAIN_NODE_INDEX Umgebungsvariable mit ihrem eigenen Wert für verglichenAWS_BATCH_JOB_NODE_INDEX. Sie können bis zu 1.000 Knoten in einem einzigen Job haben. Dies ist das Standardlimit für Instances in einem Amazon ECS-Cluster. Sie können eine Erhöhung dieses Limits beantragen.

Anmerkung

Derzeit müssen alle Knotengruppen in einem parallelen Auftrag mit mehreren Knoten den gleichen Instance-Typ verwenden.

Lebenszyklus des Job

Wenn Sie einen parallel Job mit mehreren Knoten einreichen, erhält der Job den SUBMITTED Status. Anschließend wartet der Job darauf, dass alle Auftragsabhängigkeiten abgeschlossen sind. Der Job wird ebenfalls in den RUNNABLE Status versetzt. Schließlich wird die AWS Batch Instance-Kapazität bereitgestellt, die für die Ausführung Ihres Jobs erforderlich ist, und diese Instances werden gestartet.

Jeder parallele Auftrag mit mehreren Knoten enthält einen Hauptknoten. Der Hauptknoten ist eine einzelne Unteraufgabe, die das Ergebnis des eingereichten Auftrags mit mehreren Knoten AWS Batch überwacht und bestimmt. Der Hauptknoten wird zum ersten Mal gestartet und wechselt in den STARTING-Status. Der im attemptDurationSeconds Parameter angegebene Timeout-Wert gilt für den gesamten Job und nicht für die Knoten.

Wenn der Hauptknoten den RUNNING Status erreicht, nachdem der Container des Knotens ausgeführt wurde, werden die untergeordneten Knoten gestartet und nehmen ebenfalls diesen STARTING Status an. Die untergeordneten Knoten werden in zufälliger Reihenfolge angezeigt. Es gibt keine Garantien hinsichtlich des Zeitpunkts oder der Reihenfolge, in der die untergeordneten Knoten starten. Um sicherzustellen, dass sich alle Knoten der Jobs im RUNNING Status befinden, nachdem der Container des Knotens ausgeführt wurde, kann Ihr Anwendungscode die AWS Batch API abfragen, um Informationen über den Hauptknoten und den untergeordneten Knoten abzurufen. Alternativ kann der Anwendungscode warten, bis alle Knoten online sind, bevor eine verteilte Verarbeitungsaufgabe gestartet wird. Die private IP-Adresse des Hauptknotens ist als AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS-Umgebungsvariable in jedem untergeordneten Knoten verfügbar. Ihr Anwendungscode kann diese Informationen verwenden, um Daten und die Kommunikation zwischen den einzelnen Aufgaben zu koordinieren.

Wenn einzelne Knoten beendet werden, wechseln sie je nach ihrem Beendigungscode zu SUCCEEDED oder FAILED. Wenn der Hauptknoten beendet wird, gilt der Auftrag als abgeschlossen und alle seine untergeordneten Knoten werden beendet. Wenn ein untergeordneter Knoten ausfällt, werden AWS Batch keine Aktionen für die anderen Knoten im Job ausgeführt. Wenn Sie nicht möchten, dass Ihr Job mit einer reduzierten Anzahl von Knoten fortgeführt wird, müssen Sie dies in Ihrem Anwendungscode berücksichtigen. Dadurch wird der Job beendet oder abgebrochen.

Überlegungen zur Rechenumgebung

Es gibt mehrere Dinge, die Sie berücksichtigen sollten, wenn Sie die Datenverarbeitungsumgebungen so konfigurieren, dass parallele Aufträge mit mehreren Knoten mit AWS Batch ausgeführt werden.

  • parallel Jobs mit mehreren Knoten werden in UNMANAGED Computerumgebungen nicht unterstützt.

  • Wenn Sie parallel Jobs mit mehreren Knoten an eine Rechenumgebung senden möchten, erstellen Sie eine Cluster-Platzierungsgruppe in einer einzigen Availability Zone und ordnen Sie sie Ihren Rechenressourcen zu. Dadurch bleiben Ihre parallel Jobs mit mehreren Knoten in einer logischen Gruppierung von Instanzen mit hohem Netzwerkflusspotenzial nahe beieinander. Weitere Informationen finden Sie unter Platzierungsgruppen im Amazon-EC2-Benutzerhandbuch.

  • parallel Jobs mit mehreren Knoten werden in Computerumgebungen, die Spot-Instances verwenden, nicht unterstützt.

  • AWS Batch parallel Jobs mit mehreren Knoten verwenden den Amazon awsvpc ECS-Netzwerkmodus, der Ihren parallel Job-Containern mit mehreren Knoten dieselben Netzwerkeigenschaften wie Amazon EC2 EC2-Instances verleiht. Jeder Container eines parallelen Auftrags mit mehreren Knoten erhält seine eigene Elastic Network-Schnittstelle, eine primäre private IP-Adresse und einen internen DNS-Hostnamen. Die Netzwerkschnittstelle wird im gleichen VPC-Subnetz erstellt wie ihre Host-Datenverarbeitungsressource. Alle Sicherheitsgruppen, die auf Ihre Datenverarbeitungsressourcen angewendet werden, werden auch darauf angewendet. Weitere Informationen finden Sie unter Task Networking with the awsvpc Network Mode im Amazon Elastic Container Service Developer Guide.

  • Ihrer Datenverarbeitungsumgebung sind möglicherweise nicht mehr als fünf Sicherheitsgruppen zugeordnet.

  • Der awsvpc Netzwerkmodus bietet keine elastischen Netzwerkschnittstellen für parallel Jobs mit mehreren Knoten und öffentlichen IP-Adressen. Um auf das Internet zuzugreifen, müssen Ihre Datenverarbeitungsressourcen in einem privaten Subnetz gestartet werden, das für die Verwendung eines NAT-Gateways konfiguriert ist. Weitere Informationen finden Sie unter NAT-Gateways im Amazon VPC-Benutzerhandbuch. Für die Kommunikation zwischen den Knoten muss die private IP-Adresse oder der DNS-Hostnamen für den Knoten verwendet werden. parallel Jobs mit mehreren Knoten, die auf Rechenressourcen in öffentlichen Subnetzen ausgeführt werden, haben keinen ausgehenden Netzwerkzugriff. Weitere Informationen zum Erstellen einer VPC mit privaten Subnetzen und einem NAT-Gateway finden Sie unter Erstellen einer Virtual Private Cloud .

  • Die Elastic Network-Schnittstellen, die erstellt und an Ihre Rechenressourcen angehängt werden, können nicht manuell getrennt oder von Ihrem Konto geändert werden. Dadurch soll verhindert werden, dass versehentlich eine elastic network interface gelöscht wird, die mit einem laufenden Job verknüpft ist. Um die Elastic Network-Schnittstellen für eine Aufgabe freizugeben, beenden Sie den Auftrag.

  • Ihre Datenverarbeitungsumgebung muss genügend maximale vCPUs zur Unterstützung Ihres parallelen Auftrags mit mehreren Knoten haben.

  • Ihr Amazon EC2 EC2-Instance-Kontingent beinhaltet die Anzahl der Instances, die für die Ausführung Ihres Jobs erforderlich sind. Nehmen wir zum Beispiel an, dass für Ihren Job 30 Instances erforderlich sind, Ihr Konto jedoch nur 20 Instances in einer Region ausführen kann. Dann bleibt Ihr Job im RUNNABLE Status hängen.

  • Wenn Sie in einem parallel Job mit mehreren Knoten einen Instanztyp für eine Knotengruppe angeben, muss Ihre Rechenumgebung diesen Instanztyp starten.