使用多實例GPU (MIG/Multi-Instance GPU)可以將強大的顯卡分成更小的部分,每個部分都有自己的工作,這樣單張顯卡可以同時運行不同的任務。本文將對其進行簡單介紹并且提供安裝和使用的示例。
什么是MIG
NVIDIA Multi-Instance GPU (MIG) 技術是 NVIDIA 推出的一種 GPU 虛擬化技術,允許一塊物理 GPU 被分割成多個獨立的 GPU 實例,每個實例可以被分配給不同的虛擬機、容器或用戶。這種技術有助于更有效地利用 GPU 資源,提高 GPU 的共享性和多租戶支持。
MIG 技術通常需要硬件和軟件支持,包括支持 MIG 的 NVIDIA GPU 和相應的驅動程序。這使得 MIG 技術成為數據中心和云計算環境中更好地管理 GPU 資源的有力工具。它有助于提高 GPU 利用率,降低成本,并更好地滿足不同應用程序和用戶的需求。
MIG是如何工作的
MIG通過虛擬地將單個物理GPU劃分為更小的獨立實例,這項技術涉及GPU虛擬化,GPU的資源,包括CUDA內核和內存,被分配到不同的實例。這些實例彼此隔離,確保在一個實例上運行的任務不會干擾其他實例。
MIG支持GPU資源的動態分配,允許根據工作負載需求動態調整實例的大小。這種動態分配有助于有效地利用資源。多個應用程序或用戶可以在同一個GPU上并發運行,每個GPU都有自己的專用實例。整個過程通過軟件進行管理,為管理員提供了對實例配置和資源分配的控制。這種方法增強了在單個GPU上處理不同工作負載的靈活性、可擴展性和資源效率。
MIG 技術關鍵特點
- 資源劃分 :MIG 允許將一塊物理 GPU 分割成多個 GPU 實例,每個實例具有自己的 GPU 核心、GPU 內存、NVLink 帶寬等資源。這樣可以更好地控制和劃分 GPU 資源。
- 多租戶支持 :MIG 技術可以用于虛擬化 GPU,以便不同用戶或應用程序可以共享同一塊物理 GPU 而不會相互干擾。
- 動態資源調整 :管理員可以根據工作負載的需求動態地重新配置 MIG 實例的資源,從而實現更好的資源利用和性能。
- 容錯性 :MIG 技術支持 GPU 實例的隔離,這意味著一個 GPU 實例中的問題不會影響到其他實例,從而提高了系統的容錯性。
- 部署靈活性 :MIG 技術可以用于云計算、虛擬化環境、容器化應用程序等多種情境,為不同的部署需求提供了靈活性。
MIG的條件
并不是所有的顯卡都支持MIG,以下是官方給出的GPU型號:
可以看到,基本上就是A100和H100可以使用,雖然都是24G顯存,但是消費級的4090是不支持的。
然后就是驅動
達到這些要求以后就可以使用了
MIG配置和使用
安裝Nvidia SMI(這里使用ubuntu系統作為示例)很簡單,只要安裝好nvidia提供的工具包即可
sudo apt-get install nvidia-utils
下一步就是驗證Nvidia驅動程序。
nvidia-smi
沒問題的話就說明安裝完成了。下面就是配置的命令:
sudo nvidia-smi -i < GPU_ID > --mig on
nvidia-smi結果中包含了GPU ID。
驗證MIG配置(需要GPU ID和實例ID進行下一步工作)
nvidia-smi mig -lgip
驗證成功后就說明我們的MIG已經正??捎?,下面可以開始創建虛擬GPU
我們將單個GPU(硬件)劃分為多個獨立的GPU實例,以手動分擔工作負載并降低工作平衡的成本。
sudo nvidia-smi -i < GPU_ID > --mig < INSTANCE_COUNT >
-i :指定要使用的GPU設備。將替換為需要配置的GPU的實際ID。
-mig :用于配置mig (Multi-Instance GPU)。將替換為希望在指定GPU上創建的所需GPU實例數。每個實例都有自己的一組資源,包括內存和計算能力。
比如我們下面的示例:在GPU ID=0上創建3個實例
sudo nvidia-smi -i 0 --mig 3
更改實例的資源分配(工作負載),主要目標是為特定的MIG實例調整資源分配
sudo nvidia-smi -i < GPU_ID > -gi < INSTANCE_ID > -rg < WORKLOAD_PERCENT >
-i :指定執行該操作的GPU。例如,-i 0表示第一個GPU。
-gi :在指定GPU內執行操作的MIG實例。例如,-gi 1表示GPU上的第二個MIG實例。
-rg :分配給指定MIG實例的GPU資源的百分比。將替換為所需的百分比。例如-rg 70表示將70%的GPU資源分配給指定的MIG實例。
在GPU_ID = 0和MIG Instance=1上設置占GPU總資源70%的工作負載
sudo nvidia-smi -i 0 -gi 1 -rg 70
Docker和MIG
大部分情況我們都會使用Docker來作為運行環境,所以這里我們再介紹一下Docker和MIG的配置。
安裝NVIDIA Container Toolkit,這是我們再Docker中使用GPU的第一步,這里就不詳細介紹了,我們直接使用命令安裝。
sudo apt-get install -y nvidia-container-toolkit
配置Docker守護進程以使用NVIDIA:編輯Docker守護進程配置文件/etc/docker/daemon.json),添加如下行:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
以上代碼只是示例,請跟你的實際情況修改,本文不主要介紹如何再Docker中使用GPU,所以只作為簡單示例。
配置完需要重啟
sudo systemctl restart docker
驗證GPU可用性,以獲取GPU信息
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
下面開始我們的主要工作,配置MIG
docker run --gpus device=0,1,2,3 -e NVIDIA_VISIBLE_DEVICES=0,1,2,3 my_container
可以根據想要使用的MIG設備數量來調整——gpu和NVIDIA_VISIBLE_DEVICES參數。這里的gpus是我們通過上面命令虛擬的GPU
總結
MIG能夠將單個GPU劃分為更小的實例,MIG為同時處理各種工作負載提供了經濟高效且可擴展的解決方案。MIG的底層功能,包括資源隔離和動態分配,增強了GPU使用的靈活性、可擴展性和整體效率。
跨越數據中心、科學研究和人工智能開發的實際應用凸顯了MIG在優化GPU資源和加速計算任務方面的影響。MIG是一個很好的技術,但是就目前顯卡的價格來說對他的普及還是有很大的阻礙。不支持消費級的顯卡,一張A100大概10萬+,4張4090 6萬多,我想沒人會把一張A100分成4份用吧。
-
控制器
+關注
關注
112文章
16365瀏覽量
178075 -
NVIDIA技術
+關注
關注
0文章
17瀏覽量
6275 -
虛擬機
+關注
關注
1文章
917瀏覽量
28202 -
MIG
+關注
關注
0文章
12瀏覽量
10982 -
GPU芯片
+關注
關注
1文章
303瀏覽量
5813
發布評論請先 登錄
相關推薦
評論