Installation des Schulungsoperators - 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.

Installation des Schulungsoperators

In den folgenden Abschnitten erfahren Sie, wie Sie den Training Operator installieren.

Voraussetzungen

Bevor Sie den HyperPod Training Operator verwenden können, müssen Sie die folgenden Voraussetzungen erfüllt haben:

Um den HyperPod Training Operator zu installieren, müssen Sie zuerst andere Komponenten installieren. Informationen dazu finden Sie in den folgenden Abschnitten.

Schritt 1: Amazon EKS Pod Identity Agent einrichten

  1. Stellen Sie sicher, dass die IAM-Ausführungsrolle für Ihren HyperPod Cluster über die AssumeRoleForPodIdentity Berechtigung eks-auth: verfügt, oder erstellen Sie eine neue IAM-Rolle mit den folgenden Berechtigungen, die Sie mit dem Schulungsoperator verwenden können.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  2. Fügen Sie Ihrer neu erstellten Rolle die folgende IAM-Richtlinie hinzu. Stellen Sie sicher, dass Sie Ihren HyperPod Cluster-ARN angeben.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. Richten Sie den EKS Pod Identity Agent mithilfe der Konsole ein. Wenn Sie den 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
  4. 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 role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region AWS-Region
  5. Nachdem Sie den Vorgang abgeschlossen haben, können Sie den ListPodIdentityAssociations Vorgang verwenden, um die von Ihnen erstellte Zuordnung zu sehen. Im Folgenden finden Sie ein Beispiel für eine Antwort, wie sie 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" }] }

Schritt 2: Installieren Sie den HyperPod Training Operator

Sie können den HyperPod Training Operator jetzt über die Amazon EKS-Konsole oder mit dem CreateAddOnAPI-Vorgang installieren. Wenn Sie die Konsole verwenden, suchen Sie nach dem Add-on mit dem Namen Amazon SageMaker HyperPod Training Operator.

Im Folgenden finden Sie ein Beispiel dafür, wie Sie den Operator mit der API und der CLI installieren können. Der Parameter --addon-version ist optional. Wenn Sie keine angeben, ist die Standardversion die neueste Version. Verwenden Sie die DescribeAddonVersionsOperation, um die möglichen Versionen zu erhalten.

Anmerkung

Amazon SageMaker HyperPod Task Governance wird vom Schulungsbetreiber nicht unterstützt.

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

Der Schulungsleiter 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 Beschreibung Standard
hpTrainingControllerManager.Manager.Resources.Requests.CPU Wie viele Prozessoren müssen dem Controller zugewiesen werden 1
hpTrainingControllerManager.Manager.Resources.Requests.Memory Wie viel Speicher muss dem Controller zugewiesen werden 2 Gi
hpTrainingControllerManager.Manager.Resources.Limits.CPU Das CPU-Limit für den Controller 2
hpTrainingControllerManager.Manager.Resources.Limits.Memory Das Speicherlimit für den Controller 4Gi
hpTrainingControllerManager.NodeSelector Knotenauswahl für die Controller-Pods Das Standardverhalten besteht darin, Knoten mit der Bezeichnung auszuwählen sagemaker.amazonaws.com/compute-type: "HyperPod"

Schritt 3: Installieren Sie den HyperPod Elastic Agent

Das HyperPod elastische Mittel ist eine Erweiterung PyTorchvon ElasticAgent. Er organisiert die Lebenszyklen der geschulten Mitarbeiter an jedem Container und kommuniziert mit dem Schulungsleiter. HyperPod Um den HyperPod Trainingsoperator verwenden zu können, müssen Sie zuerst den HyperPod Elastic Agent in Ihrem Trainings-Image 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.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional ... # 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 elastische Agenten

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

Argument Beschreibung Standardwert
--shutdown-signal Signal, das an die Arbeiter zum Herunterfahren gesendet werden soll (SIGTERM oder SIGKILL) „SIGKILL“
--Timeout beim Herunterfahren Zeitlimit in Sekunden zwischen SIGTERM- und SIGKILL-Signalen 30
--server-host Serveradresse des Agenten „0.0.0.0"
--Serveranschluss Port des Agentenservers 8080
--server-log-level Protokollebene des Agentenservers „Informationen“
--server-shutdown-timeout Timeout beim Herunterfahren des Servers in Sekunden 300
--pre-train-script Pfad zum Skript vor dem Training Keine
--pre-train-args Argumente für das Skript vor dem Training Keine
--post-train-script Pfad zum Skript nach dem Training Keine
--post-train-args Argumente für das Skript nach dem Training Keine

Warteschlange (optional)

Sie können Jobs zwar direkt ausführen, aber Ihre Organisation kann den Schulungsleiter auch in Kueue integrieren, um Ressourcen zuzuweisen und Jobs zu planen. Gehen Sie wie folgt vor, 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. Folgen Sie den restlichen Schritten in der offiziellen Installationsanleitung. Nachdem Sie die Installation von Kueue abgeschlossen haben, können Sie mit dem Befehl einige Beispielwarteschlangen erstellen. kubectl apply -f sample-queues.yaml 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