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
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 sind
topology.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
mitsrun
und, um die Flexibilität bei der Auftragsplanung zu verbessern. -
Berücksichtigen Sie die Auftragsgröße und die Segmentgröße:
Falls
BlockSizes=18
, Jobs mit bis zu 18 Instanzen werden immer auf einer einzigen Instanz ausgeführt UltraServer.Falls
BlockSizes=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.