Starten eines Trainingsjobs mit der HyperPod-CLI - Amazon SageMaker AI

Starten eines Trainingsjobs mit der HyperPod-CLI

SageMaker HyperPod CLI ist ein Befehlszeilenschnittstellentool zur Verwaltung der Cluster von Amazon SageMaker HyperPod. Sie können die HyperPod-CLI verwenden, um HyperPod-Cluster für Machine-Learning-Workloads zu erstellen, zu konfigurieren und zu überwachen. Weitere Informationen finden Sie im GitHub-Repository sagemaker-hyperpod-cli.

Voraussetzungen

  • Installieren Sie die HyperPod-CLI. Für die Anpassung von Amazon Nova an Amazon SageMaker HyperPod müssen Sie die Verzweigung mit dem Namen release_v2 testen, um die SageMaker HyperPod CLI zu verwenden.

  • Vergewissern Sie sich, dass der Nova-Ausgabe-Bucket existiert, bevor Sie Jobs einreichen. Führen Sie zur Überprüfung den Befehl aws s3 ls s3://nova-111122223333/ aus.

    Der Bucket-Name ist der Wert, den Sie für recipes.run.output_s3_path im Rezept angegeben haben. In diesem Ausgabe-Bucket wird eine nach dem Training generierte Manifestdatei gespeichert, die S3-Pfade zu den Ausgabeartefakten enthält, die im serviceverwalteten Amazon-S3-Bucket gespeichert sind. Darüber hinaus können optional TensorBoard-Dateien oder Bewertungsergebnisse gespeichert werden.

  • Grundlegendes zu den Datensynchronisierungsanforderungen von Amazon FSx Amazon FSx benötigt Zeit, um Amazon-S3-Trainingsdaten zu synchronisieren, bevor Jobs ausgeführt werden können.

Einrichten der HyperPod-CLI für die Amazon-Nova-Anpassung

Gehen Sie folgendermaßen vor, um die HyperPod-CLI für die Amazon-Nova-Anpassung einzurichten.
  1. Klonen Sie das GitHub-Repository sagemaker-hyperpod-cli mit der Verzweigung release_v2.

    git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2
  2. Navigieren Sie zum Verzeichnis sagemaker-hyperpod-cli.

    cd sagemaker-hyperpod-cli
  3. Vergewissern Sie sich unter Voraussetzungen, dass Sie alle Voraussetzungen erfüllen.

  4. Gehen Sie folgendermaßen vor, um Helm einzurichten.

    1. Um das Helm-Installationsskript herunterzuladen, führen Sie folgenden Befehl aus:

      curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. Um das Skript ausführbar zu machen, führen Sie Folgendes aus:

      chmod 700 get_helm.sh

      Dieser Befehl ändert die Berechtigungen, um das Skript ausführbar zu machen.

    3. Um das Helm-Installationsskript auszuführen, führen Sie folgenden Befehl aus:

      ./get_helm.sh
    4. Um das Installationsskript zu entfernen, führen Sie Folgendes aus:

      rm -f ./get_helm.sh
  5. Gehen Sie wie folgt vor, um HyperPod-Abhängigkeiten mit Unterstützung für eingeschränkte Instance-Gruppen (RIG) zu installieren.

    Anmerkung

    Bevor Sie die Abhängigkeiten installieren, benötigen Sie einen HyperPod-EKS-Cluster mit RIG. Wenn Sie noch keines besitzen, befolgen Sie diese Anweisungen, um eines zu erstellen.

    1. Um eine Verbindung zu Ihrem HyperPod-EKS-Cluster herzustellen, führen Sie folgenden Befehl aus:

      aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1
    2. Um die Verbindung zu Ihrem HyperPod-EKS-Cluster zu überprüfen, führen Sie folgenden Befehl aus:

      kubectl config current-context
    3. Um Updates für standardmäßige HyperPod-Abhängigkeiten abzurufen, führen Sie folgenden Befehl aus:

      helm dependencies update helm_chart/HyperPodHelmChart
    4. Um die HyperPod-Standardabhängigkeiten zu installieren, führen Sie folgenden Befehl aus:

      helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system
    5. Um zum Helm-Chart-Verzeichnis zu navigieren, führen Sie folgenden Befehl aus:

      cd helm_chart
    6. Um RIG-spezifische HyperPod-Abhängigkeiten zu installieren, führen Sie folgenden Befehl aus:

      Anmerkung

      Berücksichtigen Sie Folgendes, bevor Sie die Abhängigkeiten installieren:

      • Sie sollten diesen Befehl nur einmal pro Cluster ausführen, nachdem er erstellt wurde.

      • Sie sollten sicherstellen, dass das yq-Hilfsprogramm mindestens mit Version 4 (z. B. v4) installiert ist. Es gibt eine integrierte Überprüfung, um zu bestätigen, dass yq >=4 im Installationsskript verfügbar ist.

      • Sie müssen die Installation bestätigen, indem Sie y eingeben, wenn Sie dazu aufgefordert werden. Optional können Sie sich vor der Bestätigung die geplante Installation unter ./rig-dependencies.yaml anzeigen.

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. Um zurück zum Stammverzeichnis des Repositorys codesagemaker-hyperpod-cli zu navigieren, führen Sie folgenden Befehl aus:

      cd ..
  6. Gehen Sie wie folgt vor, um mit der Installation der HyperPod-CLI in sagemaker-hyperpod-cli fortzufahren.

    1. Installieren Sie die CLI mithilfe von pip:

      pip install -e .
    2. Überprüfen Sie die Installation:

      hyperpod --help

