Tutoriales - Optimización completa SageMaker HyperPod de Amazon Checkpointless (GPT OSS 120b) - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutoriales - Optimización completa SageMaker HyperPod de Amazon Checkpointless (GPT OSS 120b)

Se requiere la siguiente secuencia de pasos para ejecutar recetas de entrenamiento sin puntos de control. HyperPod

Requisitos previos

Antes de configurar el entorno, asegúrese de disponer de:

Configuración del entorno de Kubernetes

Para configurar su entorno de Kubernetes, haga lo siguiente:

  1. Configure el entorno virtual. Asegúrese de que su versión de Python sea superior o igual a la 3.10 e inferior a la 3.14.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. Configura kubectl y eksctl

  3. Instala Helm

  4. Conéctese con su clúster de Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. Instale las dependencias siguiendo uno de estos métodos:

    1. Método 1: método de SageMaker HyperPod recetas:

      # install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
    2. Método 2: kubectl con el método job yaml predefinido

      # install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training

Ahora puedes lanzar la receta de entrenamiento sin puntos de control usando el lanzador style o usando kubectl. NeMo

Lanza trabajos de formación con el lanzador de recetas

Puedes usar las SageMaker HyperPod recetas de Amazon para enviar tu trabajo de formación. El uso de las recetas implica actualizar k8s.yaml, config.yaml y ejecutar el script de lanzamiento.

  1. Actualice launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh.

    your_container: un contenedor de aprendizaje profundo. Para encontrar la versión más reciente del contenedor de formación sobre checkpointless, consulta las notas de la versión de formación sobre checkpointless.

    #!/bin/bash SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="${TRAIN_DIR}" VAL_DIR="${VAL_DIR}" EXP_DIR="${EXP_DIR}" LOG_DIR="${LOG_DIR}" CONTAINER_MOUNT="/data" CONTAINER="${CONTAINER}" MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ git.use_default=false \ cluster=k8s \ cluster_type=k8s \ container="${CONTAINER}" \ +cluster.hostNetwork=true \ +cluster.persistent_volume_claims.0.claimName=fsx-claim \ +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \ +recipes.dataset.val_dataset_path="${VAL_DIR}" \ ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
  2. Lanzamiento del trabajo de entrenamiento

    bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh

Después de enviar el trabajo de entrenamiento, puede usar el siguiente comando para comprobar si lo ha enviado correctamente.

kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s

Si el estado es PENDIENTE o ContainerCreating, ejecute el siguiente comando para obtener más información

kubectl describe pod <name of pod>

Cuando el STATUS del trabajo cambie a Running, podrá examinar el registro con el siguiente comando.

kubectl logs <name of pod>

El STATUS pasará a COMPLETED cuando ejecute kubectl get pods.

Lanza el trabajo de entrenamiento con kubectl con yaml predefinido

Otra opción es iniciar la formación a través de kubectl con un trabajo predefinido, yaml.

  1. examples/gpt_oss/launch/fullactualiza el _finetune_gpt_oss_120b_checkpointless_p5.yaml

  2. Envía el trabajo mediante kubectl con full_finetune_gpt_oss_120b_checkpointless_p5.yaml

    kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml

Después de enviar el trabajo de entrenamiento, puede usar el siguiente comando para comprobar si lo ha enviado correctamente.

kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s

Si el ESTADO es PENDIENTE o, ejecuta el siguiente comando para obtener más detalles ContainerCreating

kubectl describe pod <name of pod>

Cuando el STATUS del trabajo cambie a Running, podrá examinar el registro con el siguiente comando.

kubectl logs <name of pod>

El ESTADO pasará a Completado cuando ejecutes kubectl get pods