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_v2testen, 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_pathim 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.
-
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 -
Navigieren Sie zum Verzeichnis
sagemaker-hyperpod-cli.cd sagemaker-hyperpod-cli -
Vergewissern Sie sich unter Voraussetzungen
, dass Sie alle Voraussetzungen erfüllen. -
Gehen Sie folgendermaßen vor, um Helm einzurichten.
-
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 -
Um das Skript ausführbar zu machen, führen Sie Folgendes aus:
chmod 700 get_helm.shDieser Befehl ändert die Berechtigungen, um das Skript ausführbar zu machen.
-
Um das Helm-Installationsskript auszuführen, führen Sie folgenden Befehl aus:
./get_helm.sh -
Um das Installationsskript zu entfernen, führen Sie Folgendes aus:
rm -f ./get_helm.sh
-
-
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.
-
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 -
Um die Verbindung zu Ihrem HyperPod-EKS-Cluster zu überprüfen, führen Sie folgenden Befehl aus:
kubectl config current-context -
Um Updates für standardmäßige HyperPod-Abhängigkeiten abzurufen, führen Sie folgenden Befehl aus:
helm dependencies update helm_chart/HyperPodHelmChart -
Um die HyperPod-Standardabhängigkeiten zu installieren, führen Sie folgenden Befehl aus:
helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system -
Um zum Helm-Chart-Verzeichnis zu navigieren, führen Sie folgenden Befehl aus:
cd helm_chart -
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
yeingeben, wenn Sie dazu aufgefordert werden. Optional können Sie sich vor der Bestätigung die geplante Installation unter./rig-dependencies.yamlanzeigen.
chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh -
-
Um zurück zum Stammverzeichnis des Repositorys
codesagemaker-hyperpod-clizu navigieren, führen Sie folgenden Befehl aus:cd ..
-
-
Gehen Sie wie folgt vor, um mit der Installation der HyperPod-CLI in
sagemaker-hyperpod-clifortzufahren.-
Installieren Sie die CLI mithilfe von pip:
pip install -e . Ü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-tuningAuswertungsaufträge evaluationCPT-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.
-
Um alle freien Knoten abzurufen, führen Sie folgenden Befehl aus.
kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}' -
Fügen Sie der Datei
src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yamlfür den Label-Selektor Folgendes hinzu.label_selector: required: kubernetes.io/hostname: - <node_name> -
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.