本文通過部署一個簡單的樣本應用向您介紹如何在叢集中關閉針對應用的GPU隔離能力。
適用情境
本文樣本適用於已開啟共用GPU顯存隔離能力的專有版GPU叢集及ACK Pro版叢集。
前提條件
已安裝共用GPU組件。具體操作,請參見安裝共用GPU調度組件或安裝共用GPU調度組件。
操作步驟
執行以下命令查詢叢集的GPU共用能力。
kubectl inspect cgpu
預期輸出:
NAME IPADDRESS GPU0(Allocated/Total) GPU Memory(GiB) cn-beijing.192.16x.x.xx3 192.16x.x.xx3 0/15 0/15 cn-beijing.192.16x.x.xx1 192.16x.x.xx1 0/15 0/15 cn-beijing.192.16x.x.xx2 192.16x.x.xx2 0/15 0/15 --------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 0/45 (0%)
說明如果您想查詢GPU共用能力詳細資料,請執行命令
kubectl inspect cgpu -d
。使用以下模板建立GPU共用容器,同時該容器不使用共用GPU的隔離能力。
apiVersion: batch/v1 kind: Job metadata: name: disable-cgpu spec: parallelism: 1 template: metadata: labels: app: disable-cgpu spec: containers: - name: disable-cgpu image: registry.cn-hangzhou.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5 env: - name: CGPU_DISABLE #關閉cGPU隔離能力。 value: "true" command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=100000 - --data_dir=tensorflow-sample-code/data resources: limits: # 單位為GiB,該Pod總共申請了3 GiB顯存。 aliyun.com/gpu-mem: 3 workingDir: /root restartPolicy: Never
說明aliyun.com/gpu-mem:設定GPU顯存大小。
關閉共用GPU顯存隔離能力:設定容器的環境變數CGPU_DISABLE為true即可關閉cGPU。
執行以下命令,查看共用GPU調度結果。
kubectl inspect cgpu
預期輸出:
NAME IPADDRESS GPU0(Allocated/Total) GPU Memory(GiB) cn-beijing.192.16x.x.xx1 192.16x.x.xx1 0/15 0/15 cn-beijing.192.16x.x.xx2 192.16x.x.xx2 0/15 0/15 cn-beijing.192.16x.x.xx3 192.16x.x.xx3 3/15 3/15 --------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 3/45 (6%)
節點cn-beijing.192.16x.x.xx3分配了3 GiB顯存給剛剛建立的容器。
執行結果
您可以通過以下兩種方式驗證部署的共用GPU顯存隔離能力是否被關閉:
方式一:執行以下命令查看部署應用的日誌。
kubectl logs disable-cgpu-xxxx --tail=1
預期輸出:
2020-08-25 08:14:54.927965: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 15024 MB memory) -> physical GPU (device: 0, name: Tesla V100-SXM2-16GB, pci bus id: 0000:00:07.0, compute capability: 7.0)
從日誌中可以看到,容器中的應用程式能夠使用的顯存為15024 MiB,可證明共用GPU顯存隔離能力被關閉了(共用GPU顯存隔離能力開啟時,應用程式能夠看到的顯存為3 GiB)。
方式二:執行以下命令登入容器查看容器被分配顯存總量。
kubectl exec disable-cgpu-xxxx nvidia-smi
預期輸出:
Tue Aug 25 08:23:33 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.01 Driver Version: 418.87.01 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... Off | 00000000:00:07.0 Off | 0 | | N/A 33C P0 55W / 300W | 15453MiB / 16130MiB | 1% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
從輸出資訊中可以看到宿主機的顯存容量為16130 MiB,容器分配到的顯存為15453 MiB,可證明共用GPU隔離能力未生效(共用GPU隔離能力開啟時,容器分配到的顯存為3 GiB)。