Synology 群晖 Nvidia vGPU 实践指南
结论
先说结论,目前在DVA3221平台上,适配了vGPU 14.4(510.108.03)版本,底层需要使用该版本,上层同样需要使用对应的版本。在tesla P4和2080Ti进行了测试,测试项目包括,(docker、openGL、编解码、群晖AI识别),由于Photos不会使用GPU,所以该包不影响该功能,目标:
- Pascal:包大小350MB附近,无法使用群晖监控的AI功能,其他正常。
- Turing:包大小750MB附近,可以完整使用所有群晖的GPU功能。
目前关于AI监控还存在一些没有定论的问题,请稍后整理结论再分享。
关键词:群晖 synology 英伟达 nvidia vGPU 虚拟GPU GPU共享
前言
最近佛西群的群友在讨论群晖是否可以使用Nvidia vGPU用于转码,人脸识别,AI等任务,看讨论结果好像是目前不可以。正好我对群晖的系统颇有好感,且对vGPU兴趣浓厚,所以在佛西群主、秀儿和几位大佬的支持下开始了探索行动。经过两个周末和一些零碎时间的探索,对于群晖支持vGPU已有一个明确的定论 -> 支持,但存在一些限制;探索过程曲折漫长,想必各位网友并不关心这个过程,所以我直接切入主题,从安装开始讲起。
安装过程
环境准备
配置介绍:
CPU:Intel i5-10400F
内存:32G DDR4 2400MHz
显卡:tesla P4 & 2080Ti
系统:Proxmox VE 7.4
在这套硬件平台上安装了PVE虚拟化环境,并使用 vgpu_unlock 项目,该项目使得消费级显卡比如2080Ti的环境下也可以体验Nvidia vGPU。
注:关于安装PVE和vgpu_unlock,可参考佛西大佬的博客。
群晖安装
在PVE中创建虚拟机,并正常安装群晖DVA3221,这里的教程可以参考大部分的PVE使用ARPL安装群晖的教程,可以在张大妈上搜一下。
特别提醒:
- 如果要使用群晖监控,请准备好正确的序列号,不然安装后授权是0。
- 群晖系统安装时,请不要将vGPU传递给群晖虚拟机。
驱动安装
群晖正常安装完成后,会自己安装NVIDIARuntimeLibrary和Surveillance,需要先对其进行卸载。如果你是第一次安装,大概率会因为没有创建存储而不会安装。所以此时创建了存储即可安装该vGPU驱动包。
如果在已有群晖数据的硬盘上重装了系统,此时系统默认会安装NVIDIARuntimeLibrary和监控,这里需要等待其安装完毕后,确认监控的可用路数是否正确(是0的话是序列号有误);一切正常后即可删除NVIDIARuntimeLibrary和监控,然后安装本驱动包。
到这一步时,请输出你的授权服务器地址(还没搭建?可以参考佛西大佬的博客)
安装完成后可看到新安装的驱动:
安装完成后打开系统的SSH功能:
然后使用ssh工具连接群晖系统,输入sudo -i
输入密码后即可切换root
账户,输入vgpuDaemon fix
即可修复权限。
此时进入套件中心,停用本套件,然后紧接着启用本套件,即可开启正常使用vGPU驱动,在终端中输入nvidia-smi
命令即可验证。
此时群晖系统也可以正常识别到GPU的相关信息:
docker安装
如果系统原来就已经安装了docker
(Container Manager
)套件,此时只需要停止下该套件,然后重新启动该套件即可。
如果系统是新的,没有安装Container Manager
套件,此时需要先安装该套件;安装完成后,将本套件停止再启动,最后将Container Manager
套件停止再启动。
但如果想要让docker
使用vGPU
驱动,那么需要在ssh
下以root
用户下输入启动指令启动容器:
docker run \ --network=bridge \ -p '8095:8096' \ -p '8919:8920' \ -v /volume1/docker/jellyfin:/config \ -v /volume1/video/:/data \ -e TZ="Asia/Shanghai" \ -e UID=1026 \ -e GID=100 \ -e GIDLIST=0 \ --restart always \ --runtime=nvidia \ -e NVIDIA_VISIBLE_DEVICES=all \ -e NVIDIA_DRIVER_CAPABILITIES=all \ -e UMASK=000 \ --name jellyfin \ -d jellyfin/jellyfin:latest
这里新增的三条指令表示使用nvidia驱动:
--runtime=nvidia \ -e NVIDIA_VISIBLE_DEVICES=all \ -e NVIDIA_DRIVER_CAPABILITIES=all \
确保上述指令的正确性,关于上述其他指令的意思,可以通过网络进一步查询。
上面指令执行:
执行完成后该界面无报错就意味着完成了,可在群晖的Container Manager
中看到新建的容器。
进入jellyfin
中开启NVIDIA解码即可看到。
同样,在emby中也可以开启硬解:
几个问题
问1:为何选择DVA3221平台,而不选择其他如3617XS、DS918+等平台?
答1:因为DVA3221原生提供了Nvidia GPU支持,系统中多处都对GPU的状态进行了展示,且监控默认包含8个授权,同时监控也可以选择使用AI等功能。
问2:相比官方原版和矿神大佬修改的版本有什么不同之处?
答2:
- 官方原版支持的功能,该版本都支持;
- 显卡vgpu功能开启后,可多个虚拟机共享GPU算力,比直通更高效利用GPU;
- 该版本的编解码支持更为完善,jellyfin、emby、plex的最新版本均可正常开启硬解;
- 集成了docker runtime,启动上述媒体服务器时参数更为简单。
- 没有原版存在的GDDR6限制,vGPU 14.4宣称支持的显卡,均可正常使用。
包
目前2080Ti的vGPU功耗问题似乎还没有一个很好的结论,再者AI功能似乎存在一些问题,所以这里先分享把不包含群晖AI监控的驱动。
关于AI监控所需的功能都测试完成后会一并附上结论并将包释放出来。
当前这包理论上所有4.X内核的X86群晖都可以使用,不仅限于DVA3221,只是DVA3221体验我个人觉得会更好一点。
https://cloud.189.cn/t/zuauaazMRfaa (访问码:vhe6)
致谢
感谢佛西群的多位大佬指导,感谢佛西大佬
送的五香牛肉干和kxxxm
送的酸酸乳。
帮助
我一个人实力有限,没有更多的显卡数据,希望得到各位的帮助,帮忙做一些测试,以便更好的完善该驱动。
关于作者:
皮蛋熊(robo_jet@qq.com),就职于某小公司,从事GPU驱动开发工作。