Linux下从零开始配置一个Nvidia Grid客户机
开始之前
本文章假设你已经拥有了一个vSphere/KVM/Windows HyperV虚拟化平台,并已经向主机节点中安装了Nvidia Tesla计算卡(游戏卡,Quando等非计算卡不在本文讨论范围内)
如果你还没有你的Hypervisor主机,强烈建议你去看看我的朋友Anduin Xue的这篇文章: 让你的数据中心使用 GPU 算力!。 事实上,Anduin Xue搭建了我一直用于研究测试的数据中心,同时在我尝试部署GPU服务器时提供了很大的帮助。
获取许可证
要想在Nvidia VGPU进行Cuda计算或者输出显示,必须安装NVIDIA Grid驱动,但是这个驱动居然是tm要钱的,并且如果你是个人非常难以购买。
如果你想要使用Vgpu,一般可以通过评估测试获得90天的许可。
申请评估
打开NVIDIA Vgpu评估中心, 选择Rigister For Trial
, 邮箱填写参考下方提示,其它信息随意填写即可。
在申请评估试用的时候强烈建议使用一个自定义域名邮箱,而不是公共邮箱(如Outlook, Gmail, QQ等),使用自定义域名邮箱可以极大提高申请的通过率和通过速度,一般在五分钟内即可拿到许可证。
如果你拥有一个自己的域名但没有邮箱服务,可以考虑使用Microsoft Exchange(Paid)或者使用Cloudflare Email Routing服务(Free)快速获得一个邮箱服务。
设置许可服务器并分配许可证
取得许可证后,使用你的账户登录到Nvidia Application Hub Dashboard,然后按照下面步骤操作。
- 选择
License Server
, 点击Create Server
- 填写名称和描述,勾选Express CLS Installation, 选择Next
- 为服务器分配许可证,我分别分配了16个vWs许可证与16个vApp许可证到许可服务器中,你可以按照你的部署规模调整部署数量。
- 完成后Next, 然后Create Server即可
- 左侧选择
Server Instances
, 然后在Actions
中选择Generate Client Configuration Token
,选择你刚才创建的许可服务器,然后Download, 这个文件将在之后为服务器配置许可时用到.
选择合适的vgpu类型
在为虚拟机分配虚拟GPU时,可以选择不同的vgpu类型
由于我们需要使用OpenCL/CUDA计算功能,必须确保你选择的GPU类型支持CUDA运算。 一般来说,所有Q-Series和C-Series的vGPU都支持CUDA计算(Tesla M6, Tesla M10, Tesla M60仅8Q支持),而A-Series和B-Series不支持CUDA计算。 请确保选择Q/C Series的vGPU, 建议选择Q-Series,其功能最为强大 详情可以参考Nvidia用户手册
以Tesla P4举例, Tesla P4有8G的显存,可用的vGPU类型有P4-1Q
, P4-2Q
, P4-4Q
, P4-8Q
(这里仅列出Q类型),其中后面的数字代表了显卡可用的显存数,这里选择的显存数大小决定了显卡可以分配到几台虚拟机,例如P4-2Q
可以分配到4台虚拟机,但是每台虚拟机只能使用2G的显存,而P4-8Q
只能分配到一台虚拟机,但是这台虚拟机可以使用全部8G的显存。实际部署中,应该根据你的需求选择合适的显存大小。
这里我们选择P4-8Q
继续。
各种不同计算卡可用的vgpu类型可在grid文档查询。
安装Grid驱动
安装驱动
Grid驱动可以从Nvidia Application Hub Dashboard的Software-downloads中下载,一般来讲客户机驱动应与hypervisor驱动版本号一致。 驱动有三种分发版本:deb
, rpm
, runfile
。如果你的平台支持安装对应的软件包,则不建议通过runfile
安装。
这里以Ubuntu 22.04 LTS举例,将对应版本的驱动下载到服务器上后,可以使用下面命令完成安装:
1 | sudo apt install ./nvidia-linux-grid-525_525.105.17_amd64.deb |
这里我使用了apt install
来完成安装而不是dpkg -i
, 因为apt
可以自动安装缺失的依赖。
安装完成后,输入nvidia-smi
,此时应该可以看到vgpu的信息。
配置许可证
首先,编辑gridd配置文件:
1 | vim /etc/nvidia/gridd.conf |
找到FeatureType
并将其改为改为1
, 其它选项保留不动即可。
接下来进入/etc/nvidia/ClientConfigToken
目录(如果没有则创建),将前面下载到的Client Configuration Token
放入,然后使用chmod 744
为其修改权限。
完成后,重启nvidia-gridd:
1 | sudo systemctl restart nvidia-gridd.service |
最后用nvidia-smi -q
确认许可已被正确安装,如果正确安装,你应该可以看到类似下面一段内容:
1 | vGPU Software Licensed Product |
安装CUDA
在选择Cuda版本时需要注意,一般来讲Grid驱动会落后标准Nvidia驱动几个版本,因此可能无法安装最新版本的Cuda, 你可以在cuda-release-note中看到不同的cuda版本对驱动的版本要求。
一些AI软件也有CUDA版本要求,也应该根据它的文档确定应该安装的cuda版本.
打开cuda-toolkit-archive,选择你想安装的版本,然后选择你对应的系统即可获得对应的cuda toolkit下载链接。
只要是Linux系统,无论是什么发行版,你都不可以使用平台软件包(deb,rpm等)来安装cuda-toolkit,而是必须使用runfile安装 如果使用平台软件包安装,在安装时cuda-driver会与已安装的grid-driver冲突,导致安装无法继续。
下载完runfile
后,使用sudo
运行,然后在选择组件界面,取消勾选安装cuda-driver,否则grid驱动会被覆盖
安装完成后,编辑系统PATH
环境变量 sudo vim /etc/environment
在PATH
末尾加入:/usr/local/cuda-12.0/bin
(版本号自行按需修改)
重新启动你的shell,然后使用下面命令确认cuda已完成安装:
1 | nvcc --version |
运行模型
You’re all set. 接下来就愉快炼丹吧
Reference
- nvidia-vgpu-user-guide: https://docs.nvidia.com/grid/13.0/grid-vgpu-user-guide/index.html
- nvidia-cuda-guide: https://docs.nvidia.com/cuda/