

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SageMaker HyperPod チェックポイントレストレーニングチュートリアル
<a name="sagemaker-eks-checkpointless-recipes"></a>

[ HyperPod チェックポイントレストレーニングレシピ](https://github.com/aws/sagemaker-hyperpod-checkpointless-training)は、チェックポイントレストレーニング機能を有効にした事前定義されたジョブ設定です。これらのレシピを使用すると、HyperPod でのチェックポイントレストレーニングを簡単に開始できます。

**Topics**
+ [チュートリアル - Amazon SageMaker HyperPod チェックポイントレスフルファインチューニング GPT OSS 120b](sagemaker-eks-checkpointless-recipes-finetune.md)
+ [チュートリアル - Amazon SageMaker HyperPod チェックポイントレス PEFT-LoRA GPT OSS 120b](sagemaker-eks-checkpointless-recipes-peft.md)
+ [チュートリアル - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b](sagemaker-eks-checkpointless-recipes-pretraining-llama3.md)
+ [チュートリアル - Amazon SageMaker HyperPod Checkpointless PEFT-LoRA Llama 3 70b](sagemaker-eks-checkpointless-recipes-peft-llama.md)
+ [チュートリアル - Amazon SageMaker HyperPod チェックポイントレス事前トレーニングまたはカスタムモデルの微調整](sagemaker-eks-checkpointless-recipes-custom.md)

# チュートリアル - Amazon SageMaker HyperPod チェックポイントレスフルファインチューニング GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-finetune"></a>

HyperPod でチェックポイントレストレーニングレシピを実行するには、次の一連のステップが必要です。

## 前提条件
<a name="sagemaker-eks-checkpointless-recipes-finetune-prereqs"></a>

環境のセットアップを開始する前に、以下を確認します。
+ [ Amazon SageMaker HyperPod での Amazon EKS サポートの有効化 HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod トレーニングオペレーターを設定する (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
+ 以下の形式のいずれか。
  + JSON
  + JSONGZ (圧縮 JSON)
  + ARROW
+ Llama 70B または GPT-OSS 120B でサポートされているチェックポイントレストレーニングレシピを[ソース](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)から選択します。
+ [ ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)。 [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ 環境をセットアップする

## Kubernetes 環境のセットアップ
<a name="sagemaker-eks-checkpointless-finetune-recipes-kubernetes"></a>

Kubernetes 環境を設定するには、以下を実行します。

1. 仮想環境をセットアップします。Python のバージョンが 3.10 以上、3.14 未満であることを確認します。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl と eksctl のセットアップ](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [ Helm のインストール](https://helm.sh/docs/intro/install/)

1. Kubernetes クラスターに接続する

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 以下のいずれかの方法で、依存関係をインストールします。

   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
      ```

   1. 方法 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 ランチャーを使用してトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-finetune-launcher"></a>

Amazon SageMaker HyperPod レシピを使用して、トレーニングジョブを送信できます。レシピを使用するには、k8s.yaml、config.yaml を更新し、起動スクリプトを実行します。

1. `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh` の更新

   your\$1container: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。

   ```
   #!/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 \
   ```

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 でトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-finetune-kubectl"></a>

もう 1 つのオプションは、事前定義されたジョブ yaml を使用して kubectl を介してトレーニングを起動することです。

1. examples/gpt\$1oss/launch/full\$1finetune\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml を更新する
   + イメージ: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。
   + resume.restore\$1config.path=<path\$1to\$1pretrained\$1weights>: [ 前提条件](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)ステップで Nemo 形式の事前トレーニング済みモデル幅をダウンロードするためのパス。
   + dataset.dataset\$1path=<path\$1to\$1dataset>: 共有ストレージに保存されているデータセットへのパス

1. full\$1finetune\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.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 になります。

# チュートリアル - Amazon SageMaker HyperPod チェックポイントレス PEFT-LoRA GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></a>

HyperPod でチェックポイントレストレーニングレシピを実行するには、次の一連のステップが必要です。

## 前提条件
<a name="sagemaker-eks-checkpointless-recipes-peft-prereqs"></a>

環境のセットアップを開始する前に、以下を確認します。
+ [ Amazon SageMaker HyperPod での Amazon EKS サポートの有効化 HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod トレーニングオペレーターを設定する (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
+ 以下の形式のいずれか。
  + JSON
  + JSONGZ (圧縮 JSON)
  + ARROW
+ Llama 70B または GPT-OSS 120B でサポートされているチェックポイントレストレーニングレシピを[ソース](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)から選択します。
+ [ ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)。 [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ 環境をセットアップする

## Kubernetes 環境のセットアップ
<a name="sagemaker-eks-checkpointless-recipes-peft-kubernetes"></a>

Kubernetes 環境を設定するには、以下を実行します。

1. 仮想環境をセットアップします。Python が 3.10 以上かつ < 3.14 以上を使用していることを確認します。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl と eksctl をセットアップする](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [ Helm のインストール](https://helm.sh/docs/intro/install/)

1. 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
     ```
   + 事前定義されたジョブ 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 を使用してチェックポイントレストレーニングレシピを起動できるようになりました。

## レシピランチャーを使用してトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

または、SageMaker HyperPod レシピを使用してトレーニングジョブを送信することもできます。レシピを使用するには、k8s.yaml、config.yaml を更新し、起動スクリプトを実行します。

1. `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh` の更新

   your\$1contrainer: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。

   ```
   #!/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_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 \
   ```

1. トレーニングジョブを起動する

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.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 でトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-peft-kubectl"></a>

もう 1 つのオプションは、事前定義されたジョブ yaml を使用して kubectl を介してトレーニングを起動することです。

1. examples/gpt\$1oss/launch/peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml を更新する
   + イメージ: Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。
   + resume.restore\$1config.path=<path\$1to\$1pretrained\$1weights>: [ 前提条件](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs)ステップで Nemo 形式でダウンロードされた事前トレーニング済みモデルの重みへのパス。
   + dataset.dataset\$1path=<path\$1to\$1dataset>: 共有ストレージに保存されているデータセットへのパス

1. peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml で kubectl を使用してジョブを送信する

   ```
   kubectl apply -f examples/gpt_oss/launch/peft_gpt_oss_120b_checkpointless_p5.yaml
   ```

トレーニングジョブを送信したら、次のコマンドを使用して、送信が正常に完了したかどうかを確認できます。

```
kubectl get pods

NAME                                             READY   STATUS             RESTARTS        AGE
gpt-120b-lora-checkpointless-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 になります。

# チュートリアル - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3"></a>

HyperPod でチェックポイントレストレーニングレシピを実行するには、次の一連のステップが必要です。

## 前提条件
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-prereqs"></a>

環境のセットアップを開始する前に、以下を確認します。
+ [ Amazon SageMaker HyperPod での Amazon EKS サポートの有効化 HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod トレーニングオペレーターを設定する (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
+ 以下の形式のいずれか。
  + JSON
  + JSONGZ (圧縮 JSON)
  + ARROW
+ Llama 70B または GPT-OSS 120B でサポートされているチェックポイントレストレーニングレシピを[ソース](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)から選択します。
+ [ ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)。 [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ 環境をセットアップする

## Kubernetes 環境のセットアップ
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubernetes"></a>

Kubernetes 環境を設定するには、以下を実行します。

1. 仮想環境をセットアップします。Python が 3.10 以上、3.14 未満を使用していることを確認します。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl と eksctl のセットアップ](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [ Helm のインストール](https://helm.sh/docs/intro/install/)

1. Kubernetes クラスターに接続する

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 以下のいずれかの方法で、依存関係をインストールします。

   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
      ```

   1. 方法 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 を使用してチェックポイントレストレーニングレシピを起動できるようになりました。

## 方法 1: recipes ランチャーを使用してトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-recipes-launcher"></a>

または、SageMaker HyperPod レシピを使用してトレーニングジョブを送信することもできます。レシピを使用するには、k8s.yaml、config.yaml を更新し、起動スクリプトを実行します。

1. `launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh` の更新

   Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。

   ```
   #!/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}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=training/llama/checkpointless_llama3_70b_pretrain \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.data.global_batch_size=16 \
       recipes.data.micro_batch_size=4 \
       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 \
   ```

1. トレーニングジョブを起動する

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
   ```

1. トレーニングジョブを送信したら、次のコマンドを使用して、送信が正常に完了したかどうかを確認できます。

   ```
   kubectl get pods
   
   NAME                             READY   STATUS             RESTARTS        AGE
   llama-3-70b-worker-0             0/1    running               0            36s
   ```

1. STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。

   ```
   kubectl describe pod <name of pod>
   ```

1. ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。

   ```
   kubectl logs <name of pod>
   ```

   kubectl get pods を実行すると、STATUS は Completed になります。

## 方法 2: 事前定義された yaml を使用して kubectl でトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubectl"></a>

もう 1 つのオプションは、事前定義されたジョブ yaml を使用して kubectl を介してトレーニングを起動することです。

1. `examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml` の更新
   + `image`: 深層学習コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。
   + `resume.restore_config.path=<path_to_pretrained_weights>`: [前提条件](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)ステップで Nemo 形式でダウンロードされた事前トレーニング済みモデルの重みへのパス。
   + `dataset.dataset_path=<path_to_dataset>`: 共有ストレージに保存されたデータセットへのパス

1. で kubectl を使用してジョブを送信する `pretrain_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
   ```

1. トレーニングジョブを送信したら、次のコマンドを使用して、送信が正常に完了したかどうかを確認できます。

   ```
   kubectl get pods
   
   NAME                                             READY   STATUS             RESTARTS        AGE
   llama3-pretrain-checkpointless-worker-0             0/1    running               0            36s
   ```

1. STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。

   ```
   kubectl describe pod <name of pod>
   ```

1. ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。

   ```
   kubectl logs <name of pod>
   ```

   kubectl get pods を実行すると、STATUS は Completed になります。

# チュートリアル - Amazon SageMaker HyperPod Checkpointless PEFT-LoRA Llama 3 70b
<a name="sagemaker-eks-checkpointless-recipes-peft-llama"></a>

HyperPod でチェックポイントレストレーニングレシピを実行するには、次の一連のステップが必要です。

## 前提条件
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-prereqs"></a>

環境のセットアップを開始する前に、以下を確認します。
+ [ Amazon SageMaker HyperPod での Amazon EKS サポートの有効化 HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod トレーニングオペレーターを設定する (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
+ 以下の形式のいずれか。
  + JSON
  + JSONGZ (圧縮 JSON)
  + ARROW
+ Llama 70B または GPT-OSS 120B でサポートされているチェックポイントレストレーニングレシピを[ソース](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)から選択します。
+ [ ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)。 [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ 環境をセットアップする

## Kubernetes 環境のセットアップ
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-kubernetes"></a>

Kubernetes 環境を設定するには、以下を実行します。

1. 仮想環境をセットアップします。Python が 3.10 以上、3.14 未満を使用していることを確認します。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl と eksctl をセットアップする](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [ Helm のインストール](https://helm.sh/docs/intro/install/)

1. Kubernetes クラスターに接続する

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 以下のいずれかの方法で、依存関係をインストールします。

   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
      ```

   1. 方法 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 を使用してチェックポイントレストレーニングレシピを起動できるようになりました。

## 方法 1: recipes ランチャーを使用してトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-recipes-launcher"></a>

または、SageMaker HyperPod レシピを使用してトレーニングジョブを送信することもできます。レシピを使用するには、k8s.yaml、config.yaml を更新し、起動スクリプトを実行します。

1. `launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh` の更新

   Deep Learning コンテナ。チェックポイントレストレーニングコンテナの最新リリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。

   ```
   #!/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 \
   ```

1. トレーニングジョブを起動する

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh
   ```

1. トレーニングジョブを送信したら、次のコマンドを使用して、送信が正常に完了したかどうかを確認できます。

   ```
   kubectl get pods
   
   NAME                             READY   STATUS             RESTARTS        AGE
   llama-3-70b-worker-0             0/1    running               0            36s
   ```

1. STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。

   ```
   kubectl describe pod <name of pod>
   ```

1. ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。

   ```
   kubectl logs <name of pod>
   ```

   kubectl get pods を実行すると、STATUS は Completed になります。

## 方法 2: 事前定義された yaml を使用して kubectl でトレーニングジョブを起動する
<a name="sagemaker-eks-checkpointless-recipes-peft-llama-kubectl"></a>

もう 1 つのオプションは、事前定義されたジョブ yaml を使用して kubectl を介してトレーニングを起動することです。

1. `examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml` の更新
   + `image`: 深層学習コンテナ。チェックポイントレストレーニングコンテナの最新のリリースを確認するには、[「チェックポイントレストレーニングリリースノート](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)」を参照してください。
   + `resume.restore_config.path=<path_to_pretrained_weights>`: [前提条件](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs)ステップで Nemo 形式でダウンロードされた事前トレーニング済みモデルの重みへのパス。
   + `dataset.dataset_path=<path_to_dataset>`: 共有ストレージに保存されたデータセットへのパス

1. で kubectl を使用してジョブを送信する `peft_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml
   ```

1. トレーニングジョブを送信したら、次のコマンドを使用して、送信が正常に完了したかどうかを確認できます。

   ```
   kubectl get pods
   
   NAME                                             READY   STATUS             RESTARTS        AGE
   llama3-70b-lora-checkpointless-worker-0             0/1    running               0            36s
   ```

1. STATUS が PENDING または ContainerCreating の場合、次のコマンドを実行して詳細を取得します。

   ```
   kubectl describe pod <name of pod>
   ```

1. ジョブのステータスが「実行中」に変わったら、以下のコマンドを使用してログを確認できます。

   ```
   kubectl logs <name of pod>
   ```

   kubectl get pods を実行すると、STATUS は Completed になります。

# チュートリアル - Amazon SageMaker HyperPod チェックポイントレス事前トレーニングまたはカスタムモデルの微調整
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

HyperPod でカスタムモデルを使用してチェックポイントレストレーニングを実行するには、次の一連のステップが必要です。

## 前提条件
<a name="sagemaker-eks-checkpointless-recipes-custom-prereqs"></a>

環境のセットアップを開始する前に、以下を確認します。
+ [ Amazon SageMaker HyperPod での Amazon EKS サポートの有効化 HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod トレーニングオペレーターを設定する (v1.2 以降)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 共有ストレージの場所。クラスターノードからアクセスできる Amazon FSx ファイルシステムまたは NFS システムでかまいません。
+ 以下の形式のいずれか。
  + JSON
  + JSONGZ (圧縮 JSON)
  + ARROW
+ [ ハギングフェイスモデルの重みとシークレットを Nemo がサポートする形式にダウンロードします](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)。 [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ 環境をセットアップする

## Kubernetes 環境のセットアップ
<a name="sagemaker-eks-checkpointless-recipes-custom-kubernetes"></a>

Kubernetes 環境を設定するには、以下を実行します。

1. 仮想環境をセットアップします。Python が 3.10 以上 3.14 未満を使用していることを確認します。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl と eksctl をセットアップする](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. Kubernetes クラスターに接続する

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 依存関係のインストール

   ```
   # install SageMaker HyperPod checkpointless training.
   git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
   cd sagemaker-hyperpod-checkpointless-training
   ```

## チェックポイントレストレーニングの変更手順
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

カスタムモデルのチェックポイントレストレーニングを段階的に採用するには、統合ガイド (ここでは Llama 3 70b 事前トレーニングを例として使用) に従ってください。これには、以下が含まれます。
+ 高速コミュニケーターの作成
+ メモリマップデータローダー (MMAP)
+ 処理中およびチェックポイントレスリカバリ

### コンポーネント 1: 高速コミュニケーターの作成
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

これは、ワーカー間の接続を確立する時間を最適化するためです。コードの変更は不要で、env 変数の設定のみが必要

```
  # Enable Rootless features
  export HPCT_USE_ROOTLESS=1 && \
  sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \

  hyperpodrun --nproc_per_node=8 \
              ...
              --inprocess-restart \
              ...
```

完全な変更は、[llama3 70 トレーニング前起動ジョブ設定](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml)で確認できます。

### コンポーネント 2: メモリマップデータローダー (MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

プリフェッチされたデータサンプルを保存し、データの前処理を待つことなくすぐにトレーニングを開始するための MMAP キャッシュ。既存のデータローダーをラップすることで、採用するコードの変更を最小限に抑える必要があります。

```
data_module = MMAPDataModule(
  data_module=base_data_module,
  mmap_config=CacheResumeMMAPConfig(cache_dir=…)
)
```

### コンポーネント 3 および 4: 処理中およびチェックポイントレスリカバリ
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

これにより、トレーニングプロセスを再起動したり、チェックポイントからロードしたりすることなく、障害復旧が可能になります。追加のコード変更が必要 (戦略とトレーニング設定の更新、既存のメインのラップ)

```
@HPWrapper(
  health_check=CudaHealthCheck(),
  hp_api_factory=HPAgentK8sAPIFactory(),
  abort_timeout=60.0,
...)
def run_main(
  cfg,
  caller: Optional[HPCallWrapper] = None):
...


CheckpointlessMegatronStrategy(
  **self.cfg.strategy,
  ddp=self.ddp,
)
```

完全な変更は [llama3 70 トレーニング前エントリスクリプト](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py)にあり、対応するトレーニング設定の変更は [ llama3 70b トレーニング設定](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml)にあります。

### トレーニングの起動
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

kubectl を使用してチェックポイントレストレーニングを起動できるようになりました。

```
kubectl apply -f your_job_config.yaml
```