全部產品
Search
文件中心

Container Service for Kubernetes:關閉對應用的GPU隔離能力

更新時間:Jun 19, 2024

本文通過部署一個簡單的樣本應用向您介紹如何在叢集中關閉針對應用的GPU隔離能力。

適用情境

本文樣本適用於已開啟共用GPU顯存隔離能力的專有版GPU叢集及ACK Pro版叢集。

前提條件

已安裝共用GPU組件。具體操作,請參見安裝共用GPU調度組件安裝共用GPU調度組件

操作步驟

  1. 執行以下命令查詢叢集的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

  2. 使用以下模板建立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_DISABLEtrue即可關閉cGPU。

  3. 執行以下命令,查看共用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)。