教程——亚马逊 SageMaker HyperPod Checkpointless Full Finetuning GPT OSS 120b - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程——亚马逊 SageMaker HyperPod Checkpointless Full Finetuning GPT OSS 120b

要运行无检查点训练食谱,需要执行以下步骤顺序。 HyperPod

先决条件

在开始设置环境之前,请确保您:

Kubernetes 环境设置

要设置你的 Kubernetes 环境,请执行以下操作:

  1. 设置虚拟环境。确保你的 Python 版本大于或等于 3.10 且低于 3.14。

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. 设置 kubectl 和 eksctl

  3. 安装头盔

  4. 连接到 Kubernetes 集群

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. 使用下列方法之一安装依赖项:

    1. 方法 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. 方法 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 和运行启动脚本。

  1. 更新 launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh

    your_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 \
  2. 启动训练作业

    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 启动训练。

  1. 更新 _finetune_gpt_oss_120 examples/gpt_oss/launch/full b_checkpointless_p5.yaml

  2. 使用 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 时,状态将变为 “已完成”