2.3. カスタムトレーニングイメージの管理
分散トレーニングジョブを実行するには、OpenShift AI に付属するベーストレーニングイメージのいずれかを使用するか、独自のカスタムトレーニングイメージを作成できます。オプションで、カスタムトレーニングイメージを統合された OpenShift イメージレジストリーにプッシュすることで、他のユーザーによるイメージの利用を可能にすることもできます。
2.3.1. ベーストレーニングイメージについて リンクのコピーリンクがクリップボードにコピーされました!
分散ワークロードのベーストレーニングイメージは、分散トレーニングジョブの実行に必要なツールとライブラリーを使用して最適化されています。提供されているベースイメージを使用することも、ニーズに応じたカスタムイメージを作成することもできます。
トレーニングイメージとパッケージに対する Red Hat のサポートに関する詳細は、Red Hat OpenShift AI: サポートされる構成 を参照してください。
次の表は、Red Hat OpenShift AI と併せてデフォルトでインストールされているトレーニングイメージを示しています。これらのイメージは AMD64 イメージであり、他のアーキテクチャーでは動作しない可能性があります。
イメージタイプ | 説明 |
---|---|
Ray CUDA | 計算集約型モデルを使用しており、NVIDIA GPU サポートを使用してトレーニングジョブを高速化する場合は、Ray Compute Unified Device Architecture (CUDA) ベースイメージを使用して NVIDIA CUDA Toolkit にアクセスできます。このツールキットを使用すると、NVIDIA GPU 向けに最適化されたライブラリーとツールを使用して作業を高速化できます。 |
Ray ROCm | 計算集約型モデルを使用しており、AMD GPU サポートを使用してトレーニングジョブを高速化する場合は、Ray ROCm ベースイメージを使用して AMD ROCm ソフトウェアスタックにアクセスできます。このソフトウェアスタックを使用すると、AMD GPU 向けに最適化されたライブラリーとツールを使用して作業を高速化できます。 |
KFTO CUDA | 計算集約型モデルを使用しており、NVIDIA GPU サポートを使用してトレーニングジョブを高速化する場合は、Kubeflow Training Operator CUDA ベースイメージを使用して NVIDIA CUDA Toolkit にアクセスできます。このツールキットを使用すると、NVIDIA GPU 向けに最適化されたライブラリーとツールを使用して作業を高速化できます。 |
KFTO ROCm | 計算集約型モデルを使用しており、AMD GPU サポートを使用してトレーニングジョブを高速化する場合は、Kubeflow Training Operator ROCm ベースイメージを使用して AMD ROCm ソフトウェアスタックにアクセスできます。このソフトウェアスタックを使用すると、AMD GPU 向けに最適化されたライブラリーとツールを使用して作業を高速化できます。 |
これらのイメージで提供されるプリインストールされたパッケージがユースケースに十分でない場合は、次のオプションがあります。
- デフォルトのイメージを起動した後、追加のライブラリーをインストールします。このオプションは、トレーニングジョブの実行時にアドホックベースでライブラリーを追加する場合に適しています。ただし、インストールされたライブラリーの依存関係の管理は難しい場合があります。
- 追加のライブラリーまたはパッケージを含むカスタムイメージを作成します。詳細は、カスタムトレーニングイメージの作成 を参照してください。
2.3.2. カスタムトレーニングイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
ベーストレーニングイメージにパッケージを追加することで、カスタムトレーニングイメージを作成できます。
前提条件
カスタムイメージのベースとして使用するトレーニングイメージにアクセスできる。
イメージタイプ (Ray や Kubeflow Training Operator など)、アクセラレーターフレームワーク (NVIDIA GPU の場合は CUDA、AMD GPU の場合は ROCm など)、および Python バージョン (3.9 または 3.11 など) に基づいてイメージを選択します。
以下の表は、基本トレーニングイメージの例を示しています。
Expand 表2.2 基本トレーニングイメージの例 イメージタイプ アクセラレーターフレームワーク Python バージョン 基本トレーニングイメージの例 インストール済みパッケージ Ray
CUDA
3.9
ray:2.35.0-py39-cu121
ray 2.35.0、Python 3.9、CUDA 12.1
Ray
CUDA
3.11
ray:2.35.0-py311-cu121
ray 2.35.0、Python 3.11、CUDA 12.1
Ray
ROCm
3.9
ray:2.35.0-py39-rocm62
Ray 2.35.0、Python 3.9、ROCm 6.2
Ray
ROCm
3.11
ray:2.35.0-py311-rocm62
ray 2.35.0、Python 3.11、ROCm 6.2
KFTO
CUDA
3.11
training:py311-cuda121-torch241
Python 3.11、CUDA 12.1、PyTorch 2.4.1
KFTO
ROCm
3.11
training:py311-rocm62-torch241
Python 3.11、ROCm 6.2、PyTorch 2.4.1
OpenShift AI ベースのトレーニングイメージとそのプリインストールパッケージの完全なリストは、サポートされる構成 を参照してください。
ローカル環境に Podman がインストールされており、コンテナーレジストリーにアクセスできる。
Podman とコンテナーレジストリーの詳細は、コンテナーのビルド、実行、管理 を参照してください。
手順
- ターミナルウィンドウで、作業用のディレクトリーを作成し、そのディレクトリーに移動します。
IMG
環境変数をカスタムイメージの名前に設定します。このセクションのコマンド例では、my_training_image
がカスタムイメージの名前です。export IMG=my_training_image
export IMG=my_training_image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容を含むファイルを、
Dockerfile
という名前で作成します。FROM
命令を使用して、適切なベーストレーニングイメージの場所を指定します。以下のコマンドで、
_<base-training-image>_
を選択した基本トレーニングイメージの名前に置き換えます。FROM quay.io/modh/<base-training-image>
FROM quay.io/modh/<base-training-image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例:
FROM quay.io/modh/ray:2.35.0-py311-cu121
FROM quay.io/modh/ray:2.35.0-py311-cu121
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FROM quay.io/modh/training:py311-rocm62-torch241
FROM quay.io/modh/training:py311-rocm62-torch241
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 追加パッケージをインストールするには、
RUN
命令を使用します。各コメント行の先頭に番号記号 (#
) を付けることで、Dockerfile にコメントを追加することもできます。次の例は、Python PyTorch パッケージの特定バージョンをインストールする方法を示しています。
Install PyTorch
# Install PyTorch RUN python3 -m pip install torch==2.4.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
イメージファイルをビルドします。イメージの参照と管理を容易にするために、
podman build
コマンドで-t
オプションを使用して、カスタムイメージ名とバージョンを指定するイメージタグを作成します。podman build -t <custom-image-name>:_<version>_ -f Dockerfile
podman build -t <custom-image-name>:_<version>_ -f Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
podman build -t ${IMG}:0.0.1 -f Dockerfile
podman build -t ${IMG}:0.0.1 -f Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ビルド出力は、ビルドプロセスが完了したことを示します。
イメージのリストを表示します。
podman images
podman images
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいイメージが正常に作成された場合、そのイメージはイメージのリストに含まれます。
イメージをコンテナーレジストリーにプッシュします。
podman push ${IMG}:0.0.1
podman push ${IMG}:0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オプション: 統合 OpenShift イメージレジストリーにイメージをプッシュする の説明に従って、新しいイメージを他のユーザーが利用できるようにします。
2.3.3. 統合された OpenShift イメージレジストリーにイメージをプッシュする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift クラスター内の他のユーザーがイメージを使用できるようにするには、ビルトインコンテナーイメージレジストリーである 統合 OpenShift イメージレジストリー にイメージをプッシュします。
統合 OpenShift イメージレジストリーの詳細は、統合 OpenShift イメージレジストリー を参照してください。
前提条件
- クラスター管理者は、レジストリーの公開 の説明に従って、統合イメージレジストリーを公開している。
ローカル環境に Podman がインストールされている。
Podman とコンテナーレジストリーの詳細は、コンテナーのビルド、実行、管理 を参照してください。
手順
ターミナルウィンドウで、次の例に示すように OpenShift CLI にログインします。
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IMG
環境変数をイメージの名前に設定します。このセクションのコマンド例では、my_training_image
はイメージの名前です。export IMG=my_training_image
export IMG=my_training_image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 統合イメージレジストリーにログインします。
podman login -u $(oc whoami) -p $(oc whoami -t) $(oc registry info)
podman login -u $(oc whoami) -p $(oc whoami -t) $(oc registry info)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 統合イメージレジストリーのイメージにタグを付けます。
podman tag ${IMG} $(oc registry info)/$(oc project -q)/${IMG}
podman tag ${IMG} $(oc registry info)/$(oc project -q)/${IMG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを統合イメージレジストリーにプッシュします。
podman push $(oc registry info)/$(oc project -q)/${IMG}
podman push $(oc registry info)/$(oc project -q)/${IMG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なタグのイメージリポジトリーの場所を取得します。
oc get is ${IMG} -o jsonpath='{.status.tags[?(@.tag=="<TAG>")].items[0].dockerImageReference}'
oc get is ${IMG} -o jsonpath='{.status.tags[?(@.tag=="<TAG>")].items[0].dockerImageReference}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーは、取得したイメージの場所の値を Ray クラスターまたはトレーニングジョブの
image
パラメーターに指定することでイメージを使用できます。