Synology 群晖 Nvidia vGPU 实践指南
更新信息 20230902: 修复所有机型显示GPU使用/统计情况。 20230827: 修复重启机器后docker可能不正常的现象,修复可能发生的驱动不正常现象。 20230826:物理群晖DS918+显卡1050、p4、40hx、2080、2080ti测试成功,DS1821+白群+1650测试失败(暂未计划支持)。 20230818:支持所有X86,4.0机型vGPU,直通(DVA3221,DVA3219)。对于直接物理群晖安装暂未适配(但可能是支持的)。 已测试支持机型: DVA3221,DVA3219(秀儿),DS918+,DS923+;期待各位朋友的测试和补充。 20230812:理论支持DVA机型vGPU,直通,以及物理群晖,等待更多数据验证。 计划 初版的各种bugfix。 40hx的系统玩法测试。 尝试支持更多的群晖验证。 pascal版本的群晖AI功能。 turing版本的群呼AI功能。 结论 先说结论,目前在DVA3221平台上,适配了vGPU 14.4(510.108.03)版本,底层需要使用>=(510.108.03)的版本(也即是510~535理论都可以用),群晖中需要安装本驱动。在tesla P4和2080Ti进行了测试,测试项目包括,(docker、openGL、编解码、群晖AI识别),由于DVA3221 的Photos不会使用GPU,所以该包不影响该功能,目标: Pascal:包大小350MB附近,无法使用群晖监控的AI功能,其他正常。 Turing:包大小750MB附近,可以完整使用所有群晖的GPU功能。 目前关于AI监控还存在一些没有定论的问题,请稍后整理结论再分享。 关键词:群晖 synology 英伟达 nvidia vGPU 虚拟GPU GPU共享 前言 最近佛西群的群友在讨论群晖是否可以使用Nvidia vGPU用于转码,人脸识别,AI等任务,看讨论结果好像是目前不可以。正好我对群晖的系统颇有好感,且对vGPU兴趣浓厚,所以在佛西群主、秀儿和几位大佬的支持下开始了探索行动。经过两个周末和一些零碎时间的探索,对于群晖支持vGPU已有一个明确的定论 -> 支持,但存在一些限制;探索过程曲折漫长,想必各位网友并不关心这个过程,所以我直接切入主题,从安装开始讲起。 安装过程 先简述一下安装流程: PVE/ESXi/Unraid等Host创建群晖虚拟机(此时请不要将vgpu分配给虚拟机)。 正常安装群晖虚拟机。 卸载系统自带的NVIDIARuntimeLibrary(如果有) 安装皮蛋熊提供的驱动(vgpuDaemon fix & stop & start) 关闭群晖虚拟机。 将vgpu分配给群晖虚拟机,然后启动群晖虚拟机。 注意:如果已经安装过本驱动并使用中,要升级最新版本的驱动需要按照下面步骤进行: 卸载本驱动(非常重要,需要先卸载) 安装皮蛋熊提供的更新版本的驱动(vgpuDaemon fix & stop & start) 即可正常使用 下面详细讲述安装步骤。 环境准备 配置介绍: 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和监控,然后安装本驱动包。 到这一步时,请修改为你的授权服务器地址(还没搭建?可以参考佛西大佬的博客) 来自民间的VGPU授权fastapi-dls 安装完成后可看到新安装的驱动: 安装完成后打开系统的SSH功能: 然后使用ssh工具连接群晖系统,输入sudo -i输入密码后即可切换root账户,输入vgpuDaemon fix即可修复权限。 此时进入套件中心,停用本套件,然后紧接着启用本套件,即可开启正常使用vGPU驱动,在终端中输入nvidia-smi命令即可验证。 此时群晖系统也可以正常识别到GPU的相关信息: docker安装 如果系统原来就已经安装了docker(Containe rManager)套件,此时只需要停止下该套件,然后重新启动该套件即可。 如果系统是新的,没有安装Container Manager套件,此时需要先安装该套件;安装完成后,将本套件停止再启动。 但如果想要让docker版本的Emby使用vGPU驱动,那么需要在ssh下以root用户下输入启动指令(需要删除每行 # 后面的内容)启动容器: docker run \ --network=bridge \ #设置网络模式 -p '8096:8096' \ #映射http端口 -p '8920:8920' \ #映射https端口 -v /volume1/docker/jellyfin:/config \ #映射配置目录 -v /volume1/video/:/media \ #映射媒体库目录 -e TZ="Asia/Shanghai" \ #设置时区为上海 -e UID=1026 \ #设置用户id -> 可以使用对应用户权限 -e GID=100 \ #设置用户组id -e GIDLIST=0 \ #设置权限 --restart always \ #在Docker服务重启时,自动重启此容器 --runtime=nvidia \ #映射NVIDIA显卡 -e NVIDIA_VISIBLE_DEVICES=all \ #映射NVIDIA显卡 -e NVIDIA_DRIVER_CAPABILITIES=all \ #映射NVIDIA显卡 -e UMASK=000 \ # 设置访问文件的权限 --name jellyfin \ #容器名称 -d jellyfin/jellyfin:latest 这里新增的三条指令表示使用nvidia驱动,其他Plex和Emby等需要使用GPU的程序也是在原有的基础上添加这三句: --runtime=nvidia \ -e NVIDIA_VISIBLE_DEVICES=all \ -e NVIDIA_DRIVER_CAPABILITIES=all \ 比如Emby可以使用下面命令启动: docker run \ --network=bridge \ #设置网络模式 -p '8096:8096' \ #映射端口 -v /volume1/docker/emby:/config \ #映射配置目录 -v /volume/video/:/media \ #映射媒体库目录 -e TZ="Asia/Shanghai" \ #设置时区 -e UID=1026 \ #设置权限 -e GID=100 \ #设置权限 -e GIDLIST=0 \ #设置权限 --restart always \ #在Docker服务重启时,自动重启此容器 --runtime=nvidia \ #映射NVIDIA显卡 -e NVIDIA_VISIBLE_DEVICES=all \ #映射NVIDIA显卡 -e NVIDIA_DRIVER_CAPABILITIES=all \ #映射NVIDIA显卡 -e UMASK=000 \ #设置权限 --name emby \ #容器名称 -d emby/embyserver:latest 比如Plex可以使用下面命令启动(具体意思对照上面的文档): docker run -d \ --name=plex \ --net=host \ -e PLEX_UID=1026 \ -e PLEX_GID=100 \ -e TZ=Asia/Shanghai \ -e VERSION=docker \ -v /volume1/docker/plex:/config \ -v /volume1/video/:/media \ --runtime=nvidia \ -e NVIDIA_VISIBLE_DEVICES=all \ -e NVIDIA_DRIVER_CAPABILITIES=all \ --restart unless-stopped \ plexinc/pms-docker 确保上述指令的正确性,关于上述其他指令的意思,可以通过网络进一步查询。 上面指令执行: 执行完成后该界面无报错就意味着完成了,可在群晖的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监控所需的功能都测试完成后会一并附上结论并将包释放出来。 包呢?我人比较懒,直接放群共享了,需要的加群下载就可以了,每次更新上传网盘再来修改链接有点烦。 矿神源里面也有一份,可以直接根据本文教程使用,但这驱动文件一般比较大,担心矿神腰包顶不住的CDN费用的可以去群文件里面下载。 致谢 感谢佛西群的多位大佬指导,感谢佛西大佬送的五香牛肉干和kxxxm送的酸酸乳。 帮助 我一个人能力有限,没有更多的显卡数据,希望得到各位的帮助,帮忙做一些测试,以便更好的完善该驱动。 遇到的问题答复 重启后因套件启动慢,而docker或者emby套件启动快,导致这两个套件无法使用GPU。(2023.08.27修复docker,其他套件信息需要更多测试) 解决办法: 手动重启一下无法使用GPU的套件(docker或者emby等)。 使用稍微修改一下下面脚本,放到计划任务开机启动即可。 最近比较忙,等我抽空修改一下,下一次更新优先修改这个。 !/bin/bash sleep 30 bash /var/packages/ContainerManager/scripts/start-stop-status stop; bash /var/packages/ContainerManager/scripts/start-stop-status start; 或者 (来自矿神) synopkg stop ContainerManager synopkg start ContainerManager 某些白裙搭配某些显卡无法使用该驱动 解决办法: 等待群晖适配新的显卡驱动 我可接单适配,因为白裙的孱弱性能,搭配高级显卡,我实在不知道啥应用场景,我自己也没这需求,太小众了。 某些黑裙直通搭配某些显卡无法使用该驱动 解决办法: 我没遇到,目前主流的黑裙+P4、2080Ti、40Hx、1050都测试支持。 群晖没理由需要那么强,那么新的显卡,群晖可以干的活一般1050Ti顶够了,其他需求建议使用ubuntu代替,实在有特殊需求可接单适配。 重启后套件/docker无法使用GPU,但可以看到GPU被占用(2023.08.27修复docker) 解决办法: 由于长时间没有下载回来授权导致,建议换一个自己本地搭建的授权服务器,参考地址 来自民间的VGPU授权fastapi-dls 下一版本会修复该问题。
版权声明:
作者:隔壁小色
链接:https://www.fanooo.com/archives/312
文章版权归作者所有,未经允许请勿转载。
THE END