『瀚思彼岸』» 智能家居技术论坛
标题: PVE+ vGPU Tesla P4 + Frigate 的简单尝试 [打印本页]
作者: hood2000 时间: 2024-4-8 16:33
标题: PVE+ vGPU Tesla P4 + Frigate 的简单尝试
本帖最后由 hood2000 于 2024-8-25 14:21 编辑
1.服务器
二手华为2288hv5 一台,垃圾矿卡 tesla P4 一张。
[attach]57726[/attach]
2.监控设备
垃圾tplink一套,支持rtsp 。
[attach]57727[/attach]
3.环境配置(1)PVE配置vGPU host 驱动,单独部署一个docker FastAPI-DLS授权服务,将P4 切分给虚拟机。不得不说,P4这张卡,300多一片,8G显存,待机功耗10w,满载75w,我按2g显存切成为4份,分别配置给黑群、win11、Jellyfin和Frigate,一般软件和解码足够用了。 具体可参考 https://xinalin.com/159/vgpu-configuration-on-pve 。
[attach]57729[/attach]
(2)配置Frigate专用的虚拟机,要用ubuntu server,安装vGPU驱动。驱动装好之后如下图,暂时忽略下面的ffmpeg进程,这是加载了6个摄像头的进程。
[attach]57733[/attach]
(3)配置docker部署frigate。这里可参照使用Frigate配合摄像头进行人数统计最详细的中文教程 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com),也要参照官方文档 Full Reference Config | Frigate。
- image: ghcr.io/blakeblackshear/frigate:stable-tensorrt #镜像文件看官方文档,这里选用了自带模型的镜像。
- devices: #这是docker直通虚拟机显卡的配置,nvidia gpu及驱动。
- - driver: nvidia
- count: 1
- capabilities: [gpu]
- devices:
- - /dev/dri/renderD128:/dev/dri/renderD128
复制代码- volumes:
- - /root/frigate/:/config
- - /root/frigate/storage:/media/frigate #建议加上,需要下载模型文件
-
- <blockquote>ffmpeg:
- hwaccel_args: preset-nvidia-h264 #GPU
复制代码
[attach]57734[/attach]
(4)frigate配置。配置参照文档自己调整,用gpu模型需要配置好detectors和model。- mqtt:
- host: 192.168. . #mqtt的ip
- port: 1883 #mqtt端口
- user: mqtt #mqtt用户名,如果没有的话,可不写
- password: #mqtt密码,如果没有的话,可不写
- client_id: frigate #用于区分
- detectors:
- tensorrt:
- type: tensorrt #nvidia tensorrt
- device: 0 #第一个gpu
- model:
- path: /config/model_cache/tensorrt/yolov7-tiny-288.trt
- input_tensor: nchw
- input_pixel_format: rgb
- width: 288
- height: 288
-
- objects:
- track:
- - person
- - dog
- - face
- cameras:
- South:
- enabled: True
- record:
- enabled: True
- ffmpeg:
- inputs:
- - path: rtsp://admin:*****@1.1.1. 1:554/stream2&channel2
- roles:
- - detect
- - audio
- - record
- audio:
- enabled: True
- detect:
- enabled: True
- ffmpeg:
- hwaccel_args: preset-nvidia-h264 #GPU
复制代码
4.效果控制界面
[attach]57739[/attach]
动态鹰眼图,可以实时看所有的摄像头。
[attach]57740[/attach]
动态事件,在gpu和模型的加持下,有一点风吹草动都跑不掉,比tplink的app更灵敏更准确。但是,目前发现人狗不分。。。
[attach]57741[/attach]
有gpu的支持,系统占用喜人,功耗不超过30w
[attach]57742[/attach]
5.模型选择
frigate docker部署完成后,如果需要重新选择物体检测的模型,需要删除docker重新构建并生成相应预训练文件。备份好docker-compose.yml和config.yml ,分别在相应位置修改。
模型可选范围Object Detectors | Frigate
- frigate:
- environment:
- - YOLO_MODELS=yolov7-320,yolov7x-640 #模型可选范围见
- - USE_FP16=false
复制代码
- detectors:
- tensorrt:
- type: tensorrt
- device: 0 #This is the default, select the first GPU
- model:
- path: /config/model_cache/tensorrt/yolov7-320.trt #预训练的模型文件
- input_tensor: nchw
- input_pixel_format: rgb
- width: 320 #与上面文件尺寸对应
- height: 320
复制代码
初次编译模型的时间还是挺长的,如果同时选择了几个,不要着急。
[attach]57839[/attach]
换成yolov7-320,分辨率4608x1260占用大概在300m左右,分辨率1792x490大概在150m,识别的成功率明显提高,但是显存和功耗也相应提升不少。
p4在切片为2g显存的情况下,如果采用yolov7-640 ,不足以支持以上6台摄像头。
[attach]57841[/attach][attach]57842[/attach]配合mqtt推送给手机客户端,可参照下文。
Frigate + MQTT + HA 推送摄像头----更新为PushDeer推视截图+视频 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
[attach]57840[/attach]
6.更新问题处理1.虚机机restore之后无法恢复。 restore之后,grid驱动授权会失效,症状是启动正常,但是过一会,视频无法采集,编译器无法启用。按上面vgpu驱动安装中教程重新获取授权即可。
作者: hhh. 时间: 2024-4-8 16:42
4.06ms 的能力,雀食牛皮。
P4这个卡美中不足的就是解码不支持AV1。
作者: godzqh 时间: 2024-4-8 16:48
居然人狗不分
作者: twfjcn 时间: 2024-4-8 16:55
价格感人
作者: hood2000 时间: 2024-4-8 16:55
应该是模型输入只有288x288像素,所以人狗不分,估计换个大模型应该可以。不过,考虑到功耗和实际需求,影响不大。
作者: jjcs 时间: 2024-4-8 16:56
请问pve部署vgpu是要在宿主系统部署吗,有详细部署命令吗,谢谢
作者: hood2000 时间: 2024-4-8 16:58
本帖最后由 hood2000 于 2024-4-8 17:00 编辑
https://xinalin.com/159/vgpu-configuration-on-pve
相信这个帖子能解决你的问题,方法、驱动、破解都在里面。
作者: jjcs 时间: 2024-4-8 17:19
论坛有你更精彩
作者: hood2000 时间: 2024-4-8 19:00
能不能打赏一点
作者: ryanh7 时间: 2024-4-8 20:23
yolov7是这样的,实测误报有点严重。p4的价格已经不美丽了,最近不得已在用p106训练小模型,速度和电费都吐了
作者: 1uv_can 时间: 2024-4-8 23:42
esxi行不行?
作者: sauron 时间: 2024-4-9 00:46
感谢分享,换aio了就试试
作者: hood2000 时间: 2024-4-9 05:40
p40和p100也行吧
作者: hood2000 时间: 2024-4-9 05:41
esxi也行,没啥区别,但是没有pve自由方便,还是推荐pve
作者: crazychen 时间: 2024-4-10 12:54
我也是有相似的需求,一直没有研究成果,今天楼主可就放出来方案了
作者: crazychen 时间: 2024-4-10 12:58
要是部署细节再详细些就好了

