Démarrage d’une tâche d’entraînement à l’aide de la CLI HyperPod - Amazon SageMaker AI

Démarrage d’une tâche d’entraînement à l’aide de la CLI HyperPod

La CLI SageMaker HyperPod est un outil d’interface de ligne de commande qui permet de gérer les clusters Amazon SageMaker HyperPod. Vous pouvez l’utiliser pour créer, configurer et surveiller des clusters HyperPod pour les charges de travail de machine learning. Pour plus d’informations, consultez le référentiel GitHub sagemaker-hyperpod-cli.

Prérequis

  • Installation de la CLI HyperPod Pour personnaliser Amazon Nova sur Amazon SageMaker HyperPod, vous devez consulter la branche release_v2 afin d’utiliser la CLI SageMaker HyperPod.

  • Vérifiez que le compartiment de sortie Nova existe avant de soumettre des tâches. Pour vérifier, exécutez aws s3 ls s3://nova-111122223333/.

    Le nom du compartiment est la valeur que vous avez spécifiée pour recipes.run.output_s3_path dans la formule. Ce compartiment de sortie stocke un fichier manifeste généré après l’entraînement, qui contient les chemins S3 vers les artefacts de sortie stockés dans le compartiment Amazon S3 géré par le service. En outre, il peut éventuellement stocker des fichiers TensorBoard ou des résultats d’évaluation.

  • Compréhension des exigences de synchronisation des données Amazon FSx Amazon FSx a besoin de temps pour synchroniser les données d’entraînement Amazon S3 avant que les tâches puissent être exécutées.

Configuration de la CLI HyperPod pour la personnalisation d’Amazon Nova

Afin de configurer la CLI HyperPod pour la personnalisation d’Amazon Nova, suivez ces étapes.
  1. Clonez le référentiel GitHub sagemaker-hyperpod-cli avec la branche release_v2.

    git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2
  2. Accédez au dossier sagemaker-hyperpod-cli.

    cd sagemaker-hyperpod-cli
  3. Vérifiez que vous disposez de tous les prérequis dans Prérequis.

  4. Pour configurer Helm, procédez comme suit.

    1. Pour télécharger le script d’installation Helm, exécutez :

      curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. Pour rendre le script exécutable, exécutez :

      chmod 700 get_helm.sh

      Cette commande change les autorisations pour rendre le script exécutable.

    3. Pour exécuter le script d’installation Helm, exécutez :

      ./get_helm.sh
    4. Pour supprimer le script d’installation, exécutez :

      rm -f ./get_helm.sh
  5. Pour installer les dépendances HyperPod compatibles avec les groupes d’instances restreints (RIG), procédez comme suit.

    Note

    Avant d’installer les dépendances, vous devez disposer d’un cluster HyperPod EKS avec un RIG. Si vous ne disposez pas encore d’un compte, suivez ces instructions pour en créer un.

    1. Pour vous connecter à votre cluster HyperPod EKS, exécutez :

      aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1
    2. Pour vérifier la connexion à votre cluster HyperPod EKS, exécutez :

      kubectl config current-context
    3. Pour obtenir des mises à jour pour les dépendances HyperPod standard, exécutez :

      helm dependencies update helm_chart/HyperPodHelmChart
    4. Pour installer les dépendances HyperPod standard, exécutez :

      helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system
    5. Pour accéder au répertoire des Charts de Helm, exécutez :

      cd helm_chart
    6. Pour installer les dépendances HyperPod spécifiques au RIG, exécutez la commande suivante.

      Note

      Avant d’installer les dépendances, tenez compte des éléments suivants :

      • Vous ne devez exécuter cette commande qu’une seule fois par cluster après sa création.

      • Vous devez vous assurer qu’au moins la version 4 (v4) de l’utilitaire yq est installée. Une vérification intégrée permettant de confirmer que yq >=4 est disponible dans le script d’installation.

      • Vous devez confirmer l’installation en entrant y lorsque vous y êtes invité. Facultatif : avant de confirmer, consultez ici l’installation prévue : ./rig-dependencies.yaml.

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. Pour revenir à la racine du référentiel codesagemaker-hyperpod-cli, exécutez :

      cd ..
  6. Pour procéder à l’installation de la CLI HyperPod dans sagemaker-hyperpod-cli, procédez comme suit.

    1. Désinstallez la CLI à l’aide de pip :

      pip install -e .
    2. Vérifier l'installation :

      hyperpod --help

Envoi d’une tâche

Vous pouvez utiliser la CLI HyperPod pour soumettre une tâche d’entraînement.

Pour soumettre une tâche à l’aide d’une formule, exécutez la commande suivante.

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 : le type de tâche que vous exécutez à l’aide de la formule. Les valeurs valides sont: fine-tuning | evaluation | training.

    Type de tâche Valeur
    Tâches SFT/PEFT/PPO/DPO fine-tuning
    Tâches d’évaluation evaluation
    Tâches CPT training
  • Nom de la formule : vous pouvez trouver ce nom dans le répertoire /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/ du référentiel.

  • Exemple de formule : --recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval.

  • Conteneur : ce champ est obligatoire. Pour rechercher les images correspondant aux types de tâche, consultez le tableau suivant.

    Technique Conteneur
    DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest
    Tâches d’évaluation 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
  • Nom d’exécution personnalisé : il existe des contraintes de définition sur l’entrée custom-run-time. Par exemple, pas de majuscules, pas d’espaces, pas de traits de soulignement. Pour plus d’informations, consultez Noms et ID d’objet.

[Facultatif] Si vous disposez déjà d’une tâche d’entraînement et que vous souhaitez cibler un nœud spécifique pour votre prochaine tâche, procédez comme suit.

  1. Pour obtenir tous les nœuds libres, exécutez la commande suivante.

    kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}'
  2. Ajoutez ce qui suit au fichier src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yaml pour le sélecteur d’étiquettes.

    label_selector: required: kubernetes.io/hostname: - <node_name>
  3. Dans le répertoire racine, exécutez la commande suivante. Cela garantit que SageMaker HyperPod est installé sur le système de l’utilisateur, ce qui lui permet d’utiliser le mot clé « hyperpod » pour la soumission de tâches et d’autres fonctions. Vous devez exécuter cette commande depuis le dossier racine, où se trouve le code de la CLI HyperPod.

    pip install .

Affichage des tâches

Pour répertorier les tâches, exécutez la commande suivante.

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

La commande répertorie toutes les tâches dans l’espace de noms spécifié ou dans tous les espaces de noms.

Obtention des informations d’une tâche

Pour obtenir les informations d’une tâche, exécutez la commande suivante.

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

La commande extrait les informations détaillées d’une tâche spécifique.

Affichage des pods

Pour répertorier les pods, exécutez la commande suivante.

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

La commande répertorie tous les pods associés à une tâche spécifique dans l’espace de noms spécifié.

Annulation de tâches

Pour supprimer une tâche, exécutez la commande suivante.

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

Cette commande annule et supprime une tâche d’entraînement en cours dans l’espace de noms spécifié.