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_v2para 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_pathen 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.
-
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 -
Vaya a la carpeta
sagemaker-hyperpod-cli.cd sagemaker-hyperpod-cli -
Compruebe que cumple todos los requisitos previos en Requisitos previos
. -
Siga estos pasos para configurar Helm.
-
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 -
Para hacer que el script sea ejecutable, ejecute:
chmod 700 get_helm.shEste comando cambia los permisos para hacer que el script sea ejecutable.
-
Para ejecutar el script de instalación de Helm, ejecute:
./get_helm.sh -
Para eliminar el script de instalación, ejecute:
rm -f ./get_helm.sh
-
-
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:
-
Para conectarse al clúster de HyperPod EKS, ejecute:
aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1 -
Para comprobar la conexión con el clúster de HyperPod EKS, ejecute:
kubectl config current-context -
Para obtener actualizaciones para dependencias estándar de HyperPod, ejecute:
helm dependencies update helm_chart/HyperPodHelmChart -
Para instalar dependencias estándar de HyperPod, ejecute:
helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system -
Para ir al directorio de gráficos de Helm, ejecute:
cd helm_chart -
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
ycuando 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 -
-
Para volver a la raíz del repositorio
codesagemaker-hyperpod-cli, ejecute:cd ..
-
-
Para continuar con la instalación de la CLI de HyperPod en
sagemaker-hyperpod-cli, siga estos pasos.-
Instale la CLI con pip:
pip install -e . 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-tuningTrabajos de evaluación evaluationTrabajos 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.
-
Para obtener todos los nodos libres, ejecute el siguiente comando.
kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}' -
Agregue lo siguiente al archivo
src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yamldel selector de etiquetas.label_selector: required: kubernetes.io/hostname: - <node_name> -
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.