在某些情境下,您可能不需要GPU隔離模組參與共用GPU調度。例如,有些業務應用內建顯存限制能力。在這種情況下,使用GPU隔離模組可能不合適。對此,共用GPU調度支援某些節點不安裝GPU隔離模組的選項。本文介紹如何配置共用GPU調度僅共用不隔離策略。
前提條件
步驟一:建立節點池
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池頁面,單擊建立節點池。
在建立節點池頁面,設定建立節點池的配置項,然後單擊確認配置。下表僅介紹主要配置項,其餘配置項請參見建立和管理節點池。
配置項
說明
執行個體規格
架構選擇GPU雲端服務器,選擇多個GPU執行個體規格。本文以使用GPU卡V100為例進行說明。
期望節點數
設定節點池初始節點數量。如無需建立節點,可以填寫為0。
節點標籤
單擊
,添加如下記錄:鍵為ack.node.gpu.schedule,值為share。僅開啟GPU共用調度能力。關於節點標籤的更多資訊,請參見GPU節點調度屬性標籤。
步驟二:提交任務
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊頁面上方的使用YAML建立資源,將如下代碼拷貝至模板地區,然後單擊頁面下方的建立。
YAML檔案說明如下:
該YAML定義了一個使用TensorFlow MNIST範例的Job。Job有1個Pod,該Pod申請4 GiB顯存。
Pod申請4 GiB顯存通過在Pod resources.limits定義
aliyun.com/gpu-mem: 4實現。
步驟三:驗證僅共用不隔離能力
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在建立的容器所在行(例如tensorflow-mnist-multigpu-***),單擊操作列的終端。然後從下拉式清單中選擇需要登入的容器,執行如下命令。
nvidia-smi預期輸出:
Wed Jun 14 06:45:56 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.105.01 Driver Version: 515.105.01 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 35C P0 59W / 300W | 334MiB / 16384MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+Pod內部能夠發現整張GPU卡的總顯存16384 MiB(本文樣本使用GPU卡為V100),而在有隔離模組參與的情境下,該值與Pod申請值一致(本文樣本為4 GiB),說明配置生效。
業務應用需要從兩個環境變數中讀取該業務能夠使用的顯存值。
ALIYUN_COM_GPU_MEM_CONTAINER=4 # 該Pod能夠使用的顯存值。 ALIYUN_COM_GPU_MEM_DEV=16 # 每張GPU卡總共的顯存值。如果應用需要的是顯存的百分比,可以使用上述兩個環境變數計算:
percetange = ALIYUN_COM_GPU_MEM_CONTAINER / ALIYUN_COM_GPU_MEM_DEV = 4 / 16 = 0.25