偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

萬字長文講清楚大模型時代虛機(jī)vGPU原理及實戰(zhàn)

云計算 虛擬化
云計算的本質(zhì)是把計算資源、網(wǎng)絡(luò)資源、存儲資源進(jìn)行虛擬化并超賣,實現(xiàn)降低成本的本質(zhì)需求,“一機(jī)多賣”,賺取差價。計算資源包括CPU、內(nèi)存,它們的超賣技術(shù)已經(jīng)非常成熟,主要是分時復(fù)用的能力,即時間分片,在某一時間只能被一個對象使用。

背景

云計算的本質(zhì)是把計算資源、網(wǎng)絡(luò)資源、存儲資源進(jìn)行虛擬化并超賣,實現(xiàn)降低成本的本質(zhì)需求,“一機(jī)多賣”,賺取差價。

計算資源包括CPU、內(nèi)存,它們的超賣技術(shù)已經(jīng)非常成熟,主要是分時復(fù)用的能力,即時間分片,在某一時間只能被一個對象使用。

網(wǎng)絡(luò)資源主要是兩類,交換機(jī)和路由器,通過軟件模擬,實現(xiàn)路由的轉(zhuǎn)發(fā)和組網(wǎng)技術(shù)也非常成熟,典型的就是SDN(software define network)軟件模擬網(wǎng)絡(luò),覺見的技術(shù)有OVS、Linux bridge、vxlan、iptables、ns等。

存儲也是類似,主要分為三類:文件存儲、對象存儲、塊存儲,常見的技術(shù)有:ceph、nfs、minio。

大模型時代,GPU成了最昂貴的資源。如何對GPU虛擬化,正是社區(qū)目前探索的方向。

vGPU能力概述

NVIDIA的vGPU功能是指將物理GPU分割成多個GPU實例,然后分配給虛擬機(jī)使用的能力,以達(dá)到GPU超分的目的。屬于收費功能,企業(yè)注冊可以90天試用,注冊完之后才可以下載vGPU驅(qū)動及License。

圖片圖片

