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:
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 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 -
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
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.
-
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 \ -
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.
-
examples/gpt_oss/launch/fullactualiza el _finetune_gpt_oss_120b_checkpointless_p5.yaml
imagen: 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.
resume.restore_config.path=: la ruta para descargar las pesas de modelos previamente entrenadas en formato Nemo en el paso de requisitos previos. <path_to_pretrained_weights>
dataset.dataset_path=<path_to_dataset>: la ruta al conjunto de datos almacenado en el almacenamiento compartido
-
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