阿里云容器計算服務ACS以Serverless形態提供容器算力,在使用GPU資源時,支持在Pod上聲明GPU型號和驅動版本,極大降低了業務的基礎設施管理和運維成本。本文主要介紹如何在創建Pod時指定GPU型號和驅動版本。
GPU型號說明
ACS支持多種GPU型號,您可以結合資源預留使用,也可在Pod創建時按需申請。對于不同的計算類型(compute-class),使用方式如下。
GPU型
支持按量使用、容量預留兩種方式,Pod創建后會自動抵扣容量預留,詳見GPU Pod容量預留。
目前支持的GPU具體型號列表請提交工單咨詢。
為Pod指定GPU型號
對于GPU型,您需要在Pod的lables
和nodeSelector
中顯式指定GPU型號。具體方式如下。
計算類 | 協議字段 | 樣例 |
GPU型 | metadata.labels[ alibabacloud.com/gpu-model-series] |
|
驅動版本說明
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包提供。
在使用ACS集群運行GPU應用時,您需要注意:
容器鏡像中安裝CUDA Toolkit時,使用NVIDIA提供的CUDA基礎鏡像。這些基礎鏡像已經安裝了CUDA Toolkit。您可以基于基礎鏡像構建應用容器鏡像。您也可以根據不同的CUDA Toolkit版本選擇不同的CUDA基礎鏡像。
創建應用時指定Pod所需的驅動版本,詳見為Pod指定驅動版本。
關于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] |
|
在為Pod指定驅動版本時,需要確保驅動版本包含在ACS支持的驅動版本列表中。詳細信息,請參見ACS支持的NVIDIA驅動版本列表。關于修改集群默認的驅動版本,請參見配置acs-profile實現Pod配置自動注入按需修改。
操作示例
使用以下YAML內容,創建gpu-pod-with-model-and-driver.yaml文件,文件中描述了一個compute-class為GPU的Pod,申請型號為example-mode的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,請按實際情況填寫 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標簽中配置一致。
重要以上內容只是樣例輸出,實際數據以您的操作環境為準。