Alibaba Cloud Container Compute Service (ACS) は、サーバーレスモデルでコンテナーの計算能力を提供します。GPU リソースを使用する場合、Pod の構成で GPU モデルと ACS がサポートするドライバーバージョンを指定できます。この機能により、インフラストラクチャの管理と O&M コストが大幅に削減されます。このトピックでは、Pod の作成時に GPU モデルとドライバーバージョンを指定する方法について説明します。
GPU モデルの説明
ACS は複数の GPU モデルをサポートしています。GPU 容量予約 で使用するか、Pod の作成時にオンデマンドでリクエストできます。使用方法は、以下で説明するように、コンピューティングクラスごとに異なります。
パフォーマンス専有型ネットワーク GPU クラス
このクラスはノード予約のみをサポートします。購入後、予約をクラスターに関連付ける必要があります。各リソース予約は、Pod が使用できるクラスター内の独立した仮想ノードとして表されます。詳細については、「GPU-HPN 容量予約」をご参照ください。
GPU クラス
このクラスは、従量課金と容量予約の両方をサポートします。Pod が作成されると、利用可能な 容量予約 が自動的に使用されます。
現在サポートされている GPU モデルのリストを取得するには、チケットを送信してください。
Pod の GPU モデルの指定
パフォーマンス専有型ネットワーク GPU クラスの場合、ノード予約を使用してのみリソースをリクエストできます。予約された各リソースは、クラスター内の独立した仮想ノードとして表されます。仮想ノードのラベルは GPU モデルを指定します。これらのリソースは、ノードアフィニティスケジューリング を構成することで使用できます。詳細については、「属性ラベルに基づいてパフォーマンス専有型ネットワーク GPU 仮想ノードにアプリケーションをスケジュールする」をご参照ください。
GPU アクセラレーションクラスの場合、Pod の labels と nodeSelector で GPU モデルを明示的に指定する必要があります。次のセクションでは、その方法について説明します。
コンピューティングクラス | プロトコルフィールド | 例 |
パフォーマンス専有型ネットワーク GPU タイプ | spec.nodeSelector | |
GPU タイプ | metadata.labels[ alibabacloud.com/gpu-model-series] | |
ドライバーバージョンの説明
GPU アプリケーションは通常、実行に Compute Unified Device Architecture (CUDA) を使用します。CUDA は、2007 年に NVIDIA によって導入された並列計算プラットフォームおよびプログラミングモデルです。次の図は、CUDA アーキテクチャを示しています。CUDA ソフトウェアスタックのドライバーレイヤー API とランタイムレイヤー API は、次の点で異なります。
ドライバー API: より包括的な機能を提供しますが、使用が複雑です。
CUDA ランタイム API: 一部のドライバー API をカプセル化し、特定のドライバー初期化操作を非表示にし、使いやすくなっています。
CUDA ドライバー API は NVIDIA ドライバー パッケージによって提供されます。CUDA ライブラリと CUDA ランタイムは CUDA Toolkit パッケージによって提供されます。

ACS クラスターで GPU アプリケーションを実行する場合は、次の点を考慮してください。
コンテナーイメージに CUDA Toolkit をインストールするときは、NVIDIA が提供する CUDA ベースイメージ を使用します。これらのベースイメージには、CUDA Toolkit がプリインストールされています。その後、これらのベースイメージのいずれかに基づいてアプリケーションコンテナーイメージをビルドできます。さまざまな CUDA ベースイメージを選択して、さまざまな CUDA Toolkit バージョンを使用できます。
アプリケーションを作成するときは、Pod が必要とするドライバーバージョンを指定します。詳細については、「Pod のドライバーバージョンを指定する」をご参照ください。
CUDA Toolkit と NVIDIA ドライバーのバージョン互換性の詳細については、NVIDIA の公式ドキュメント「CUDA Toolkit Release Notes」をご参照ください。
アプリケーションで使用される CUDA ランタイム API のバージョンは、コンテナーイメージのビルドに使用される CUDA ベースイメージのバージョンと同じです。たとえば、アプリケーションのコンテナーイメージが CUDA ベースイメージ NVIDIA/CUDA:12.2.0-base-Ubuntu20.04 に基づいてビルドされている場合、アプリケーションで使用される CUDA ランタイム API のバージョンは 12.2.0 です。
Pod のドライバーバージョンの指定
ACS では、アプリケーションが GPU リソースを使用するときに、Pod ラベルを使用して必要なドライバーバージョンを指定できます。次のフォーマットを使用します。
コンピューティングクラス | プロトコルフィールド | 例 |
GPU タイプ | metadata.labels[alibabacloud.com/gpu-driver-version] | |
パフォーマンス専有型ネットワーク GPU タイプ | |
GPU ドライバーバージョン
Pod のドライバーバージョンを指定するときは、指定したバージョンが ACS がサポートするドライバーバージョンのリストに含まれていることを確認してください。詳細については、「GPU ドライバーバージョンの説明」をご参照ください。
Pod のデフォルト GPU ドライバーバージョン
ACS では、特定のルールに基づいて Pod の特定のプロパティを構成できます。デフォルトのドライバーバージョンがニーズを満たさない場合は、kube-system/acs-profile に次の構成を追加して、特定のタイプの GPU Pod に異なる GPU ドライバーバージョンを設定できます。詳細については、「セレクターの構成」をご参照ください。
次の構成では、クラスター内の gpu-hpn コンピューティングクラスのすべての Pod のドライバーバージョンを 1.5.0 に設定します。
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": "1.5.0"
}
}
}
]例
次の YAML コンテンツを含む gpu-pod-with-model-and-driver.yaml という名前のファイルを作成します。マニフェストは、example-model GPU リソースとドライバーバージョン 535.161.08 をリクエストする gpu コンピューティングクラスの Pod を記述しています。
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 のラベルの構成と一致しています。
重要上記の出力は一例です。実際の出力は、動作環境によって異なります。