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

Die topologieorientierte Planung in Amazon SageMaker HyperPod Task Governance optimiert die Trainingseffizienz verteilter Machine-Learning-Workloads, indem Pods auf der Grundlage der physischen Netzwerktopologie Ihrer Amazon-Instances platziert werden. EC2 Durch Berücksichtigung der hierarchischen Struktur der AWS Infrastruktur, einschließlich Availability Zones, Netzwerkblöcken und physischen Racks, wird durch die topologieorientierte Planung sichergestellt, dass Pods, die häufig miteinander kommunizieren müssen, in unmittelbarer Nähe geplant werden, um die Netzwerklatenz zu minimieren. Diese intelligente Platzierung ist besonders vorteilhaft für groß angelegte Schulungsaufgaben im Bereich maschinelles Lernen, die intensive pod-to-pod Kommunikation erfordern. Dies führt zu kürzeren Schulungszeiten und einer effizienteren Ressourcennutzung in Ihrem gesamten Cluster.

Anmerkung

Um die topologieorientierte Planung zu verwenden, stellen Sie sicher, dass Ihre Version von HyperPod Task Governance v1.2.2-eksbuild.1 oder höher ist.

Topologieorientiertes Scheduling unterstützt die folgenden Instance-Typen:

  • ml.p3dn.24xlarge

  • ml.p4d.24xlarge

  • ml.p4de.24xlarge

  • ml.p5.48xlarge

  • ml.p5e.48x groß

  • ml.p5en.48x groß

  • ml.p6e-gb200.36x groß

  • ml.trn 1.2 x groß

  • ml.trn 1.32x groß

  • ml.trn1n.32x groß

  • ml.trn 2.48x groß

  • ml.trn2u.48x groß

Die topologieorientierte Planung lässt sich in Ihre bestehenden HyperPod Workflows integrieren und bietet gleichzeitig flexible Topologieeinstellungen sowohl über kubectl-YAML-Dateien als auch über die CLI. HyperPod HyperPod Task Governance konfiguriert Clusterknoten automatisch mit Topologie-Labels und arbeitet mit HyperPod Task-Governance-Richtlinien und Mechanismen zur Ressourcenausleihe zusammen, um sicherzustellen, dass eine topologieorientierte Planung Ihre aktuellen Betriebsprozesse nicht stört. Dank der integrierten Unterstützung sowohl bevorzugter als auch erforderlicher Topologiespezifikationen können Sie die Workload-Platzierung an Ihre spezifischen Leistungsanforderungen anpassen und gleichzeitig die Flexibilität beibehalten, auf die Standardplanung zurückgreifen zu können, wenn die Topologieeinschränkungen nicht erfüllt werden können.

Durch die Nutzung topologieorientierter Labels können Sie ihre Workloads für maschinelles Lernen durch eine intelligente Pod-Platzierung verbessern HyperPod, die die physische Netzwerkinfrastruktur berücksichtigt. HyperPod Die Task-Governance optimiert automatisch die Pod-Planung auf der Grundlage der hierarchischen Rechenzentrumstopologie, was sich direkt in einer geringeren Netzwerklatenz und einer verbesserten Trainingsleistung für verteilte ML-Aufgaben niederschlägt. Dieses Topologiebewusstsein ist besonders für umfangreiche Workloads im Bereich maschinelles Lernen nützlich, da es den Kommunikationsaufwand minimiert, indem verwandte Pods in der Netzwerkhierarchie strategisch näher beieinander angeordnet werden. Das Ergebnis ist eine optimierte Kommunikationsnetzwerklatenz zwischen Pods, eine effizientere Ressourcennutzung und eine bessere Gesamtleistung für rechenintensive AI/ML Anwendungen. All das, ohne dass Sie komplexe Netzwerktopologiekonfigurationen manuell verwalten müssen.

Im Folgenden finden Sie Bezeichnungen für die verfügbaren Topologie-Netzwerkschichten, in denen HyperPod Task Governance Pods einplanen kann:

  • topology.k8s.aws/ -1 network-node-layer

  • network-node-layertopology.k8s.aws/ -2

  • network-node-layertopology.k8s.aws/ -3

Um die topologieorientierte Planung zu verwenden, fügen Sie Ihrer YAML-Datei die folgenden Labels hinzu:

  • kueue.x-k8s.io/ podset-required-topology — gibt an, dass dieser Job über die erforderlichen Pods verfügen muss und dass alle Pods in den Knoten innerhalb derselben Topologieebene geplant werden müssen.

  • kueue.x-k8s.io/ podset-preferred-topology — gibt an, dass dieser Job die Pods haben muss, dass die Planung von Pods innerhalb derselben Topologieebene jedoch bevorzugt, aber nicht erforderlich ist. HyperPod Task Governance versucht, die Pods innerhalb einer Ebene zu planen, bevor es mit der nächsten Topologieebene versucht wird.

Wenn Ressourcen nicht dieselbe Topologiebezeichnung haben, wird der Job unterbrochen. Der Job wird auf der Warteliste stehen. Sobald Kueue feststellt, dass genügend Ressourcen vorhanden sind, wird der Job zugelassen und ausgeführt.

Das folgende Beispiel zeigt, wie Sie die Labels in Ihren YAML-Dateien verwenden können:

apiVersion: batch/v1 kind: Job metadata: name: test-tas-job namespace: hyperpod-ns-team-name labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class: PRIORITY_CLASS-priority spec: parallelism: 10 completions: 10 suspend: true template: metadata: labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue annotations: kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3" or kueue.x-k8s.io/podset-preferred-topology: "topology.k8s.aws/network-node-layer-3" spec: nodeSelector: topology.k8s.aws/network-node-layer-3: TOPOLOGY_LABEL_VALUE containers: - name: dummy-job image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0 args: ["3600s"] resources: requests: cpu: "100" restartPolicy: Never

