

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

# チュートリアル - 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
```