翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル - Amazon SageMaker HyperPod Checkpointless Full Finetuning GPT OSS 120b
HyperPod でチェックポイントレストレーニングレシピを実行するには、次の一連のステップが必要です。
前提条件
環境のセットアップを開始する前に、以下を確認します。
共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
-
以下の形式のいずれか。
JSON
JSONGZ (圧縮 JSON)
ARROW
Llama 70B または GPT-OSS 120B でサポートされているチェックポイントレストレーニングレシピをソース
から選択します。 ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします。 https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face
環境をセットアップする
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 を使用してチェックポイントレストレーニングレシピを起動できるようになりました。
recipes ランチャーを使用してトレーニングジョブを起動する
Amazon SageMaker HyperPod レシピを使用してトレーニングジョブを送信できます。レシピを使用するには、k8s.yaml、config.yaml を更新し、起動スクリプトを実行します。
-
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.shの更新your_container: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、「チェックポイントレストレーニングリリースノート」を参照してください。
#!/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
STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。
kubectl describe pod <name of pod>
ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。
kubectl logs <name of pod>
kubectl get pods を実行すると、STATUS は COMPLETED になります。
事前定義された yaml を使用して kubectl でトレーニングジョブを起動する
もう 1 つのオプションは、事前定義されたジョブ yaml を使用して kubectl を介してトレーニングを起動することです。
-
examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml を更新する
イメージ: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、「チェックポイントレストレーニングリリースノート」を参照してください。
resume.restore_config.path=<path_to_pretrained_weights>: 前提条件ステップで Nemo 形式の事前トレーニング済みモデル幅をダウンロードするためのパス。
dataset.dataset_path=<path_to_dataset>: 共有ストレージに保存されたデータセットへのパス
-
full_finetune_gpt_oss_120b_checkpointless_p5.yaml で kubectl を使用してジョブを送信する
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
STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。
kubectl describe pod <name of pod>
ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。
kubectl logs <name of pod>
kubectl get pods を実行すると、STATUS は Completed になります。