In der folgenden Tabelle werden die neuen Parameter erläutert, die Sie in der kubectl-YAML-Datei verwenden können.

Parameter Beschreibung
kueue.x-k8s.io/queue-name Der Name der Warteschlange, die zur Ausführung des Jobs verwendet werden soll. Das Format dieses Warteschlangennamens muss sein. hyperpod-ns-team-name-localqueue
kueue.x-k8s.io/priority-class Ermöglicht die Angabe einer Priorität für die Pod-Planung. Diese Angabe ist optional.
Anmerkungen Enthält die Topologie-Anmerkung, die Sie dem Job hinzufügen. Verfügbare Topologien sind kueue.x-k8s.io/ und podset-required-topology kueue.x-k8s.io/. podset-preferred-topology Sie können entweder eine Anmerkung oder NodeSelector verwenden, aber nicht beide gleichzeitig.
NodeSelector Gibt die Netzwerkschicht an, die die Ebene der EC2 Amazon-Instance-Platzierung darstellt. Verwenden Sie entweder dieses Feld oder eine Anmerkung, aber nicht beide gleichzeitig. In Ihrer YAML-Datei können Sie auch den NodeSelector-Parameter verwenden, um die genaue Ebene für Ihre Pods auszuwählen. Verwenden Sie die API-Operation, um den Wert Ihres Labels zu ermitteln. DescribeInstanceTopology

Sie können auch die HyperPod CLI verwenden, um Ihren Job auszuführen und die topologieorientierte Planung zu verwenden. Weitere Informationen zur HyperPod CLI finden Sie unterSageMaker HyperPod CLI-Befehle.

hyp create hyp-pytorch-job \ --version 1.1 \ --job-name sample-pytorch-job \ --image 123456789012.dkr.ecr.us-west-2.amazonaws.com/ptjob:latest \ --pull-policy "Always" \ --tasks-per-node 1 \ --max-retry 1 \ --priority high-priority \ --namespace hyperpod-ns-team-name \ --queue-name hyperpod-ns-team-name-localqueue \ --preferred-topology-label topology.k8s.aws/network-node-layer-1

Im Folgenden finden Sie ein Beispiel für eine Konfigurationsdatei, die Sie verwenden können, um eine PytorchJob mit Topologie-Labels auszuführen. Die Datei ist weitgehend ähnlich, wenn Sie MPI- und Tensorflow-Jobs ausführen möchten. Wenn Sie diese Jobs stattdessen ausführen möchten, denken Sie daran, die Konfigurationsdatei entsprechend zu ändern, z. B. das richtige Bild anstelle von zu verwenden. PyTorchJob Wenn Sie einen ausführen PyTorchJob, können Sie den Master- und Worker-Knoten unterschiedliche Topologien zuweisen. PyTorchJob hat immer einen Master-Knoten, daher empfehlen wir, stattdessen die Topologie zur Unterstützung von Worker-Pods zu verwenden.

apiVersion: kubeflow.org/v1 kind: PyTorchJob metadata: annotations: {} labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue name: tas-test-pytorch-job namespace: hyperpod-ns-team-name spec: pytorchReplicaSpecs: Master: replicas: 1 restartPolicy: OnFailure template: metadata: labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue spec: containers: - command: - python3 - /opt/pytorch-mnist/mnist.py - --epochs=1 image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727 imagePullPolicy: Always name: pytorch Worker: replicas: 10 restartPolicy: OnFailure template: metadata: # annotations: # kueue.x-k8s.io/podset-required-topology: "topology.k8s.aws/network-node-layer-3" labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue spec: containers: - command: - python3 - /opt/pytorch-mnist/mnist.py - --epochs=1 image: docker.io/kubeflowkatib/pytorch-mnist:v1beta1-45c5727 imagePullPolicy: Always name: pytorch resources: limits: cpu: 1 requests: memory: 200Mi cpu: 1 #nodeSelector: # topology.k8s.aws/network-node-layer-3: xxxxxxxxxxx

Verwenden Sie die DescribeInstanceTopologyAPI-Operation, um die Topologien für Ihren Cluster zu sehen. Standardmäßig sind die Topologien in Amazon Studio AWS Management Console und Amazon SageMaker Studio ausgeblendet. Folgen Sie diesen Schritten, um sie in der Benutzeroberfläche zu sehen, die Sie verwenden.

SageMaker Studio

  1. Navigieren Sie in SageMaker Studio zu Ihrem Cluster.

  2. Wählen Sie in der Aufgabenansicht das Optionsmenü in der Spalte Name und dann Spalten verwalten aus.

  3. Wählen Sie Angeforderte Topologie und Topologieeinschränkung aus, um die Spalten hinzuzufügen, in denen die Topologieinformationen in der Liste der Kubernetes-Pods angezeigt werden sollen.

AWS Management Console

  1. Öffnen Sie die Amazon SageMaker AI-Konsole unter https://console.aws.amazon.com/sagemaker/.

  2. Wählen Sie unter HyperPod Cluster die Option Clusterverwaltung aus.

  3. Wählen Sie die Registerkarte Aufgaben und dann das Zahnradsymbol.

  4. Schalten Sie unter Instanzattribute die Optionen Angeforderte Topologie und Topologieeinschränkung um.

  5. Wählen Sie Bestätigen, um die Topologieinformationen in der Tabelle anzuzeigen.