View a markdown version of this page

Den Trainingsoperator installieren - 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.

Den Trainingsoperator installieren

In den folgenden Abschnitten erfahren Sie, wie Sie den Trainingsoperator installieren.

Voraussetzungen

Bevor Sie den HyperPod Schulungsoperator einsetzen können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Es wurde ein HyperPod Cluster mit Amazon EKS-Orchestrierung erstellt.

  • Das neueste AMI auf Ihrem HyperPod Cluster installiert. Weitere Informationen finden Sie unter SageMaker HyperPod AMI-Veröffentlichungen für Amazon EKS.

  • Cert-Manager wurde installiert.

  • Richten Sie den EKS Pod Identity Agent über die Konsole ein. Wenn Sie das verwenden möchten AWS CLI, verwenden Sie den folgenden Befehl:

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region AWS-Region
  • (Optional) Wenn Sie Ihre HyperPod Clusterknoten in einer privaten VPC ausführen, müssen Sie PrivateLinks VPC-Endpunkte für die Amazon SageMaker AI API (com.amazonaws.aws-region.sagemaker.api) und die Amazon EKS-Authentifizierungsdienste (com.amazonaws) einrichten. aws-region.eks-auth). Sie müssen auch sicherstellen, dass Ihre Clusterknoten mit Subnetzen betrieben werden, die sich in einer Sicherheitsgruppe befinden, die es ermöglicht, den Datenverkehr über die VPC-Endpunkte zu leiten, um mit AI und Amazon EKS zu kommunizieren. SageMaker Wenn diese nicht richtig eingerichtet sind, kann die Installation des Add-Ons fehlschlagen. Weitere Informationen zum Einrichten von VPC-Endpunkten finden Sie unter Erstellen eines VPC-Endpoints.

Den Trainingsoperator installieren

Sie können den HyperPod Trainingsoperator jetzt über die SageMaker AI-Konsole, die Amazon EKS-Konsole oder mithilfe der Konsolenmethoden installieren. AWS CLI Die Konsolenmethoden bieten vereinfachte Funktionen, die Ihnen bei der Installation des Operators helfen. Das AWS CLI bietet einen programmatischen Ansatz, mit dem Sie Ihre Installation weiter anpassen können.

Zwischen den beiden Konsolenerlebnissen bietet SageMaker AI eine Installation mit einem Klick, erstellt die IAM-Ausführungsrolle, erstellt die Pod-Identitätszuordnung und installiert den Operator. Die Installation der Amazon EKS-Konsole ist ähnlich, aber diese Methode erstellt nicht automatisch die IAM-Ausführungsrolle. Während dieses Vorgangs haben Sie die Wahl, eine neue IAM-Ausführungsrolle mit Informationen zu erstellen, die die -Konsole vorab ausfüllt. Standardmäßig haben diese erstellten Rollen nur Zugriff auf den aktuellen Cluster, in dem Sie den Operator installieren. Wenn Sie den Operator entfernen und erneut installieren, müssen Sie eine neue Rolle erstellen, es sei denn, Sie bearbeiten die Berechtigungen der Rolle, um andere Cluster einzubeziehen.

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

  2. Gehen Sie zur Detailseite Ihres Clusters.

  3. Suchen Sie auf der Registerkarte Dashboard nach dem Add-on mit dem Namen Amazon SageMaker HyperPod Training Operator und wählen Sie Installieren. Während des Installationsvorgangs erstellt SageMaker AI eine IAM-Ausführungsrolle mit Berechtigungen, die der AmazonSageMakerHyperPodTrainingOperatorAccess verwalteten Richtlinie ähneln, und erstellt eine Pod-Identitätszuordnung zwischen Ihrem Amazon EKS-Cluster und Ihrer neuen Ausführungsrolle.

Amazon EKS console
Anmerkung

Wenn Sie das Add-on über den Amazon EKS-Cluster installieren, stellen Sie zunächst sicher, dass Sie Ihren HyperPod Cluster mit dem Schlüssel-Wert-Paar gekennzeichnet haben. SageMaker:true Andernfalls schlägt die Installation fehl.

  1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/home #/clusters.

  2. Gehen Sie zu Ihrem EKS-Cluster Add-ons, wählen Sie und dann Get more. Add-ons

  3. Wählen Sie Amazon SageMaker HyperPod Training Operator und dann Weiter.

  4. Unter Version verwendet die Konsole standardmäßig die neueste Version. Wir empfehlen Ihnen, diese zu verwenden.

  5. Wählen Sie unter Add-on Zugriff eine Pod-Identity-IAM-Rolle aus, die Sie mit dem Schulungs-Operator-Add-on verwenden möchten. Wenn Sie noch keine Rolle haben, wählen Sie Empfohlene Rolle erstellen aus, um eine zu erstellen.

  6. Während dieses Rollenerstellungsprozesses füllt die IAM-Konsole alle erforderlichen Informationen vorab aus, z. B. den Anwendungsfall, die AmazonSageMakerHyperPodTrainingOperatorAccess verwaltete Richtlinie und andere erforderliche Berechtigungen, den Rollennamen und die Beschreibung. Überprüfen Sie die Informationen, während Sie die Schritte ausführen, und wählen Sie „Rolle erstellen“.

  7. Überprüfen Sie in der EKS-Konsole die Einstellungen Ihres Add-ons und wählen Sie dann Erstellen aus.