作者: hood2000 时间: 2024-4-10 13:53
有问题可以一起研究,具体部署的步骤可以搜索一下,大同小异。
作者: recoco 时间: 2024-4-11 13:52
P4 现在涨价了。楼主用的是服务器,其实可以用P100 ,计算能力强大不少。
作者: crazychen 时间: 2024-4-12 06:12
本帖最后由 crazychen 于 2024-4-12 06:54 编辑
楼主,pve及 P4驱动已安装搞定,但ubuntu下的frigate部署老是出问题,容器无法正常运行,驱动安装完成后,还有啥需要注意的吗?
作者: hood2000 时间: 2024-4-12 19:24
看一下docker的logs,有啥提示?
作者: crazychen 时间: 2024-4-12 19:47
本帖最后由 crazychen 于 2024-4-12 19:53 编辑
2024-04-12 11:46:17.012419260 [INFO] Preparing new go2rtc config...
Traceback (most recent call last):
File "/usr/local/go2rtc/create_config.py", line 35, in <module>
with open(config_file) as f:
IsADirectoryError: [Errno 21] Is a directory: '/config/config.yml'
2024-04-12 11:46:17.229555538 [INFO] The go2rtc service exited with code 1 (by signal 0)
另外想群晖的vgpu驱动目前只有525版本的,我看您的pve宿主机版本535的能正常使用吗?
作者: hood2000 时间: 2024-4-12 20:27
[Errno 21] Is a directory: '/config/config.yml'
这个是不是你的docker compose文件里映射的有问题?贴下设置文件看看。
我用的535在主贴中关于vgpu设置的链接中有最新的驱动,都能用。
作者: crazychen 时间: 2024-4-12 20:36
version: "3.9"
services:
frigate:
container_name: frigate
privileged: true
user: "root"
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable-tensorrt #这个镜像可以到官网找,我这里是用的当前最新的beat版本,最好实时到官网去找最新版
shm_size: "256mb"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
devices:
- /dev/dri/renderD128:/dev/dri/renderD128 #这个是硬件加速用的,目前可写可不写
volumes:
- /etc/localtime:/etc/localtime:ro
- /root/frigate/config.yml:/config/config.yml:ro #这里就是需要修改路径的地方,如果上方你不是在root目录下建立的frigate文件夹,就修改成你对应的文件夹
- /root/frigate/storage:/media/frigate #如上
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000" #访问端口
- "1935:1935" #这是frigate转换出的一个流访问端口,可要可不要
environment:
- USE_FP16=false
- YOLO_MODELS=yolov7-tiny-288
作者: crazychen 时间: 2024-4-12 20:37
本帖最后由 crazychen 于 2024-4-12 20:44 编辑
配置文件如下:
mqtt:
host: xxx.xxx.x..xxx #mqtt的ip
port: 1883 #mqtt端口
user: xxx #mqtt用户名,如果没有的话,可不写
password: xxxx #mqtt密码,如果没有的话,可不写
client_id: frigate #用于区分
detectors:
tensorrt:
type: tensorrt #nvidia tensorrt
device: 0 #第一个gpu
model:
path: /config/model_cache/tensorrt/yolov7-tiny-288.trt
input_tensor: nchw
input_pixel_format: rgb
width: 288
height: 288
objects:
track:
- person
- car
- face
cameras:
South:
enabled: True
record:
enabled: True
ffmpeg:
inputs:
- path: rtsp://admin:[email protected] ... eaming/Channels/102
roles:
- detect
- audio
- record
audio:
enabled: True
detect:
enabled: True
ffmpeg:
hwaccel_args: preset-nvidia-h264 #GPU
作者: crazychen 时间: 2024-4-12 20:40
您的意思是群晖像ubuntu一样安装驱动和授权吗?我之前是用的皮皮熊的驱动
作者: hood2000 时间: 2024-4-12 21:54
我忘了为什么要多加个config目录的映射
作者: hood2000 时间: 2024-4-12 21:56
我看错了,能不能共享一下皮皮熊的驱动?
作者: crazychen 时间: 2024-4-13 04:39
记错名字了是皮蛋熊
,这是他的网站说明,https://blog.kkk.rs/archives/12 群晖社区套件里面有的
作者: crazychen 时间: 2024-4-13 05:07
加了配置文件目录还是那个错误
作者: crazychen 时间: 2024-4-13 07:24
本帖最后由 crazychen 于 2024-4-13 17:46 编辑
请问您ubuntu用的是哪个版本呀,还是没找到问题出在哪里
作者: hood2000 时间: 2024-4-13 20:45
本帖最后由 hood2000 于 2024-4-13 21:42 编辑
ubuntu 22.04
我觉得不应该是系统版本的问题,试试 chmod 777 config.yml ,看看是否读写权限的问题。
或者把config.yml这行注释掉试试。
另外,每次是否重新删除container重新创建?
作者: 新生活 时间: 2024-4-13 23:30
厉害了,学习,谢谢分享,mark
作者: crazychen 时间: 2024-4-14 06:27
我把ront目录下的frigate移动到home下重新拉的,哪个错误没了,但又有新的
ensive_goodall
crazychen@ubuntu2:/home/frigate$ sudo docker logs 5a887d19d108
s6-rc: info: service s6rc-fdholder: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service s6rc-fdholder successfully started
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service trt-model-prepare: starting
s6-rc: info: service log-prepare: starting
s6-rc: info: service log-prepare successfully started
s6-rc: info: service nginx-log: starting
Generating the following TRT Models: yolov7-tiny-288
s6-rc: info: service go2rtc-log: starting
Downloading yolo weights
s6-rc: info: service frigate-log: starting
s6-rc: info: service nginx-log successfully started
s6-rc: info: service go2rtc-log successfully started
s6-rc: info: service go2rtc: starting
s6-rc: info: service frigate-log successfully started
s6-rc: info: service go2rtc successfully started
s6-rc: info: service go2rtc-healthcheck: starting
2024-04-13 22:25:25.489638044 [INFO] Preparing new go2rtc config...
s6-rc: info: service go2rtc-healthcheck successfully started
s6-rc: warning: unable to start service trt-model-prepare: command exited 4
2024-04-13 22:25:25.738726543 [INFO] Starting go2rtc...
2024-04-13 22:25:25.820817678 22:25:25.820 INF go2rtc version 1.8.4 linux/amd64
2024-04-13 22:25:25.821397255 22:25:25.821 INF [api] listen addr=:1984
2024-04-13 22:25:25.821613666 22:25:25.821 INF [rtsp] listen addr=:8554
2024-04-13 22:25:25.821820680 22:25:25.821 INF [webrtc] listen addr=:8555
2024-04-13 22:25:35.494943638 [INFO] Starting go2rtc healthcheck service...
作者: crazychen 时间: 2024-4-14 08:50
最后一顿胡倒腾,总算打开后台页面了,但ffmpeg 出错
2024-04-14 00:46:30.404408461 Traceback (most recent call last):
2024-04-14 00:46:30.404411187 File "/usr/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap
2024-04-14 00:46:30.404415765 self.run()
2024-04-14 00:46:30.404418310 File "/usr/lib/python3.9/multiprocessing/process.py", line 108, in run
2024-04-14 00:46:30.404420073 self._target(*self._args, **self._kwargs)
2024-04-14 00:46:30.404421658 File "/opt/frigate/frigate/object_detection.py", line 102, in run_detector
2024-04-14 00:46:30.404456532 object_detector = LocalObjectDetector(detector_config=detector_config)
2024-04-14 00:46:30.404458432 File "/opt/frigate/frigate/object_detection.py", line 53, in __init__
2024-04-14 00:46:30.404459811 self.detect_api = create_detector(detector_config)
2024-04-14 00:46:30.404461218 File "/opt/frigate/frigate/detectors/__init__.py", line 18, in create_detector
2024-04-14 00:46:30.404492962 return api(detector_config)
2024-04-14 00:46:30.404494525 File "/opt/frigate/frigate/detectors/plugins/tensorrt.py", line 220, in __init__
2024-04-14 00:46:30.404496058 self.engine = self._load_engine(detector_config.model.path)
2024-04-14 00:46:30.404497547 File "/opt/frigate/frigate/detectors/plugins/tensorrt.py", line 88, in _load_engine
2024-04-14 00:46:30.404507829 with open(model_path, "rb") as f, trt.Runtime(self.trt_logger) as runtime:
2024-04-14 00:46:30.404527297 FileNotFoundError: [Errno 2] No such file or directory: '/home/frigate/model_cache/tensorrt/8.5.3/yolov5nu.trt'
2024-04-14 00:46:30.404528824 Exception ignored in: <function TensorRtDetector.__del__ at 0x7fc3637b3d30>
2024-04-14 00:46:30.404530065 Traceback (most recent call last):
2024-04-14 00:46:30.404531544 File "/opt/frigate/frigate/detectors/plugins/tensorrt.py", line 239, in __del__
2024-04-14 00:46:30.404656008 if self.outputs is not None:
2024-04-14 00:46:30.404709969 AttributeError: 'TensorRtDetector' object has no attribute 'outputs'
2024-04-14 00:46:31.384495370 [2024-04-14 00:46:31] audio.South ERROR : ffmpeg process is not running,
作者: hood2000 时间: 2024-4-14 17:48
本帖最后由 hood2000 于 2024-4-14 19:36 编辑
是模型文件的问题。在docker compose过程中有问题,就是下面这个提示:
s6-rc: warning: unable to start service trt-model-prepare: command exited
你可以你重新compose试一下,shm_size 设置大一点,1024MB试一下。另外,看一下我主贴第5部分的图片,生成模型文件有个过程,如果logs中没有,就是没有成功。
作者: c1pher_小愚 时间: 2024-4-15 16:25
但是p4买不到,咳咳。我用tpu还行
作者: crazychen 时间: 2024-4-18 07:37
本帖最后由 crazychen 于 2024-4-18 07:45 编辑
我尝试更改更大尺寸还是不行,模型文件无法生成,模型文件可以手动下载吗?
还有就是提示版本低不知道有影响吗?root@ubuntu2:/home/frigate# docker compose up -d
WARN[0000] /home/frigate/docker-compose.yml: `version` is obsolete
作者: hood2000 时间: 2024-4-18 08:29
yml版本只是提醒,没啥影响。
模型文件应该可以下载,另外,如果有fq环境,试一下,很多脚本尤其是涉及到在github上拉文件都可能受影响。,
作者: crazychen 时间: 2024-4-18 12:15
试了,切换到科学环境下,仍没反应,郁闷至极
作者: hood2000 时间: 2024-4-18 12:26
没有道理啊,我试了重新compose,也能正常下载模型文件。
作者: crazychen 时间: 2024-4-18 12:29
是我环境布置的问题吗?已经授权了,显示授权时间了
作者: c1pher_小愚 时间: 2024-4-18 14:12
哪还有300的p4了。。。都600+了
作者: crazychen 时间: 2024-4-19 20:44
感谢楼主的教程,及文件,已成功,谢谢
作者: hood2000 时间: 2024-4-19 20:46
后面优化的路途更遥远……..
作者: royedia 时间: 2024-8-3 01:12
太可怕了.. 比你有钱还比你努力..还比你会玩.
作者: yangrusen 时间: 2024-12-1 00:51
大佬,我的容器设置都是对的,但是卡在这一步。是不是需要科学上网从外面下载一些东西啊。
C:\Users\elvis.yang\Downloads\屏幕截图 2024-12-01 005029.png
作者: karl321 时间: 2024-12-1 11:04
一模一样的用法,但是 我frigate用这个 功耗就增加20W 所以我关了
作者: myyangchen 时间: 2024-12-18 10:57
老哥,问问怎么编译模型?
作者: audie 时间: 2025-1-5 22:35
我的也是trt模型的问题,想请教下这个模型是会自己下载吗?这是我的错误代码,如果要配置科学环境,是直接用把http_proxy和https_proxy直接天际到环境里面吗?
- 2025-01-05 22:25:26.924494008 [INFO] Preparing new go2rtc config...
- 2025-01-05 22:25:28.493294318 [INFO] Starting go2rtc...
- 2025-01-05 22:25:28.676507971 22:25:28.676 INF go2rtc platform=linux/amd64 revision=b2399f3 version=1.9.2
- 2025-01-05 22:25:28.676569931 22:25:28.676 INF config path=/dev/shm/go2rtc.yaml
- 2025-01-05 22:25:28.677082892 22:25:28.677 INF [rtsp] listen addr=:8554
- 2025-01-05 22:25:28.677203162 22:25:28.677 INF [api] listen addr=:1984
- 2025-01-05 22:25:28.677402793 22:25:28.677 INF [webrtc] listen addr=:8555/tcp
- s6-rc: warning: unable to start service trt-model-prepare: command exited 4
- 2025-01-05 22:25:36.759566966 [INFO] Starting go2rtc healthcheck service...
复制代码
这是我的错误代码,我现在就卡在模型这里了,是这样等他自己下载好吗?
作者: someoneelse 时间: 2025-1-8 17:52
如果p4不需要vgpu,是不是就不用授权服务器了?比如把p4直通给docker,所有用到gpu的服务都部署在docker
作者: jjcs 时间: 2025-6-9 22:01
大佬有一个问题,我使用vgpu,映射给lxc容器,需不需要授权
作者: hood2000 时间: 2025-6-16 12:43
应该是这样的,只不过有点浪费。
欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) |
Powered by Discuz! X3.5 |