Verwendung von topologieorientierter Planung in Amazon SageMaker HyperPod - 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.

Verwendung von topologieorientierter Planung in Amazon SageMaker HyperPod

Die Effizienz der Datenübertragung ist ein entscheidender Faktor bei Workloads im Bereich Hochleistungsrechnen (HPC) und maschinelles Lernen. Wendet bei Verwendung UltraServers mit Amazon SageMaker HyperPod SageMaker HyperPod automatisch Topologie-Labels auf Ihre Ressourcen an. Die topologieorientierte Planung hilft bei der Zuweisung von Ressourcen, um den Datenübertragungsaufwand zu minimieren, indem sowohl die Instance-Topologie (wie Ressourcen innerhalb einer Instance verbunden sind) als auch die Netzwerktopologie (wie Instances miteinander verbunden sind) berücksichtigt werden. Weitere Informationen zur Instance-Topologie finden Sie unter EC2 Amazon-Instance-Topologie.

Die topologieorientierte Planung funktioniert mit beiden Clustern auf Slurm und Amazon EKS. Allgemeine Informationen darüber, wie Topologie mit Slurm funktioniert, finden Sie im Topologie-Leitfaden in der Slurm-Dokumentation.

Bei Amazon stammen SageMaker HyperPod die Kosten für die Datenübertragung in der Regel aus drei Hauptquellen:

  • GPU-to-GPU Datenübertragung: Moderne Technologien wie NVLink Switches ermöglichen NVLink Datenübertragungen mit hohem Durchsatz, GPUs ohne dass andere Rechenressourcen benötigt werden. Dies ist äußerst effizient, aber normalerweise auf eine einzelne Instanz beschränkt.

  • GPU-to-CPU Datenübertragung: NUMA-Systeme (Non-Uniform Memory Access) verfügen über mehrere Systembusse auf einer einzigen Hauptplatine. In einer typischen EC2 Instance-Architektur wie p5.48xlarge gibt es zwei verschiedene Systembusse mit jeweils einer CPU und vier. GPUs Für eine optimale Leistung to/from GPUs sollten Prozesse, die Daten laden oder lesen, auf einer CPU ausgeführt werden, die mit demselben Systembus wie die GPU verbunden ist.

  • Netzwerkkommunikation zwischen Instanzen: Instanzen übertragen Daten über eine Kette von Netzwerk-Switches. Der kürzeste Pfad entspricht in der Regel der niedrigsten Latenz.

UltraServer Architektur

SageMaker HyperPod unterstützt UltraServer Architektur mit p6e-gb200.36xlarge-Instanzen. An UltraServer enthält bis zu 18 p6e-gb200.36xlarge-Instances, mit 4 auf jeder Instanz. GPUs Alle Knoten sind GPUs über NVLink Switches miteinander verbunden, sodass Daten zwischen zwei beliebigen Knoten übertragen werden können, ohne Netzwerkschnittstellen zu verwenden. GPUs

Diese Architektur bietet eine deutliche Leistungssteigerung im Vergleich zu einzelnen Instanzen. Um diese Architektur effektiv nutzen zu können, sollten Jobs von einem einzigen Computer aus an Rechenknoten übermittelt werden UltraServer.

Bezeichnung der EKS-Topologie

Beschriftet Ihre Knoten entsprechend der EC2 Instanztopologie HyperPod automatisch mit den folgenden Bezeichnungen:

  • topology.kubernetes.io/region — die Region, in der sich der Knoten befindet. AWS-Region

  • topology.kubernetes.io/zone — die Availability Zone, in der sich der Knoten befindet.

  • topology.k8s.aws/ network-node-layer — beschreibt den Netzwerkknotensatz einer Instanz. NetworkNodes In jedem Netzwerkknotensatz sind die Netzwerkknoten in einer hierarchischen Reihenfolge von oben nach unten aufgeführt. Der Netzwerkknoten, der mit der Instanz verbunden ist, ist der letzte Netzwerkknoten in der Liste. Es gibt bis zu vier Netzwerkknotenschichten, und jeder Knoten ist mit einer Bezeichnung gekennzeichnet. Verfügbare Ebenen sindtopology.k8s.aws/network-node-layer-1,topology.k8s.aws/network-node-layer-2,topology.k8s.aws/network-node-layer-3.

  • topology.k8s.aws/ultraserver-id — Ein Bezeichner, der verwendet wird, um alle Instanzen zu kennzeichnen, die zu derselben Domäne in einem Ultraserver gehören. NVLink Weitere Informationen UltraServers zur Verwendung UltraServers In Amazon verwenden SageMaker HyperPod von SageMaker HyperPod with finden Sie unter.

Mithilfe dieser Beschriftungen können Sie die topologieorientierte Planung bei der HyperPod Task-Governance nutzen, um Topologiebezeichnungen und Anmerkungen anzubringen, um die Trainingseffizienz Ihrer Workloads zu optimieren. Weitere Informationen finden Sie unter Verwendung von topologieorientierter Planung in der Amazon Task Governance SageMaker HyperPod .

Slurm-Plug-ins für Netzwerktopologie

