本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程——亚马逊 SageMaker HyperPod Checkpointless Full Finetuning GPT OSS 120b
要运行无检查点训练食谱,需要执行以下步骤顺序。 HyperPod
先决条件
在开始设置环境之前,请确保您:
拥有一个共享存储位置。它可以是可从群集节点访问的 Amazon FSx 文件系统或 NFS 系统。
-
拥有采用以下格式之一的数据:
JSON
JSONGZ(压缩 JSON)
ARROW
下载拥抱脸部模型的权重并转换为 Nemo 支持的格式
。 设置您的环境
Kubernetes 环境设置
要设置你的 Kubernetes 环境,请执行以下操作:
-
设置虚拟环境。确保你的 Python 版本大于或等于 3.10 且低于 3.14。
python3 -m venv ${PWD}/venv source venv/bin/activate -
连接到 Kubernetes 集群
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
使用下列方法之一安装依赖项:
-
方法 1: SageMaker HyperPod 食谱方法:
# 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:使用预定义的作业 yaml 方法的 kubectl
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
-
现在,你可以使用 NeMo样式启动器或 kubectl 启动无检查点训练配方。
使用食谱启动器启动训练作业
您可以使用 Amazon SageMaker HyperPod 食谱提交您的训练作业。使用配方包括更新 k8s.yaml、config.yaml 和运行启动脚本。
-
更新
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.shyour_container:深度学习容器。要查找 checkpointless 训练容器的最新版本,请参阅 checkpo intless 训练版本说明。
#!/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 \ -
启动训练作业
bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh
提交训练作业后,可使用以下命令来验证您是否已成功提交该作业。
kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s
如果状态为 PENDING 或 ContainerCreating,请运行以下命令以获取更多详细信息
kubectl describe pod <name of pod>
在作业 STATUS 更改为 Running 后,可使用以下命令检查日志。
kubectl logs <name of pod>
在运行 kubectl get pods 时,STATUS 会变成 COMPLETED。
使用带有预定义的 yaml 的 kubectl 启动训练作业
另一种选择是使用预定义的作业 yaml 通过 kubectl 启动训练。
-
更新 _finetune_gpt_oss_120 examples/gpt_oss/launch/full b_checkpointless_p5.yaml
图片:深度学习容器。要查找 checkpointless 训练容器的最新版本,请参阅 checkpo intless 训练版本说明。
resume.restore_config.path=:在 “先决条件” 步骤中以 Nemo 格式下载预训练模型权重的路径。 <path_to_pretrained_weights>
dataset.dataset_path=<path_to_dataset>:存储在共享存储中的数据集的路径
-
使用 kubectl 和 full_finetune_gpt_oss_120b_checkpointless_p5.yaml 提交任务
kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
提交训练作业后,可使用以下命令来验证您是否已成功提交该作业。
kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s
如果状态为 PENDING 或 ContainerCreating,请运行以下命令以获取更多详细信息
kubectl describe pod <name of pod>
在作业 STATUS 更改为 Running 后,可使用以下命令检查日志。
kubectl logs <name of pod>
当你运行 kubectl get pod 时,状态将变为 “已完成”