全部產品
Search
文件中心

Container Compute Service:為ACS GPU Pod指定GPU型號和驅動版本

更新時間:Oct 24, 2025

阿里雲容器計算服務ACS以Serverless形態提供容器算力,在使用GPU資源時,支援在Pod上聲明GPU型號和ACS支援的驅動版本,極大降低了業務的基礎設施管理和營運成本。本文主要介紹如何在建立Pod時指定GPU型號和驅動版本。

GPU型號說明

ACS支援多種GPU型號,您可以結合GPU容量預留使用,也可在Pod建立時按需申請。對於不同的計算類型(compute-class),使用方式如下。

  • 高效能網路GPU型

    僅支援節點預留,需要在購買後關聯集群,每份資源預留在叢集中以獨立的虛擬節點供形式Pod使用,詳見GPU-HPN容量預留

  • GPU型

    支援按量使用和容量預留兩種方式,Pod建立後會自動抵扣容量預留

說明

目前支援的GPU具體型號列表請提交工單諮詢。

為Pod指定GPU型號

對於高效能網路GPU型,其僅支援申請節點預留使用資源,每份預留資源在叢集內以獨立的虛擬節點形式存在,虛擬節點的標籤中包含了具體的GPU型號,您可以直接通過節點親和性調度配置使用,詳見基於屬性標籤將應用調度到高效能網路GPU型虛擬節點上

對於GPU型,您需要在Pod的labelsnodeSelector中顯式指定GPU型號。具體方式如下。

計算類

協議欄位

範例

高效能網路GPU型

spec.nodeSelector

apiVersion: v1
kind: Pod
metadata:
  labels:
    # 指定compute-class為gpu-hpn類型
    alibabacloud.com/compute-class: "gpu-hpn"
  name: gpu-example-pod
spec:
  nodeSelector:
 # 指定GPU型號為example-model,請按實際情況填寫
    alibabacloud.com/gpu-model-series: "example-model"
  ...

GPU型

metadata.labels[

alibabacloud.com/gpu-model-series]

apiVersion: v1
kind: Pod
metadata:
  labels:
    # 指定compute-class為gpu類型
    alibabacloud.com/compute-class: "gpu"
    # 指定GPU型號為example-model,請按實際情況填寫,如T4
    alibabacloud.com/gpu-model-series: "example-model"
  name: gpu-pod
spec:
...

驅動版本說明

GPU應用通常需要依賴CUDA(Compute Unified Device Architecture)運行,CUDA是顯卡廠商NVIDIA在2007年推出的並行計算平台和編程模型。下圖為CUDA的架構體系,CUDA軟體堆棧中的驅動層API和運行時層API有以下區別。

  • 驅動層API(Driver API):功能較完整,但是使用複雜。

  • 運行時API(CUDA Runtime API):封裝了部分驅動的API,將某些驅動初始化操作隱藏,使用方便。

CUDA的Driver API由NVIDIA Driver包提供,而CUDA Library和CUDA Runtime由CUDA Toolkit包提供。

cuda.png

在使用ACS叢集運行GPU應用時,您需要注意:

  1. 容器鏡像中安裝CUDA Toolkit時,使用NVIDIA提供的CUDA基礎鏡像。這些基礎鏡像已經安裝了CUDA Toolkit。您可以基於基礎鏡像構建應用程式容器鏡像。您也可以根據不同的CUDA Toolkit版本選擇不同的CUDA基礎鏡像。

  2. 建立應用時指定Pod所需的驅動版本,詳見為Pod指定驅動版本

  3. 關於CUDA Toolkit與NVIDIA驅動的版本相容性列表,請參見NVIDIA官方文檔CUDA Toolkit Release Notes

說明

應用程式使用的CUDA運行時API版本與該應用的Docker鏡像使用的CUDA基礎鏡像版本一致。例如,您的應用的Docker鏡像基於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]

apiVersion: v1
kind: Pod
metadata:
  labels:
    # 指定compute-class為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"
  name: gpu-pod
spec:
...

高效能網路GPU型

apiVersion: v1
kind: Pod
metadata:
  labels:
    # 指定compute-class為gpu-hpn類型
    alibabacloud.com/compute-class: "gpu-hpn"
    # 指定驅動版本為535.161.08
    alibabacloud.com/gpu-driver-version: "535.161.08"
  name: gpu-pod
spec:
...

GPU驅動版本

在為Pod指定驅動版本時,需要確保驅動版本包含在ACS支援的驅動版本列表中,GPU驅動版本說明

Pod預設GPU驅動版本

ACS支援按一定規則為Pod配置特定屬性,若產品預設驅動版本不滿足需求,可以通過在kube-system/acs-profile增加以下配置,實現為特定類型的GPU Pod配置不同的GPU驅動版本,詳見配置Selectors

以下配置實現了將叢集內所有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"
          }
        }
      }
    ]

操作樣本

  1. 使用以下YAML內容,建立gpu-pod-with-model-and-driver.yaml檔案,檔案中描述了一個compute-class為GPU的Pod,申請型號為example-model的GPU資源和535.161.08驅動版本。

    apiVersion: v1
    kind: Pod
    metadata:
      name: gpu-pod-with-model-and-driver
      labels:
        # 指定compute-class為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
  2. 執行以下命令,將gpu-pod-with-model-and-driver.yaml部署到叢集。

    kubectl apply -f gpu-pod-with-model-and-driver.yaml
  3. 執行以下命令,查看Pod狀態。

    kubectl get pod

    預期輸出:

    NAME                            READY   STATUS    RESTARTS   AGE
    gpu-pod-with-model-and-driver   1/1     Running   0          87s
  4. 執行以下命令,查看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標籤中配置一致。

    重要

    以上內容只是範例輸出,實際資料以您的作業環境為準。