Alibaba Cloud Container Compute Service (ACS) は、コンテナ向けのサーバーレスコンピューティング能力を提供します。GPU リソースを使用する際、ACS では Pod で GPU モデルとサポートされているドライバーバージョンを指定できます。この機能により、インフラ管理と O&M コストが大幅に削減されます。このトピックでは、Pod の作成時に GPU モデルとドライバーバージョンを指定する方法について説明します。
GPU モデル
ACS は複数の GPU モデルをサポートしています。これらのモデルは キャパシティー予約 で使用するか、Pod の作成時にオンデマンドでリクエストできます。使用する方法は、コンピューティングクラスによって異なります。
高性能ネットワーク GPU
ノード予約のみリクエストできます。予約を購入した後、各予約をクラスターに関連付ける必要があります。各予約は、クラスター内で独立した仮想ノードとして実行されます。詳細については、「GPU-HPN キャパシティー予約」をご参照ください。
GPU インスタンス
GPU リソースをオンデマンドで使用するか、キャパシティー予約を設定できます。Pod を作成した後、ACS は自動的に キャパシティー予約 から GPU リソースを差し引きます。
サポートされている GPU モデルのリストを表示するには、してください。
Pod の GPU モデルの指定
GPU-HPN の場合、ノード予約のみリクエストできます。各予約はクラスター内で仮想ノードとして実行されます。仮想ノードの label には GPU モデルが含まれます。ノードアフィニティスケジューリング を使用して、Pod をその仮想ノードにスケジューリングできます。詳細については、「属性 label を使用して GPU-HPN 仮想ノードに Pod をスケジューリングする」をご参照ください。
GPU 高速化 Pod の場合、Pod の labels と nodeSelector フィールドで GPU モデルを明示的に指定する必要があります。
コンピューティングクラス | プロトコルフィールド | 例 |
高性能ネットワーク GPU インスタンスタイプ | spec.nodeSelector | |
GPU インスタンスタイプ | metadata.labels[ alibabacloud.com/gpu-model-series] | |
ドライバーバージョン
GPU アプリケーションは通常、2007 年に NVIDIA がリリースした並列コンピューティングプラットフォームおよびプログラミングモデルである Compute Unified Device Architecture (CUDA) に依存しています。次の図は、CUDA アーキテクチャを示しています。CUDA ソフトウェアスタックのドライバー API とランタイム API は、次の点で異なります。
ドライバー API:全機能を提供しますが、使用が複雑です。
ランタイム API:ドライバー API の一部をラップし、一部のドライバー初期化手順を隠蔽します。より簡単に使用できます。
CUDA ドライバー API は NVIDIA ドライバー パッケージに含まれています。CUDA ライブラリと CUDA ランタイムは CUDA Toolkit パッケージに含まれています。