Slurm bietet integrierte Plugins zur Erkennung der Netzwerktopologie. UltraServer architecture in SageMaker HyperPod unterstützt das Block-Plugin.

Das topology/block Plugin verwenden

NVIDIA hat ein topology/block Plugin entwickelt, das eine hierarchische Planung für Knotenblöcke mit den folgenden Merkmalen ermöglicht:

  • Ein Block ist ein aufeinanderfolgender Bereich von Knoten

  • Blöcke können sich nicht überlappen

  • Alle Knoten in einem Block werden einem Job zugewiesen, bevor der nächste Block verwendet wird

  • Die Planungsblockgröße ist die kleinste konfigurierte Blockgröße

  • Jede höhere Blockebenengröße ist eine Zweierpotenz als die vorherige

Dieses Plugin weist Knoten auf der Grundlage der definierten Netzwerktopologie zu.

Konfiguration

Um die topologieorientierte Planung mit dem Plugin zu konfigurieren, topology/block

  • SageMaker HyperPod konfiguriert das Plugin automatisch. topology/block Wenn Sie das Plugin konfigurieren möchten, geben Sie in der Datei topology.conf in Ihrem Slurm-Konfigurationsverzeichnis Folgendes an:

    BlockName=us1 Nodes=ultraserver1-[0-17] BlockName=us2 Nodes=ultraserver2-[0-17] BlockSizes=18
  • Stellen Sie sicher, dass Ihr Paket beinhaltet: slurm.conf

    TopologyPlugin=topology/block

Verwendung

Beim Einreichen von Jobs können Sie die folgenden zusätzlichen Argumente mit den srun Befehlen sbatch und verwenden:

  • --segment=N: Geben Sie die Anzahl der Knoten an, die gruppiert werden sollen. Die Größe des Segments muss kleiner oder gleich der Größe des Planungsblocks sein.

  • --exclusive=topo: Fordert an, dass keine anderen Jobs im selben Block platziert werden. Dies ist nützlich für Benchmarking- und leistungssensitive Anwendungen.

Im Folgenden finden Sie Beispielszenarien, die Sie in Betracht ziehen könnten, wenn Sie über die Zuweisung von Blöcken nachdenken.

Ordnen Sie einem leeren System einen ganzen Block von Knoten zu

sbatch -N18

Ordnen Sie einem leeren System zwei Knotenblöcke zu

sbatch -N36

Ordnen Sie einem Block 18 Knoten zu + 6 Knoten einem anderen Block

sbatch -N24

Ordnen Sie einem Block 12 Knoten und einem anderen Block 12 Knoten zu

sbatch -N24 —segment=12

Mit —exclusive=topo muss der Job in einem Block platziert werden, in dem es keine anderen Jobs gibt

sbatch -N12 —exclusive=topo

Bewährte UltraServer Methoden für die Topologie

Für optimale Leistung mit UltraServer Architektur in SageMaker HyperPod:

  • Stellen Sie die entsprechenden Blockgrößen ein: Konfigurieren Sie BlockSizes=18 (oder 17, wenn ein Knoten frei ist), sodass sie der UltraServer Architektur entsprechen.

  • Verwenden Sie Segmente für eine bessere Verfügbarkeit: Verwenden Sie die sbatch Befehle --segment=16--segment=8, oder --segment=9 mit srun und, um die Flexibilität bei der Auftragsplanung zu verbessern.

  • Berücksichtigen Sie die Auftragsgröße und die Segmentgröße:

    • FallsBlockSizes=18, Jobs mit bis zu 18 Instanzen werden immer auf einer einzigen Instanz ausgeführt UltraServer.

    • FallsBlockSizes=16, werden Jobs mit weniger als 16 Instanzen immer auf einer einzigen Instanz ausgeführt UltraServer, während Jobs mit 18 Instanzen auf einer oder zwei Instanzen ausgeführt werden können UltraServers.

Wenn Sie über Segmentierung nachdenken, sollten Sie Folgendes berücksichtigen

  • Mit --segment=1 kann jede Instanz auf einer separaten UltraServer ausgeführt werden.

  • Mit -N 18 --segment 9 werden 9 Knoten auf einem platziert UltraServer, und weitere 9 Knoten können auf demselben oder einem anderen platziert werden UltraServer.

  • Mit -N 24 --segment 8 kann der Job auf 2 oder 3 ausgeführt werden UltraServers, wobei jeweils 8 Knoten zusammen auf demselben Server platziert werden.

Einschränkungen bei der SageMaker HyperPod topologieorientierten Planung

Das topology/block Plugin hat Einschränkungen bei heterogenen Clustern (Clustern mit unterschiedlichen Instanztypen):

  • Nur Knoten, die in Blöcken aufgeführt sind, können von Slurm geplant werden

  • Jeder Block muss mindestens Knoten haben BlockSizes[0]

Bei heterogenen Clustern sollten Sie die folgenden Alternativen in Betracht ziehen:

  • Verwenden Sie das Block-Plug-In nicht mit heterogenen Clustern. Isolieren Sie stattdessen UltraServer Knoten in einer anderen Partition.

  • Erstellen Sie einen separaten Cluster UltraServers nur in derselben VPC und verwenden Sie das Multicluster-Setup von Slurm.