Übermitteln eines Auftrags

Sie können die HyperPod-CLI verwenden, um einen Trainingsjob einzureichen.

Führen Sie den folgenden Befehl aus, um einen Job mithilfe eines Rezepts einzureichen.

hyperpod start-job [--namespace <namespace>] --recipe {{fine-tuning | evaluation | training}}/nova/<Your_Recipe_Name> --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": <Docker Image>, "recipes.run.name": <custom-run-name>, "recipes.run.output_s3_path": "<customer-s3-path>" }'
  • --recipe: Der Typ des Jobs, den Sie mithilfe des Rezepts ausführen. Gültige Werte sind: fine-tuning | evaluation | training.

    Job type Wert
    SFT-/PEFT-/PPO-/DPO-Jobs fine-tuning
    Auswertungsaufträge evaluation
    CPT-Jobs training
  • Rezeptname: Sie finden den Namen im Repository unter dem Verzeichnis: /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/.

  • Beispielrezept: --recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval.

  • Container: Dieses Feld ist erforderlich. Ihre Images für die Jobtypen finden Sie in der folgenden Tabelle.

    Technik Container
    DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest
    Auswertungsaufträge 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest
    CPT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-CPT-latest
    PPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SMHP-PPO-TRAIN-latest
    SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest
  • Benutzerdefinierter Ausführungsname: Es gibt Definitionsbeschränkungen für die Eingabe von custom-run-time, z. B. keine Großbuchstaben, keine Leerzeichen, keine Unterstriche. Weitere Informationen finden Sie unter Objektnamen und -IDs.

[Optional] Wenn Sie bereits einen Trainingsjob haben und für Ihren nächsten Job einen bestimmten Knoten als Ziel festlegen möchten, gehen Sie wie folgt vor.

  1. Um alle freien Knoten abzurufen, führen Sie folgenden Befehl aus.

    kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}'
  2. Fügen Sie der Datei src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yaml für den Label-Selektor Folgendes hinzu.

    label_selector: required: kubernetes.io/hostname: - <node_name>
  3. Führen Sie folgenden Befehl im Stammverzeichnis aus. Dadurch wird sichergestellt, dass SageMaker HyperPod auf dem System des Benutzers installiert ist, sodass dieser das Schlüsselwort „hyperpod“ für die Einreichung von Jobs und andere Funktionen verwenden kann. Sie sollten diesen Befehl im Stammordner ausführen, in dem sich der HyperPod-CLI-Code befindet.

    pip install .

Auflisten von Aufträgen

Führen Sie den folgenden Befehl aus, um die Jobs aufzulisten.

hyperpod list-jobs [--namespace <namespace>] [--all-namespaces]

Der Befehl listet alle Jobs im angegebenen Namespace oder in allen Namespaces auf.

Abrufen von Jobdetails

Führen Sie den folgenden Befehl aus, um die Details eines Jobs abzurufen.

hyperpod get-job --job-name <job-name> [--namespace <namespace>] [--verbose]

Der Befehl ruft detaillierte Informationen zu einem bestimmten Auftrag ab.

Auflisten von Pods

Führen Sie den folgenden Befehl aus, um die Pods aufzulisten.

hyperpod list-pods --job-name <job-name> [--namespace <namespace>]

Der Befehl listet alle Pods auf, die einem bestimmten Job im angegebenen Namespace zugeordnet sind.

Job abbrechen

Führen Sie den folgenden Befehl aus, um einen Job abzubrechen.

hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]

Mit diesem Befehl wird ein laufender Trainingsjob im angegebenen Namespace abgebrochen und gelöscht.