Inicio de un trabajo de entrenamiento mediante la CLI de HyperPod - Amazon SageMaker AI

Inicio de un trabajo de entrenamiento mediante la CLI de HyperPod

La CLI de SageMaker HyperPod es una herramienta de interfaz de línea de comandos para administrar clústeres de Amazon SageMaker HyperPod. Puede usar la CLI de HyperPod para crear, configurar y supervisar clústeres de HyperPod para cargas de trabajo de machine learning. Para obtener más información, consulte el repositorio de GitHub sagemaker-hyperpod-cli.

Requisitos previos

  • Instale la CLI de HyperPod. Para personalizar Amazon Nova en Amazon SageMaker HyperPod, debe consultar la ramificación release_v2 para usar la CLI de SageMaker HyperPod.

  • Compruebe que existe el bucket de salida de Nova antes de enviar trabajos. Para verificarlo, ejecute aws s3 ls s3://nova-111122223333/.

    El nombre del bucket es el valor que especificó para recipes.run.output_s3_path en la fórmula. Este bucket de salida almacenará un archivo de manifiesto generado después del entrenamiento, que contendrá rutas S3 a los artefactos de salida almacenados en el bucket de Amazon S3 administrado por los servicios. Además, opcionalmente puede almacenar archivos TensorBoard o resultados de evaluación.

  • Descripción de los requisitos de sincronización de datos de Amazon FSx. Amazon FSx necesita tiempo para sincronizar los datos de entrenamiento de Amazon S3 antes de que se puedan ejecutar trabajos.

Configuración de la CLI de HyperPod para personalización de Amazon Nova

Siga estos pasos para configurar la CLI de HyperPod para personalización de Amazon Nova.
  1. Clone el repositorio sagemaker-hyperpod-cli de GitHub con la ramificación release_v2.

    git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2
  2. Vaya a la carpeta sagemaker-hyperpod-cli.

    cd sagemaker-hyperpod-cli
  3. Compruebe que cumple todos los requisitos previos en Requisitos previos.

  4. Siga estos pasos para configurar Helm.

    1. Para descargar el script de instalación de Helm, ejecute:

      curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. Para hacer que el script sea ejecutable, ejecute:

      chmod 700 get_helm.sh

      Este comando cambia los permisos para hacer que el script sea ejecutable.

    3. Para ejecutar el script de instalación de Helm, ejecute:

      ./get_helm.sh
    4. Para eliminar el script de instalación, ejecute:

      rm -f ./get_helm.sh
  5. Para instalar dependencias de HyperPod con compatibilidad con grupos de instancias restringidos (RIG), siga estos pasos.

    nota

    Antes de instalar las dependencias, debe tener un clúster de HyperPod EKS con RIG. Si aún no lo tiene, siga estas instrucciones para crearlo:

    1. Para conectarse al clúster de HyperPod EKS, ejecute:

      aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1
    2. Para comprobar la conexión con el clúster de HyperPod EKS, ejecute:

      kubectl config current-context
    3. Para obtener actualizaciones para dependencias estándar de HyperPod, ejecute:

      helm dependencies update helm_chart/HyperPodHelmChart
    4. Para instalar dependencias estándar de HyperPod, ejecute:

      helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system
    5. Para ir al directorio de gráficos de Helm, ejecute:

      cd helm_chart
    6. Para instalar dependencias de HyperPod específicas de RIG, ejecute el siguiente comando.

      nota

      Antes de instalar las dependencias, tenga en cuenta lo siguiente:

      • Solo debe ejecutar este comando una vez por clúster una vez creado.

      • Debe asegurarse de que la utilidad yq esté instalada como mínimo en la versión 4 (por ejemplo, v4). Hay una comprobación integrada para confirmar que yq >=4 está disponible en el script de instalación.

      • Deberá confirmar la instalación introduciendo y cuando se le solicite. Si lo desea, antes de confirmar, compruebe la instalación deseada en ./rig-dependencies.yaml.

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. Para volver a la raíz del repositorio codesagemaker-hyperpod-cli, ejecute:

      cd ..
  6. Para continuar con la instalación de la CLI de HyperPod en sagemaker-hyperpod-cli, siga estos pasos.

    1. Instale la CLI con pip:

      pip install -e .
    2. Verificar la instalación:

      hyperpod --help

Enviar un trabajo

Puede usar la CLI de HyperPod para enviar un trabajo de entrenamiento.

Para enviar un trabajo mediante una fórmula, ejecute el siguiente comando.

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: tipo de trabajo que está ejecutando con la fórmula. Los valores válidos son: fine-tuning | evaluation | training.

    Tipo de trabajo Valor
    Trabajos SFT/PEFT/PPO/DPO fine-tuning
    Trabajos de evaluación evaluation
    Trabajos CPT training
  • Nombre de la fórmula: el nombre se encuentra en el repositorio, dentro del directorio:/src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/.

  • Ejemplo de fórmula: --recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval.

  • Contenedor: este campo es obligatorio. Para buscar imágenes de los tipos de trabajo, consulte la siguiente tabla.

    Técnica Contenedor
    DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest
    Trabajos de evaluación 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
  • Nombre de ejecución personalizado: hay restricciones de definición en la entrada de custom-run-time, por ejemplo, no se usan mayúsculas, espacios ni guiones bajos. Para obtener más información, consulte Object Names and IDs.

[Opcional] Si ya tiene un trabajo de entrenamiento y quiere centrarse en un nodo específico para el próximo trabajo, siga estos pasos.

  1. Para obtener todos los nodos libres, ejecute el siguiente comando.

    kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}'
  2. Agregue lo siguiente al archivo src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yaml del selector de etiquetas.

    label_selector: required: kubernetes.io/hostname: - <node_name>
  3. En el directorio raíz, ejecute el siguiente comando. Esto garantiza que SageMaker HyperPod esté instalado en el sistema del usuario, lo que le permite utilizar la palabra clave “hyperpod” para enviar trabajos y otras funciones. Debe ejecutar este comando desde la carpeta raíz donde se encuentra el código CLI de HyperPod.

    pip install .

Enumeración de trabajos

Para enumerar trabajos, ejecute el siguiente comando.

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

El comando enumera todos los trabajos del espacio de nombres especificado o de todos los espacios de nombres.

Obtención de detalles de trabajo

Ejecute el siguiente comando para obtener los detalles de un trabajo.

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

El comando recupera información detallada acerca de un trabajo específico.

Enumeración de pods

Para enumerar pods, ejecute el siguiente comando.

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

El comando muestra todos los pods asociados a un trabajo específico en el espacio de nombres especificado.

Cancelación de trabajos

Para cancelar un trabajo, ejecute el siguiente comando:

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

Este comando cancela y elimina un trabajo de entrenamiento en ejecución en el espacio de nombres especificado.