CLI
  1. Stellen Sie sicher, dass die IAM-Ausführungsrolle für Ihren HyperPod Cluster über eine Vertrauensstellung verfügt, die es EKS Pod Identity ermöglicht, die Rolle zu übernehmen oder eine neue IAM-Rolle mit der folgenden Vertrauensrichtlinie zu erstellen. Alternativ können Sie die Amazon EKS-Konsole verwenden, um das Add-on zu installieren, wodurch eine empfohlene Rolle erstellt wird.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Hängen Sie die AmazonSageMakerHyperPodTrainingOperatorAccess verwaltete Richtlinie an Ihre erstellte Rolle an.

  3. Erstellen Sie dann eine Pod-Identitätszuordnung zwischen Ihrem EKS-Cluster, Ihrer IAM-Rolle und Ihrer neuen IAM-Rolle.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region AWS-Region
  4. Nachdem Sie den Vorgang abgeschlossen haben, können Sie den ListPodIdentityAssociations Vorgang verwenden, um die von Ihnen erstellte Zuordnung anzuzeigen. Im Folgenden finden Sie ein Beispiel dafür, wie eine Antwort aussehen könnte.

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. Um den Trainingsoperator zu installieren, verwenden Sie die Operation create-addon. Der Parameter --addon-version ist optional. Wenn Sie keine angeben, ist die Standardversion die neueste Version. Verwenden Sie die DescribeAddonVersions Operation, um die möglichen Versionen abzurufen.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

Wenn Sie den Trainingsoperator bereits auf Ihrem HyperPod Cluster installiert haben, können Sie das EKS-Add-on auf die gewünschte Version aktualisieren. Wenn Sie Checkpointless-Training oder Elastic-Training verwenden möchten, beachten Sie Folgendes:

  • Sowohl beim Checkpointless-Training als auch beim Elastic-Training muss das EKS-Add-on auf Version 1.2.0 oder höher installiert sein.

  • Der Amazon SageMaker HyperPod Training Operator gewährleistet die Abwärtskompatibilität für jede EKS-Add-on-Version, sodass Sie von jeder Zusatzversion auf 1.2.0 oder höher upgraden können.

  • Wenn Sie ein Downgrade von Version 1.2.0 oder höher auf eine niedrigere Version durchführen, müssen Sie vor dem Downgrade zuerst die vorhandenen Jobs löschen und die Jobs nach Abschluss des Downgrades erneut einreichen.

Amazon EKS Console
  1. Öffnen Sie die Amazon EKS-Konsole unter #/clusters. https://console.aws.amazon.com/eks/home

  2. Gehen Sie zu Ihrem EKS-Cluster und wählen Sie. Add-ons Wählen Sie dann das Amazon SageMaker HyperPod Training Operator-Add-on aus und klicken Sie auf Bearbeiten.

  3. Wählen Sie im Menü Version die gewünschte Version des Add-ons aus und wählen Sie dann Änderungen speichern aus.

CLI
  1. Rufen Sie zunächst die Liste der unterstützten Versionen des Add-ons für Ihren Cluster ab.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. Aktualisieren Sie dann das Add-on auf die gewünschte Version.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

Der Trainingsoperator bietet eine Reihe von Optionen mit Standardwerten, die möglicherweise zu Ihrem Anwendungsfall passen. Wir empfehlen Ihnen, den Trainingsoperator mit Standardwerten auszuprobieren, bevor Sie sie ändern. In der folgenden Tabelle werden alle Parameter und Beispiele dafür beschrieben, wann Sie die einzelnen Parameter konfigurieren sollten.

Parameter Description Standard
hp TrainingControllerManager.manager.resources.requests.cpu Wie viele Prozessoren müssen dem Controller zugewiesen werden 1
hp TrainingControllerManager.manager.resources.requests.memory Wie viel Speicher soll dem Controller zugewiesen werden 2 Gi
hp TrainingControllerManager.manager.resources.limits.cpu Das CPU-Limit für den Controller 2
hp TrainingControllerManager.manager.resources.limits.memory Das Speicherlimit für den Controller 4Gi
hp TrainingControllerManager.nodeSelector Knotenauswahl für die Controller-Pods Das Standardverhalten besteht darin, Knoten mit der Bezeichnung auszuwählen sagemaker.amazonaws.com/compute-type: "HyperPod"

