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:
Se habilitó el soporte de Amazon EKS en Amazon SageMaker HyperPod
Una ubicación de almacenamiento compartida. Puede ser un sistema de FSx archivos Amazon o un sistema NFS al que se pueda acceder desde los nodos del clúster.
-
Datos en uno de los siguientes formatos:
JSON
JSONGZ (JSON comprimido)
ARROW
Descarga el modelo Hugging Face con pesas y conviértelo en un formato compatible con Nemo.
Configure su entorno
Configuración del entorno de Kubernetes
Para configurar su entorno de Kubernetes, haga lo siguiente:
-
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 -
Conéctese con su clúster de Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Instale las dependencias siguiendo uno de estos métodos:
-
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 -
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.
-
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 \ -
Lanzamiento del trabajo de entrenamiento
bash launcher_scripts/llama/run_checkpointless_llama3_70b_lora.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 llama-3-70b-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 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.
-
Actualizar el
examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yamlimage: es un contenedor de aprendizaje profundo. Para encontrar la versión más reciente del contenedor de formación de checkpointless, consulta las notas de la versión de formación de checkpointless.resume.restore_config.path=<path_to_pretrained_weights>: La ruta para descargar modelos de pesas preentrenados en formato Nemo en el paso de requisitos previos.dataset.dataset_path=<path_to_dataset>: La ruta al conjunto de datos que se almacenó en el almacenamiento compartido
-
Envíe el trabajo mediante kubectl con
peft_llama3_70b_checkpointless_p5.yamlkubectl apply -f examples/llama3/launch/peft_llama3_70b_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 llama3-70b-lora-checkpointless-worker-0 0/1 running 0 36s -
Si el STATUS está en PENDIENTE o ContainerCreating, ejecute el siguiente comando para obtener más detalles
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