Tutoriales - Amazon SageMaker HyperPod Checkpointless PEFT-Lora Llama 3 70b - 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 - Amazon SageMaker HyperPod Checkpointless PEFT-Lora Llama 3 70b

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 usar Python superior o igual a 3.10 e inferior a 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

Método 1: inicia el trabajo de entrenamiento con el lanzador de recetas

Como alternativa, puedes usar las SageMaker HyperPod recetas 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/llama/run_checkpointless_llama3_70b_lora.sh.

    Un contenedor de aprendizaje profundo. Para encontrar la versión más reciente del contenedor de formación sobre checkpointless, consulte 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/llama/checkpointless_llama3_70b_lora \ 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/llama/run_checkpointless_llama3_70b_lora.sh
  3. 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 llama-3-70b-worker-0 0/1 running 0 36s
  4. Si el estado es PENDIENTE o ContainerCreating, ejecute el siguiente comando para obtener más información

    kubectl describe pod <name of pod>
  5. 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

Método 2: inicia 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. Actualizar el examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml

  2. Envíe el trabajo mediante kubectl con peft_llama3_70b_checkpointless_p5.yaml

    kubectl apply -f examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml
  3. 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 llama3-70b-lora-checkpointless-worker-0 0/1 running 0 36s
  4. Si el STATUS está en PENDIENTE o ContainerCreating, ejecute el siguiente comando para obtener más detalles

    kubectl describe pod <name of pod>
  5. 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