也并非所有的GPU都支持vGPU能力,可以通過官方網(wǎng)站查詢支持的GPU(https://docs.nvidia.com/vgpu/gpus-supported-by-vgpu.html) 。支持vGPU的GPU有:NVIDIA L4、L4O、L40S、 A10、A16、A40、A100、T4、RTX 6000Ada、RTX 5000 Ada、RTX 8000、 RTX 6000、VI0OS、VI00、P10O、P40、P6、P4、M60。

如果GPU不支持vGPU,即使GPU通過某種技術(shù)手段在宿主機(jī)上完成了GPU的切分,也無法分配給虛擬機(jī)上使用。原因在于驅(qū)動和授權(quán)限限制。

圖片圖片

實現(xiàn)方式:

要實現(xiàn)vGPU能力,需要先在宿主機(jī)上將物理GPU的分割成多個GPU實例,然后掛載到虛擬機(jī)。掛載到虛擬機(jī)上的vGPU還需要安裝官方的驅(qū)動及授權(quán)才可以使用。因此,vGPU實現(xiàn)方式主要分成三步:

1. 物理GPU分割成vGPU實例;

2. vGPU分配給虛擬機(jī);

3. 虛擬機(jī)安裝vGPU驅(qū)動;

在宿主機(jī)上分割物理GPU有兩種方式:

1. 軟件方式:SRIOV技術(shù),通過地址映射,將一個PCI設(shè)備映射成多個虛擬設(shè)備

2. 物理方式:硬件分割,通過芯片制作工藝支持,即MIG能力。

軟件方式:SRIOV方式分割GPU

SRIOV技術(shù)是單根輸入輸出虛擬化功能,通過將單個PCIe物理設(shè)備虛擬化成多個獨立虛擬設(shè)備,如CPU、網(wǎng)卡等。由于GPU也是通過PCI插槽方式插在主板上,因此,也可以使用這種技術(shù),將物理GPU虛擬化成多個虛GPU實例。

軟件分割是時分性原理,即在某個時間段將設(shè)備分配給某個虛擬設(shè)備使用,當(dāng)有其他設(shè)備搶占時,掛起當(dāng)前任務(wù),去響應(yīng)優(yōu)先級更高的任務(wù)。在網(wǎng)絡(luò)和CPU上,這種超分方式還能接受,只是性能受影響。而GPU處理密集型計算任務(wù)時,對性能要求非常高。因此,新的GPU開始支持硬件的方式分割GPU,這種方式只在新的GPU芯片上才可使用,即MIG能力。

硬件方式:MIG方式分割GPU

MIG是Multi-Instance GPU的縮寫,意思是多實例GPU。它是把通過芯片硬件的方式,把一個GPU物理分割成多個GPU實例來用,一般情況最多7個。每個計算實例擁有自己的計算資源,提供更好的性能和隔離。從vGPU 11.1版本開始支持基于MIG技術(shù)的vGPU虛擬機(jī)實例,最新的GPU一般都支持MIG:A100、A30、H100、H200以及RTX PRO 6000 Blackwell系列。更多查閱官方(https://docs.nvidia.com/datacenter/tesla/mig-user-guide/)查看支持MIG的GPU。

圖片圖片

說明: H20未在官網(wǎng)上列出,但經(jīng)驗證,可以基于MIG分出多個GPU實例后;由于H20只能基于NVLINK不支持基于PCI通信,分出的實例未必能用,目前還未驗證。

收費情況

NVIDIA虛擬化GPU提供三種不同產(chǎn)品(vAPP、vPC、vWS),授權(quán)費用支持年度訂閱、永久授權(quán),費用如下:

圖片圖片

環(huán)境

本文以A40 GPU為例驗證vGPU的超分能力:

1. 操作系統(tǒng): Ubuntu 22.04.5 LTS

2. 內(nèi)核: Linux 5.15.0-141-generic

3. GPU: NVIDIA A40

4. GPU驅(qū)動:NVIDIA-Linux-x86_64-550.163.01.run

5. vGPU GRID 驅(qū)動:NVIDIA-GRID-Linux-KVM-550.163.02-550.163.01-553.74

A40 vGPU操作記錄

安裝nvidia驅(qū)動

./NVIDIA-Linux-x86_64-550.163.01.run  --no-opengl-files --ui=none --no-questions --accept-license 

安裝完成后,nvidia-smi命令可以正常執(zhí)行成功;如果執(zhí)行不成功,可以看GPU被什么進(jìn)程占用。lspci -vv|grep -i nvidia可以查看被占用的驅(qū)動,我的本地發(fā)現(xiàn)是被vifio-pci占用。如果kernel是vfio-pci,則需要手動釋放:

解綁gpu腳本:

$ lspci -nn | grep -i nvidia查詢出pci ID
for DEVICE_ID in 0000:e8:00.0 0000:e7:00.0 0000:e6:00.0 0000:e5:00.0 0000:6b:00.0 0000:6a:00.0 0000:68:00.0 0000:67:00.0 ;do echo -n "$DEVICE_ID" > /sys/bus/pci/devices/$DEVICE_ID/driver/unbind

vGPU功能需要修改內(nèi)核

$ vi /etc/default/grub
...
intel_iommu=on iommu=pt 
...

解釋:

1. 啟用 Intel 的 IOMMU 功能(VT-d)Intel 的 IOMMU 技術(shù)稱為 VT-d(Virtualization Technology for Directed I/O),用于管理硬件設(shè)備(如顯卡、網(wǎng)卡)對系統(tǒng)內(nèi)存的直接訪問(DMA)。

2. 啟用 IOMMU 的頁表(Page Tables)支持,IOMMU 的核心功能之一是實現(xiàn) 地址轉(zhuǎn)換:設(shè)備通過 IOMMU 將自身的 “虛擬地址” 轉(zhuǎn)換為系統(tǒng)的物理地址。pt 代表 Page Tables(頁表),啟用后,IOMMU 會利用 CPU 的頁表機(jī)制(如 Intel 的 EPT/VPID 或 AMD 的 NPT)加速地址轉(zhuǎn)換,減少性能損耗。該參數(shù)通常用于優(yōu)化 二級地址轉(zhuǎn)換(如虛擬機(jī)中 Guest OS 的虛擬地址 → 主機(jī)物理地址 → IOMMU 轉(zhuǎn)換后的地址),提升設(shè)備透傳的效率。

生成啟動文件

$ grub-mkconfig > /boot/grub/grub.cfg

通過 dpkg -l | grep grub2 看是grub2還是grub

安裝vGPU驅(qū)動

vGPU的驅(qū)動分成host和guest,在宿主機(jī)上需要裝host的驅(qū)動,在虛擬機(jī)中需要裝guest驅(qū)動。

# 535 kvm 驅(qū)動下載
wget --no-check-certificate "https://griddownloads.nvidia.com/ems/sec/vGPU17.6/NVIDIA-GRID-Linux-KVM-550.163.02-550.163.01-553.74.zip?autho=st=1750064794~exp=1750068394~acl=/ems/sec/vGPU17.6/NVIDIA-GRID-Linux-KVM-550.163.02-550.163.01-553.74.zip~hmac=a5d806ec403b7ddbfe74cd163432eb9a17b0b0eab0eca6ee6c8192ef1a7352b7" -O NVIDIA-GRID-Linux-KVM-550.163.02-550.163.01-553.74.zip

下載下來后,解壓安裝完,會有兩個服務(wù):

# systemctl list-units --all|grep vgpu
  nvidia-vgpu-mgr.service                                                                                                                       loaded    active     running      NVIDIA vGPU Manager Daemon
  nvidia-vgpud.service                                                                                                                          loaded    inactive

其中 nvidia-vgpu-mgr服務(wù)是一直運(yùn)行的,另一個服務(wù)nvidia-vgpud則是在需要的時候按需運(yùn)行,并不會一直運(yùn)行。

修改 kernel 參數(shù)和安裝 vGPU Host 驅(qū)動以后,一定要 reboot 使其生效。

安裝完后nvidia-smi應(yīng)該可以看到GPU:

# nvidia-smi 
Wed Jun 18 14:10:22 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.02             Driver Version: 550.163.02     CUDA Version: N/A      |
|-----------------------------------------+------------------------+----------------------+
| 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  NVIDIA A40                     On  |   00000000:67:00.0 Off |                    0 |
|  0%   28C    P8             30W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA A40                     On  |   00000000:68:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA A40                     On  |   00000000:6A:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA A40                     On  |   00000000:6B:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   4  NVIDIA A40                     On  |   00000000:E5:00.0 Off |                    0 |
|  0%   28C    P8             32W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   5  NVIDIA A40                     On  |   00000000:E6:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   6  NVIDIA A40                     On  |   00000000:E7:00.0 Off |                    0 |
|  0%   28C    P8             32W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   7  NVIDIA A40                     On  |   00000000:E8:00.0 Off |                    0 |
|  0%   29C    P8             30W /  300W |   22657MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

啟用sriov

調(diào)用nvidia的sriov-manage工具,可以指定特定的GPU卡

/usr/lib/nvidia/sriov-manage -e 0:e8:0.0

# dmesg無報錯
# 如果提示file not exist,檢查內(nèi)核 iommu 是否OK,需要reboot

如果要對所有的卡啟用,可以 -h 看help參數(shù),參數(shù)中 -e all則是對所有的卡啟用sriov。help參數(shù)中列出了對卡禁用sriov的方式。

# /usr/lib/nvidia/sriov-manage -h 
Usage:
    /usr/lib/nvidia/sriov-manage <-e|-d> <ssss:bb:dd.f|ALL>
        Enable/disable Virtual functions on the GPU specified by the PCI_ID=ssss:bb:dd.f.
        If 'ALL' is specified in place of PCI_ID, operate on all the nvidia GPUs in the system.

    /usr/lib/nvidia/sriov-manage -e <ssss:bb:dd.f|ALL> -r 1
        Reset and rescan the GPU followed by enabling Virtual functions on the GPU.

    /usr/lib/nvidia/sriov-manage -h
        Print this help.

通過 lspci 命令可查看 GPU 支持的 SR-IOV 屬性

root@control01:~# lspci -s 0:e8:0.0 -vv

    Capabilities: [bcc v1] Single Root I/O Virtualization (SR-IOV)
        IOVCap:    Migration-, Interrupt Message Number: 000
        IOVCtl:    Enable+ Migration- Interrupt- MSE+ ARIHierarchy+
        IOVSta:    Migration-
        Initial VFs: 32, Total VFs: 32, Number of VFs: 32, Function Dependency Link: 00

最大分配的vGPU有32個。使用SRIOV后,在 /sys/class/mdev_bus/ 目錄中可以列出所有可用于創(chuàng)建 vGPU 的VF 設(shè)備的 BDF,A40 的 00:e8:* 的 VF 目錄一共是 32 個。

$ ls /sys/class/mdev_bus/ 
0000:e8:00.4  0000:e8:01.2  0000:e8:02.0  0000:e8:02.6  0000:e8:03.4  0000:e8:04.2
0000:e8:00.5  0000:e8:01.3  0000:e8:02.1  0000:e8:02.7  0000:e8:03.5  0000:e8:04.3
0000:e8:00.6  0000:e8:01.4  0000:e8:02.2  0000:e8:03.0  0000:e8:03.6
0000:e8:00.7  0000:e8:01.5  0000:e8:02.3  0000:e8:03.1  0000:e8:03.7
0000:e8:01.0  0000:e8:01.6  0000:e8:02.4  0000:e8:03.2  0000:e8:04.0
0000:e8:01.1  0000:e8:01.7  0000:e8:02.5  0000:e8:03.3  0000:e8:04.1

基于 SRIOV 的 vGPU 特性創(chuàng)建 SR-IOV 類型的 vGPU,遵循以下方法:

  •   每個 vGPU 實例占用一個 VF 設(shè)備,一旦 VF 已經(jīng)被分配,該 VF 上不可再創(chuàng)建 vGPU。 
  • 每物理 GPU 的 VF 總數(shù) >= 該 GPU 上可創(chuàng)建的 vGPU 最大實例數(shù),例如 A40 單卡的Total VF 數(shù)量為 32,而最大 A40 單卡的 vGPU 實例數(shù)為 40GB(FB 總量)/4GB(4C 類型vGPU Size) = 10。因此,VF 總數(shù)并不是該 GPU 的可創(chuàng)建最大 vGPU 數(shù)量。 
  • 最大可創(chuàng)建的 vGPU 實例數(shù)可以查詢該 vGPU 類型目錄中的 description 文件中描述的max_instances 的值。例如:
root@control01:~# cat /sys/class/mdev_bus/0000\:e8\:00.4/mdev_supported_types/nvidia-555/name 
  NVIDIA A40-1B

  root@control01:~# cat /sys/class/mdev_bus/0000\:e8\:00.4/mdev_supported_types/nvidia-555/description 
  num_heads=4, frl_cnotallow=45, framebuffer=1024M, max_resolutinotallow=5120x2880, max_instance=32

每一個 VF 設(shè)備的當(dāng)前實時可創(chuàng)建 vGPU 數(shù)量應(yīng)查詢該 VF 目錄下,指定類型目錄中available_instances 文件中的值:

1 表示可以在此 VF 設(shè)備創(chuàng)建指定的 vGPU 類型實例。0 則表示不可創(chuàng)建此類型 vGPU,可能是由于當(dāng)前 VF 已經(jīng)被占用,或當(dāng)前 vGPU類型不被支持。

cat /sys/class/mdev_bus/0000\:e8\:00.4/mdev_supported_types/nvidia-555/available_instances 
  1

Time Sliced 類型的 vGPU 配置概要

下面腳本可以列出所有支持的 mdev 設(shè)備名稱和 vGPU 設(shè)備可用數(shù)量

cd mdev_supported_types
for i in * ; doecho$i, `cat$i/name` `cat$i/ava*` ; done


nvidia-555, NVIDIA A40-1B 1
nvidia-556, NVIDIA A40-2B 1
nvidia-557, NVIDIA A40-1Q 1
nvidia-558, NVIDIA A40-2Q 1
nvidia-559, NVIDIA A40-3Q 1
nvidia-560, NVIDIA A40-4Q 1
nvidia-561, NVIDIA A40-6Q 1
nvidia-562, NVIDIA A40-8Q 1
nvidia-563, NVIDIA A40-12Q 1
nvidia-564, NVIDIA A40-16Q 1
nvidia-565, NVIDIA A40-24Q 1
nvidia-566, NVIDIA A40-48Q 1
nvidia-567, NVIDIA A40-1A 1
nvidia-568, NVIDIA A40-2A 1
nvidia-569, NVIDIA A40-3A 1
nvidia-570, NVIDIA A40-4A 1
nvidia-571, NVIDIA A40-6A 1
nvidia-572, NVIDIA A40-8A 1
nvidia-573, NVIDIA A40-12A 1
nvidia-574, NVIDIA A40-16A 1
nvidia-575, NVIDIA A40-24A 1
nvidia-576, NVIDIA A40-48A 1

使用uuid創(chuàng)建vgpu設(shè)備

echo 2f82ee72-3ac5-4615-9c0b-327c12e8c83d > /sys/class/mdev_bus/0000:e8:00.4/mdev_supported_types/nvidia-555/create

root@control01:/sys/class/mdev_bus/0000:e8:00.4/mdev_supported_types/nvidia-555# ls devices/
2f82ee72-3ac5-4615-9c0b-327c12e8c83d

至此可以看到已經(jīng)創(chuàng)建成功。

再次檢查可以創(chuàng)建的數(shù)量:

root@control01:/sys/class/mdev_bus/0000:e8:00.4/mdev_supported_types# cd mdev_supported_types
for i in * ; doecho$i, `cat$i/name` `cat$i/ava*` ; done
-bash: cd: mdev_supported_types: No such file or directory
nvidia-555, NVIDIA A40-1B 0
nvidia-556, NVIDIA A40-2B 0
nvidia-557, NVIDIA A40-1Q 0
nvidia-558, NVIDIA A40-2Q 0
nvidia-559, NVIDIA A40-3Q 0
nvidia-560, NVIDIA A40-4Q 0
nvidia-561, NVIDIA A40-6Q 0
nvidia-562, NVIDIA A40-8Q 0
nvidia-563, NVIDIA A40-12Q 0
nvidia-564, NVIDIA A40-16Q 0
nvidia-565, NVIDIA A40-24Q 0
nvidia-566, NVIDIA A40-48Q 0
nvidia-567, NVIDIA A40-1A 0
nvidia-568, NVIDIA A40-2A 0
nvidia-569, NVIDIA A40-3A 0
nvidia-570, NVIDIA A40-4A 0
nvidia-571, NVIDIA A40-6A 0
nvidia-572, NVIDIA A40-8A 0
nvidia-573, NVIDIA A40-12A 0
nvidia-574, NVIDIA A40-16A 0
nvidia-575, NVIDIA A40-24A 0
nvidia-576, NVIDIA A40-48A 0

全部為0。意味著這個VF已經(jīng)不能再創(chuàng)建vGPU設(shè)備。新的vGPU只能創(chuàng)建在不同的VF上了。

此時,可以切換其他的VF,再次創(chuàng)建,直到所有的VF全部綁定;

root@control01:/sys/class/mdev_bus# ls | grep e8:00
0000:e8:00.4
0000:e8:00.5
0000:e8:00.6
0000:e8:00.7

創(chuàng)建第二個:

root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# ls devices/
root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# uuidgen > create
root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# ls devices/
242e5ea7-90e2-4d6e-afeb-a0b9a656c108
root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# ls devices/
242e5ea7-90e2-4d6e-afeb-a0b9a656c108

root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# cat name 
NVIDIA A40-24A

所有創(chuàng)建成功的vGPU會在 /sys/bus/mdev/devices下創(chuàng)建同名mdev設(shè)備

root@control01:/sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575# ls /sys/bus/mdev/devices/
242e5ea7-90e2-4d6e-afeb-a0b9a656c108

同時,要把uuid保存,寫入/etc/rc.local,保證開機(jī)自動加載

$ vi /etc/rc.local

echo 2f82ee72-3ac5-4615-9c0b-327c12e8c83d > /sys/class/mdev_bus/0000:e8:00.4/mdev_supported_types/nvidia-555/create
echo 242e5ea7-90e2-4d6e-afeb-a0b9a656c108 > /sys/class/mdev_bus/0000:e8:04.0/mdev_supported_types/vfio-pci-575/create

上面這個是實際創(chuàng)建時候的操作,但是發(fā)現(xiàn)上面一條記錄 nvidia-555這個命令不會在 /sys/bus/mdev下創(chuàng)建。后面機(jī)器重啟后這個目錄也不存在。下面那個vfio-pci-575會正常。最后經(jīng)驗證,vfio-pci下的vgpu可以正常分配給虛機(jī)。

在宿主機(jī)上驗證已經(jīng)創(chuàng)建好的vGPU:

# nvidia-smi vgpu
Wed Jun 18 15:56:14 2025       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.02             Driver Version: 550.163.02                |
|---------------------------------+------------------------------+------------+
| GPU  Name                       | Bus-Id                       | GPU-Util   |
|      vGPU ID     Name           | VM ID     VM Name            | vGPU-Util  |
|=================================+==============================+============|
|   0  NVIDIA A40                 | 00000000:67:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   1  NVIDIA A40                 | 00000000:68:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   2  NVIDIA A40                 | 00000000:6A:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   3  NVIDIA A40                 | 00000000:6B:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   4  NVIDIA A40                 | 00000000:E5:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   5  NVIDIA A40                 | 00000000:E6:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   6  NVIDIA A40                 | 00000000:E7:00.0             |   0%       |
+---------------------------------+------------------------------+------------+
|   7  NVIDIA A40                 | 00000000:E8:00.0             |   0%       |
|      3251634401  NVIDIA A40-24A | 7cc6...  'sss',debug-thre... |      0%    |
+---------------------------------+------------------------------+------------+

使用nvidia-smi命令也可以直接看到:

root@control01:~# nvidia-smi 
Wed Jun 18 15:57:22 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.02             Driver Version: 550.163.02     CUDA Version: N/A      |
|-----------------------------------------+------------------------+----------------------+
| 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  NVIDIA A40                     On  |   00000000:67:00.0 Off |                    0 |
|  0%   27C    P8             30W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA A40                     On  |   00000000:68:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   2  NVIDIA A40                     On  |   00000000:6A:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   3  NVIDIA A40                     On  |   00000000:6B:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   4  NVIDIA A40                     On  |   00000000:E5:00.0 Off |                    0 |
|  0%   28C    P8             32W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   5  NVIDIA A40                     On  |   00000000:E6:00.0 Off |                    0 |
|  0%   28C    P8             31W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   6  NVIDIA A40                     On  |   00000000:E7:00.0 Off |                    0 |
|  0%   28C    P8             32W /  300W |       0MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   7  NVIDIA A40                     On  |   00000000:E8:00.0 Off |                    0 |
|  0%   28C    P8             30W /  300W |   22657MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    7   N/A  N/A    586376    C+G   vgpu                                        22656MiB |
+-----------------------------------------------------------------------------------------+

CloudPods操作

說明:Cloudpods只是一個虛擬化平臺,本質(zhì)上也是對kvm底層虛機(jī)xml做配置。只是完成了上述三步中的將vGPU綁定到虛機(jī)而已。哪三步:1. GPU切分、2、綁定vGPU到虛機(jī) 3、虛機(jī)中安裝驅(qū)動。自己用其他虛擬化平臺是類似的操作,kvm的xml則是添加device項。如:

圖片圖片

配置 /etc/yunion/host.conf;

# 把所有的vgpu的PF全部寫上
nvidia_vgpu_pfs:
- 67:00.0
- 67:00.4
- 67:00.5
- 67:00.6
- 67:00.7
- 67:01.0
- 67:01.1
- 67:01.2
- 67:01.3
- 67:01.4
- 67:01.5
- 67:01.6
- 67:01.7
- 67:02.0
- 67:02.1
- 67:02.2
- 67:02.3
- 67:02.4
- 67:02.5
- 67:02.6
- 67:02.7
- 67:03.0
- 67:03.1
- 67:03.2
- 67:03.3
- 67:03.4
- 67:03.5
- 67:03.6
- 67:03.7
...

pf可以通過lspci | grep -i nvidia查出

重啟kubectl -n onecloud rollout restart ds default-host

cloudpods頁面創(chuàng)建完虛機(jī)后,綁定vGPU設(shè)備;

圖片圖片

進(jìn)入虛機(jī)后,安裝guest驅(qū)動:

root@guest-vm:~/Guest_Drivers# ./NVIDIA-Linux-x86_64-550.163.01-grid.run 
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 550.163.01...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
root@guest-vm:~/Guest_Drivers# nvidia-smi 
Tue Jun 17 12:05:31 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.01             Driver Version: 550.163.01     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| 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  NVIDIA A40-24A                 On  |   00000000:00:08.0 Off |                  N/A |
| N/A   N/A    P8             N/A /  N/A  |       1MiB /  24576MiB |      0%   Prohibited |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

驗證虛機(jī)中的gpu是否可用

總結(jié):

1.vGPU有兩種搞法,老的搞法主要是Tesla系統(tǒng),用的軟件實現(xiàn)的方式,要花錢買License;但是不買也可以調(diào)試,有20分鐘的調(diào)試時間,后面還有幾天的時間可以用,無非速率降了些;其實不用著急買,也可以直接用于調(diào)試;Tesla于2020年后就已經(jīng)慢慢停產(chǎn)了,后面轉(zhuǎn)向H系列和A系列;

2.H系列及A系列基本上通過硬件虛擬化的方式支持vGPU,也就是MIG(multi-instance GPU)方式;也需要授權(quán),在平臺上先GPU切分好后,掛載到虛擬機(jī)上;性能好,但是一個GPU最多分7個,基本上也夠了; 其實這種硬件方式最開始是AMD的vGPU方式,比Nvidia有優(yōu)勢,Nvidia最新芯片開始轉(zhuǎn)向這種;

參考

1.nvidia驅(qū)動/license下載地址(授權(quán)): https://ui.licensing.nvidia.com/software

2. CloudPods啟用vGPU設(shè)置 https://www.cloudpods.org/docs/guides/onpremise/vminstance/passthrough/vgpu/

3. 支持MIG GPU卡列表:https://docs.nvidia.com/datacenter/tesla/mig-user-guide/

4. vGPU官方頁面 https://docs.nvidia.com/vgpu/index.html#gpu-software-lifecycle 

責(zé)任編輯:武曉燕 來源: 技術(shù)自留地
相關(guān)推薦

2022-07-19 16:03:14

KubernetesLinux

2022-09-06 08:02:40

死鎖順序鎖輪詢鎖

2021-10-18 11:58:56

負(fù)載均衡虛擬機(jī)

2022-09-08 10:14:29

人臉識別算法

2022-09-14 09:01:55

shell可視化

2021-01-19 05:49:44

DNS協(xié)議

2020-07-09 07:54:35

ThreadPoolE線程池

2024-03-07 18:11:39

Golang采集鏈接

2022-10-10 08:35:17

kafka工作機(jī)制消息發(fā)送

2021-06-07 15:49:51

AI 數(shù)據(jù)人工智能

2020-07-15 08:57:40

HTTPSTCP協(xié)議

2020-11-16 10:47:14

FreeRTOS應(yīng)用嵌入式

2024-01-11 09:53:31

面試C++

2021-08-26 05:02:50

分布式設(shè)計

2024-01-05 08:30:26

自動駕駛算法

2022-07-15 16:31:49

Postman測試

2024-05-10 12:59:58

PyTorch人工智能

2023-06-12 08:49:12

RocketMQ消費邏輯

2020-02-08 18:44:46

剖析應(yīng)用層原理

2023-10-19 13:47:58

點贊
收藏

51CTO技術(shù)棧公眾號