コンテナでグラフィック プロセッシング ユニット(GPU)リソースを有効にして管理できます。たとえば、GPU 環境で AI と ML のノートブックを実行することが望ましい場合があります。GPU コンテナ ワークロードを実行するには、GPU デバイスをサポートする Kubernetes クラスタが必要です。GPU マシンがプロビジョニングされている Kubernetes クラスタでは、GPU サポートはデフォルトで有効になっています。
始める前に
コンテナに GPU をデプロイするには、次のものが必要です。
GPU マシンクラスを含む Kubernetes クラスタ。クラスタ マシンで構成できるオプションについては、サポートされている GPU カードのセクションをご覧ください。
GPU を確認するためのユーザー クラスタ ノード閲覧者ロール(
user-cluster-node-viewer
)と、プロジェクト Namespace に GPU ワークロードをデプロイするための Namespace 管理者ロール(namespace-admin
)。Kubernetes クラスタをホストするゾーン管理 API サーバーの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。
GPU をホストするゾーンの組織インフラストラクチャ クラスタの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。
Kubernetes クラスタ名。この情報がない場合は、プラットフォーム管理者に問い合わせてください。
Kubernetes クラスタの kubeconfig パス。kubeconfig ファイルがない場合は、ログインして生成します。
GPU リソースを使用するようにコンテナを構成する
コンテナでこれらの GPU を使用するには、次の操作を行います。
Kubernetes クラスタに GPU をサポートするノードプールがあることを確認します。
kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \ --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
関連する出力は次のスニペットのようになります。
Spec: Machine Class Name: a2-ultragpu-1g-gdc Node Count: 2
サポートされている GPU マシンタイプと Multi-Instance GPU(MIG)プロファイルの完全なリストについては、クラスタノードのマシンタイプをご覧ください。
コンテナ仕様に
.containers.resources.requests
フィールドと.containers.resources.limits
フィールドを追加します。各リソース名は、マシンクラスによって異なります。GPU リソースの割り当てを確認して、GPU リソース名を確認します。たとえば、次のコンテナ仕様は、
a2-ultragpu-1g-gdc
ノードから GPU の 3 つのパーティションをリクエストします。... containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 ...
コンテナが GPU にアクセスするには、追加の権限も必要です。GPU をリクエストするコンテナごとに、次の権限をコンテナ仕様に追加します。
... securityContext: seLinuxOptions: type: unconfined_t ...
コンテナ マニフェスト ファイルを適用します。
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
GPU リソースの割り当てを確認する
GPU リソースの割り当てを確認するには、次のコマンドを使用します。
kubectl describe nodes NODE_NAME
NODE_NAME
は、検査する GPU を管理するノードに置き換えます。関連する出力は次のスニペットのようになります。
Capacity: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
GPU のリソース名をメモします。GPU リソースを使用するようにコンテナを構成するときに、これらのリソース名を指定する必要があります。