ACS クラスターで GPU アプリケーションを実行する場合は、次の点に注意してください。
NVIDIA が提供する CUDA ベースイメージ を使用して、コンテナイメージに CUDA Toolkit をインストールしてください。これらのベースイメージには、すでに CUDA Toolkit が含まれています。その後、アプリケーションが必要とする特定の CUDA Toolkit バージョンに一致するベースイメージの上に、直接アプリケーションイメージをビルドできます。
Pod の作成時にドライバーバージョンを指定する方法については、「Pod のドライバーバージョンを指定する」をご参照ください。
CUDA Toolkit と NVIDIA ドライバーの互換性については、NVIDIA の公式ドキュメント「CUDA Toolkit リリースノート」をご参照ください。
アプリケーションが使用する CUDA ランタイム API のバージョンは、そのコンテナイメージのビルドに使用される CUDA ベースイメージのバージョンと一致する必要があります。たとえば、コンテナイメージが CUDA ベースイメージ NVIDIA/CUDA:12.2.0-base-Ubuntu20.04 からビルドされている場合、アプリケーションは CUDA ランタイム API バージョン 12.2.0 を使用します。
Pod のドライバーバージョンの指定
ACS では、アプリケーションが GPU リソースを使用する際に、Pod の label を使用してドライバーバージョンを指定できます。次の表に示す形式を使用してください。
コンピューティングクラス | プロトコルフィールド | 例 |
GPU インスタンス | metadata.labels[alibabacloud.com/gpu-driver-version] | |
高性能ネットワーク GPU インスタンス | |
GPU ドライバーバージョン
指定するドライバーバージョンが ACS でサポートされていることを確認してください。詳細については、「サポートされている GPU ドライバーバージョン」をご参照ください。
Pod のデフォルト GPU ドライバーバージョン
ACS では、ルールを使用して特定の Pod 属性を設定できます。デフォルトのドライバーバージョンが要件を満たさない場合は、kube-system/acs-profile ConfigMap に次の設定を追加することで、特定のタイプの GPU Pod に異なる GPU ドライバーバージョンを割り当てることができます。詳細については、「セレクターの設定」をご参照ください。
次の設定では、クラスター内のすべての GPU-HPN Pod のドライバーバージョンを 535.161.08 に設定します。
apiVersion: v1
kind: ConfigMap
metadata:
name: acs-profile
namespace: kube-system
data:
# 他のシステム設定は変更しません。
selectors: |
[
{
"name": "gpu-hpn-driver",
"objectSelector": {
"matchLabels": {
"alibabacloud.com/compute-class": "gpu-hpn"
}
},
"effect": {
"labels": {
"alibabacloud.com/gpu-driver-version": "535.161.08"
}
}
}
]例
gpu-pod-with-model-and-driver.yamlという名前のファイルを作成し、次の YAML コンテンツをファイルに追加してください。このファイルは、gpuコンピューティングクラスを持つ Pod を定義します。Pod は、example-modelモデルと535.161.08ドライバーバージョンを持つ GPU をリクエストします。apiVersion: v1 kind: Pod metadata: name: gpu-pod-with-model-and-driver labels: # コンピューティングクラスを gpu に設定します。 alibabacloud.com/compute-class: "gpu" # GPU モデルを example-model (T4 など) に設定します。 alibabacloud.com/gpu-model-series: "example-model" # ドライバーバージョンを 535.161.08 に設定します。 alibabacloud.com/gpu-driver-version: "535.161.08" spec: containers: - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 name: tensorflow-mnist command: - sleep - infinity resources: requests: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 limits: cpu: 1 memory: 1Gi nvidia.com/gpu: 1次のコマンドを実行して、
gpu-pod-with-model-and-driver.yamlをクラスターにデプロイしてください。kubectl apply -f gpu-pod-with-model-and-driver.yaml次のコマンドを実行して、Pod のステータスを確認してください。
kubectl get pod期待される出力:
NAME READY STATUS RESTARTS AGE gpu-pod-with-model-and-driver 1/1 Running 0 87s次のコマンドを実行して、Pod 内の GPU 情報を確認してください。
説明この例の
/usr/bin/nvidia-smiコマンドは、サンプルのコンテナイメージに事前設定されています。kubectl exec -it gpu-pod-with-model-and-driver -- /usr/bin/nvidia-smi期待される出力:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI xxx.xxx.xx Driver Version: 535.161.08 CUDA Version: xx.x | |-----------------------------------------+----------------------+----------------------+ ... |=========================================+======================+======================| | x NVIDIA example-model xx | xxxxxxxx:xx:xx.x xxx | x | | xxx xxx xx xxx / xxxx | xxxx / xxx| x% xxxxxxxx| | | | xxx | +-----------------------------------------+----------------------+----------------------+出力には、GPU モデル
example-modelとドライバーバージョン535.161.08が表示され、これらは Pod 定義の label と一致しています。重要表示されている出力は参考用です。実際の結果は、環境によって異なる場合があります。