Git Product home page Git Product logo

how-to-use-vgpu's Introduction

vGPU使用指南

编写时间 2023-8-2

预览

  1. vGPU介绍
  2. 下载vGPU软件包
  3. 在ESXI8上安装vGPU软件包
  4. 用Docker部署免费的授权服务
  5. 在客户机上使用vGPU

vGPU介绍

NVIDIA vGPU是一个显卡虚拟化程序,你可以用它把一块16GB显存的特斯拉T4分成4个4GBvGPU。具体显存大小可以自行配置。把vGPU和VMware虚拟化结合,就可以新建虚拟机给其它用户用显卡做实验。vGPU是需要授权的付费产品,不过不用担心,本文提供了免费使用的方法。这篇文章是在ESXI8上安装vGPU软件。

下载vGPU软件包

vGPU的软件包可以从github上justin-himself大佬的NVIDIA-VGPU-Driver-Archive。这个仓库包含了vGPU 10~vGPU 16的所有驱动。注意以zip.001为后缀的文件可能有多份文件要下载。我要给ESXI8安装vGPU,所以我选带有vSphere8字样的下载。

    # github链接
    https://github.com/justin-himself/NVIDIA-VGPU-Driver-Archive

下载完文件后,把它解压出来,里面有三个文件夹,分别是Guest_DriversHost_DriversSigning_Keys和一些PDF说明。我们只需要用到Guest_DriversHost_DriversGuest_Drivers是给虚拟机用的vGPU驱动,Host_Drivers是安装到ESXI主机上的软件。

在ESXI8上安装vGPU软件包

先把ESXI连接到vCenter,之后要用。

首先打开ESXI的网页,先把ESXI主机进入维护模式,然后打开SSH。

使用SSH工具连接到ESXI主机。

新建一个SFTP窗口,通过SFTP把两个zip文件上传到ESXI主机上的/tmp目录下。如果您上传到ESXI主机的根目录可能会报错。

使用esxcli安装vGPU驱动程序

    # 请不要盲目复制,根据自己的文件目录做修改!
    # 先安装NVD-VGPU开头的软件包
    esxcli software vib install -d /tmp/NVD-VGPU-800_525.85.07-1OEM.800.1.0.20613240_21166548.zip
    esxcli software vib install -d /tmp/nvd-gpu-mgmt-daemon_525.85.07-0.0.0000_21145710.zip

安装成功后用nvidia-smi检查有没有识别到显卡

    # 检测显卡
    nvidia-smi

为了保证vGPU的运行,您需要关闭显卡的ECC纠错

    # 关闭ECC纠错
    nvidia-smi -e 0

以上是命令行上的操作,接下来切换到网页端,点击重新引导主机,等待主机完成重启后关闭维护模式。

登录到vCenter,选择刚才安装vGPU驱动的ESXI主机。点击菜单栏中的配置,在刷新的窗口中点击图形。点击主机图形,点击编辑打开编辑主机图形设置窗口。在设置窗口里选择直接共享,点击确定完成设置。

之后点击图形设备,选择任意一张显卡,点击编辑打开设置窗口。在设置窗口里不需要修改任何设置,只需要确保重启X服务器勾选就可以,然后点击确定重启X服务器。

完成上面的步骤后,在ESXI上安装vGPU就完成了。

用Docker部署免费的授权服务

我在虚拟拟机上新建了一个Windows Server虚拟机,用来安装dorker。请注意,在新建虚拟机时要在CPU页面勾选硬件辅助的虚拟化。有经验的读者可以使用Liunx。

系统安装过程略。

请关闭Windwos防火墙,并打开远程桌面。

然后用RDP连接上虚拟机

首先在服务器管理中启用Hyper-V,我用Hyper-V来运行Docker。有经验的读者可以使用WSL2。

前往docker上下载Docker Desktop

    # Docker 官网
    https://www.docker.com/

安装时记得取消用WSL2代替Hyper-V

安装完成后重启主机

在开机后先打开Docker Desktop启动Docker引擎

启动完成,打开CMD,输入这些Docker命令。

    # 先拉取镜像
    docker pull makedie/fastapi-dls
    # 然后创建容器
    # 请更改DLS_URL后面的值,修改成你的IP地址
    docker run -d -e DLS_URL=10.1.88.50 -e DLS_PORT=443 -p 443:443  makedie/fastapi-dls

启动后在浏览器输入https://10.1.88.50,检查容器是否成功启动。

看到readme界面就可以了

在客户机上使用vGPU

在这里我演示两种平台,Windwos和Linux。Windwos我用的版本是Windwos Server 2022,Linux使用的版本是Ubuntu Server 22.04。你可以挑其中一个看,两个部分的内容都很充分。

Windows平台

创建虚拟机,在新建虚拟机的页面先不编辑配置。虚拟机创建完成后,编辑虚拟机配置。

添加一个PCI设备,可以看到有grid_t4-8q这样的vGPU配置文件。我简单讲一下:

配置文件名称物理显卡显存大小vGPU模式
grid_t4-8q特斯拉T48GBvDWS
grid_t4-1b特斯拉T41GBvPC
grid_t4-4a特斯拉T44GBvAPP
grid_t4-4c特斯拉T44GBvCS

注意vDWS和vCS才支持CUDA

为了展示调整显存的功能,我选择grid_t4-8q,8GB的vDWS。

直通了PCI卡后,要锁定所有的内存才能开机。

最后再检查一下安全启动有没有勾选,勾选了就取消勾选。安装Windows怕错过点击任意键继续可以勾选强制开机时进入EFI界面。

之后就是安装系统,这个部分略。

系统安装完成后,关闭防火墙,打开远程桌面。

用RDP连上虚拟机。

来到之前vGPU软件包的Guest_Drivers文件夹下,把给windows用的exe驱动通过RDP窗口上传到服务器。

用RDP传文件的方法:在本地主机右键复制,然后在RDP窗口里右键粘贴。

双击exe文件,安装vGPU驱动。

安装完成,打开CMD,输入nvidia-smi查看显卡输出。可以看到显存有8GB。

    # 查看显卡输出
    nvidia-smi

然后再输入nvidia-smi -q,往上划一段。看到1字样,这是vGPU的授权情况。1字段的值是1代表还没授权。

    # 查看显卡信息
    nvidia-smi -q

然后用管理员模式打开powershell,是powershell不是CMD。输入这段命令给你的vGPU添加授权。

用管理员模式打开powershell而不是打开CMD

    # 下载证书到指定位置
    # 把我的IP地址改成你的
    curl.exe --insecure -L -X GET https://10.1.88.50/-/client-token -o "C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken\client_configuration_token_$($(Get-Date).tostring('dd-MM-yy-hh-mm-ss')).tok"

    # 重启vGPU CLS服务
    Restart-Service NVDisplay.ContainerLocalSystem

    # 等一分钟
    # 查看vGPU授权情况
    & 'nvidia-smi' -q  | Select-String "License"

如果成功添加授权会有这样的输出

    # 成功授权的输出
    vGPU Software Licensed Product
    License Status                    : Licensed (Expiry: YYYY-M-DD hh:mm:ss GMT)

Windows平台的示范结束,下面是Linux平台的示范。

Linux平台

创建虚拟机,在新建虚拟机的页面先不编辑配置。虚拟机创建完成后,编辑虚拟机配置。

添加一个PCI设备,可以看到有grid_t4-8q这样的vGPU配置文件。我简单讲一下:

配置文件名称物理显卡显存大小vGPU模式
grid_t4-8q特斯拉T48GBvDWS
grid_t4-1b特斯拉T41GBvPC
grid_t4-4a特斯拉T44GBvAPP
grid_t4-4c特斯拉T44GBvCS

注意vDWS和vCS才支持CUDA

为了展示调整显存的功能,我选择grid_t4-8q,8GB的vDWS。

直通了PCI卡后,要锁定所有的内存才能开机。

最后再检查一下安全启动有没有勾选,勾选了就取消勾选。

然后启动虚拟机,正常安装系统。安装系统的过程略。

安装完成后,用SSH和SFTP连上Linux。

Guest_Drivers中找到驱动run文件并通过SFTP上传到Linux虚拟机。

用下面的命令安装显卡需要的依赖库。

    # 更新软件包
    sudo apt update
    sudo apt upgrade -y

    # 下载依赖
    sudo apt install g++ gcc make -y

禁用默认nouveau显卡驱动

    # 打开禁用驱动配置文件
    sudo nano /etc/modprobe.d/blacklist.conf

    # 在文件的末尾加上这两段
    blacklist nouveau
    options nouveau modeset=0

    # 关闭nano编辑器
    # 然后更新内核
    sudo update-initramfs -u

    # 重启
    sudo reboot

    # 重启完电脑后用命令检查显卡驱动有没有在运行
    # 没有输出就是禁用成功
    lsmod | grep nouveau

禁用成功后安装显卡驱动

    # 添加运行权限
    # 请将NVIDIA.run替换成您的驱动程序的名字
    sudo chmod +x ./NVIDIA.run
    # 安装
    # 详细的安装步骤看截图
    ./NVIDIA.run

安装成功后查看输出

    # 查看输出
    nvidia-smi

    # 查看vGPU授权
    nvidia-smi -q | grep Lic

    # 给vGPU添加授权
    curl --insecure -X GET https://10.1.88.50/client-token -o /etc/nvidia/ClientConfigToken/client_configuration_token.tok
    
    # 重启vGPU CLS服务
    service nvidia-gridd restart
    
    # 等一分钟
    # 查看授权情况
    nvidia-smi -q | grep "License"

如果成功添加授权会有这样的输出

    # 成功授权的输出
    vGPU Software Licensed Product
    License Status                    : Licensed (Expiry: YYYY-M-DD hh:mm:ss GMT)

本文章到此结束,希望对你有所帮助。

how-to-use-vgpu's People

Contributors

fenghan0430 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.