HyperPod elastisches Mittel

Das HyperPod elastische Mittel ist eine Erweiterung von PyTorch's ElasticAgent. Er koordiniert die Lebenszyklen der Schulung der Mitarbeiter an jedem Container und kommuniziert mit dem geschulten Operator. HyperPod Um den HyperPod Schulungsoperator verwenden zu können, müssen Sie zuerst den HyperPod Elastic Agent in Ihrem Trainingsimage installieren, bevor Sie Jobs mit dem Operator einreichen und ausführen können. Im Folgenden finden Sie eine Docker-Datei, mit der Elastic Agent installiert und der hyperpodrun Job Launcher erstellt wird.

Anmerkung

Sowohl Checkpointless-Training als auch Elastic Training setzen voraus, dass Sie HyperPod Elastic Agent Version 1.1.0 oder höher verwenden.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \ training.py --script-args

Sie können jetzt Jobs mit kubectl einreichen.

HyperPod Argumente für Elastic Agent

Der HyperPod Elastic Agent unterstützt alle ursprünglichen Argumente und fügt einige zusätzliche Argumente hinzu. Im Folgenden sind alle im HyperPod Elastic Agent verfügbaren Argumente aufgeführt. Weitere Informationen zu PyTorch Elastic Agent finden Sie in der offiziellen Dokumentation.

Argument Description Standardwert
--Shutdown-Signal Signal, das an die Arbeiter zum Herunterfahren gesendet werden soll (SIGTERM oder SIGKILL) „SIGKILL“
--shutdowntimeout Zeitlimit in Sekunden zwischen Shutdown-Signal und SIGKILL-Signalen 15
--server-host Serveradresse des Agenten "0.0.0.0"
--server-port Agent-Server-Port 8080
--server-Protokollebene Protokollebene "info"
--server-shutdown-timeout Timeout für Server-Shutdown in Sekunden 300
--pre-train-Skript Pfad zum Vortraining Keine
--pre-train-args Argumente für das Vortraining Keine
--Skript nach dem Training Pfad zum Skript nach dem Training Keine
--post-train-args Argumente für das Skript nach dem Training Keine
--inprocess-restart Flag, das angibt, ob die Funktion inprocess_restart verwendet werden soll FALSE
--inprocess-timeout Zeit in Sekunden, die der Agent darauf wartet, dass Worker eine Synchronisationsbarriere erreichen, bevor er einen Neustart auf Prozessebene auslöst. Keine

Verwaltung von Aufgaben (optional)

Der Schulungsoperator ist in HyperPod Task Governance integriert, ein robustes Managementsystem, das darauf ausgelegt ist, die Ressourcenzuweisung zu optimieren und eine effiziente Nutzung der Rechenressourcen über Teams und Projekte hinweg für Ihre Amazon EKS-Cluster sicherzustellen. Informationen zum Einrichten der HyperPod Aufgabenverwaltung finden Sie unterEinrichtung für die SageMaker HyperPod Aufgabensteuerung.

Anmerkung

Bei der Installation des HyperPod Task-Governance-Add-ons müssen Sie Version v1.3.0-eksbuild.1 oder höher verwenden.

Stellen Sie sicher, dass Sie bei der Übermittlung eines Auftrags Ihren Warteschlangennamen und die Prioritätsklassenbezeichnungen hyperpod-ns-team-name-localqueue und priority-class-name-priority angeben. Beispiel anhand von Kueue erhalten Sie folgende Labels:

  • kueue.x-k8s. io/queue-Name: hyperpod-ns- -localqueue team-name

  • kueue.x-k8s. io/priority-Klasse: -Name-Priorität priority-class

Im Folgenden finden Sie ein Beispiel dafür, wie Ihre Konfigurationsdatei aussehen könnte:

apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample 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: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"

Verwenden Sie dann den folgenden kubectl-Befehl, um die YAML-Datei anzuwenden.

kubectl apply -f task-governance-job.yaml

Warteschlange (optional)

Sie können Jobs zwar direkt ausführen, aber Ihr Unternehmen kann den Schulungsleiter auch in Kueue integrieren, um Ressourcen zuzuweisen und Jobs zu planen. Folgen Sie den nachstehenden Schritten, um Kueue in Ihrem Cluster zu installieren. HyperPod

  1. Folgen Sie der Installationsanleitung in der offiziellen Kueue-Dokumentation. Wenn Sie den Schritt der Konfiguration erreicht habencontroller_manager_config.yaml, fügen Sie die folgende Konfiguration hinzu:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. Befolgen Sie die restlichen Schritte in der offiziellen Installationsanleitung. Nachdem Sie die Installation von Kueue abgeschlossen haben, können Sie mit dem kubectl apply -f sample-queues.yaml-Befehl einige Beispielwarteschlangen erstellen. Verwenden Sie die folgende YAML-Datei.

    apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500