Synology 群晖 Nvidia vGPU 实践指南

结论

先说结论,目前在DVA3221平台上,适配了vGPU 14.4(510.108.03)版本,底层需要使用该版本,上层同样需要使用对应的版本。在tesla P4和2080Ti进行了测试,测试项目包括,(docker、openGL、编解码、群晖AI识别),由于Photos不会使用GPU,所以该包不影响该功能,目标:

  1. Pascal:包大小350MB附近,无法使用群晖监控的AI功能,其他正常。
  2. 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安装群晖的教程,可以在张大妈上搜一下。

特别提醒:

  1. 如果要使用群晖监控,请准备好正确的序列号,不然安装后授权是0。
  2. 群晖系统安装时,请不要将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:

  1. 官方原版支持的功能,该版本都支持;
  2. 显卡vgpu功能开启后,可多个虚拟机共享GPU算力,比直通更高效利用GPU;
  3. 该版本的编解码支持更为完善,jellyfin、emby、plex的最新版本均可正常开启硬解;
  4. 集成了docker runtime,启动上述媒体服务器时参数更为简单。
  5. 没有原版存在的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驱动开发工作。

posted @ 2023-08-12 18:23  爪爪熊  阅读(1798)  评论(0编辑  收藏  举报