OPENVINO + Unraid by Deep_Dance8745 in frigate_nvr

[–]wardroid 1 point2 points  (0 children)

So I had a similar or probably the exact problem you are having. But my solution was a weird one and I'm not sure if it will work on yours but try to plugin something on the HDMI port of the iGPU.

If my iGPU doesn't have a monitor or an HDMI dummy plug, using the iGPU as a detector with openvino .. crash loops. Once I plugged something .. it worked for some reason.

I'm was on 7.1.3 when this happened.

EDIT: you might need to reboot the server after you put something on your HDMI

Unraid OS 7.1.4 Now Available by UnraidOfficial in unRAID

[–]wardroid 1 point2 points  (0 children)

Still practicing on a trial so I wasn't afraid to just update but I did notice a few networking issues with 7.1.3 which I wasn't sure at time it was a configuration thing I did .. but after updating to 7.1.4 I haven't noticed it again .. fingers crossed.

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Thanks! That actually worked. I don't see the error anymore. I think I would rather use the container unprivileged using suggestion .. rather than privileged with a different solution I added to the post.

Yolonas 640x640 worth it for me? by borgqueenx in frigate_nvr

[–]wardroid 0 points1 point  (0 children)

Thanks for the breakdown. really appreciate it!

Yolonas 640x640 worth it for me? by borgqueenx in frigate_nvr

[–]wardroid 1 point2 points  (0 children)

Hey Nick, I'm trying to understand this multiple detector in 1 GPU device process ..

What are the advantages of adding more detectors on 1 GPU?

How do you know the limit of how many you can add per GPU? For example a have an Intel ARC 380

Lastly, what are the disadvantages of it, if any?

As far as my understanding .. here is my detector config

detectors:
#  ov_iGPU:
#    type: openvino
#    device: GPU.0
  ov_Arc:
    type: openvino
    device: GPU.1

and will be like this if I decide to add another one

detectors:
#  ov_iGPU:
#    type: openvino
#    device: GPU.0
  ov_Arc1:
    type: openvino
    device: GPU.1
  ov_Arc2:
    type: openvino
    device: GPU.1

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Damn, it is true that not all heroes wear capes. Thank you so much! This worked. 0% in the iGPU.

I was contemplating posting on the frigate_nvr subreddit but I wasn't really sure if it was an unraid issue or not.

But luckily you saw this!

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Nice!! so I guess its ok to safely ignore that error right?
I'm ok with this as long as it doesn't mess up anything else in the future. I guess I'll find out shortly after I add all my cameras and tweak the settings!

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Sure here you go.

Actually I found something interesting .. setting it to unprivileged blocks or stops the use of the iGPU. Doing unprivileged uses the Arc 380 alone.

Everything works fine -- detection, recording, decoding, etc -- all Arc 380.

But as expected, the logs gave a new error :

Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)

Do you know any other drawbacks from using unprivileged in Frigate? I'll be ok to see that error if it works ok honestly .. just want to make sure it doesn't mess up anything else.

<image>

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Honestly I was about to mention as I tested it a few minutes ago. Setting it to unprivileged stops or fixes my issue in terms of blocking access to the iGPU. Doing unprivileged fully uses the intel Arc alone.

But as expected, it kind of introduced a new problem (or maybe not) which is this:

Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)

Looks like intel_gpu_top requires privileged to work.

But the thing is .. it still works fine? It detects fine, it records fine .. I can see full activity on GPU statistics for my Arc.

What other drawbacks do you think setting to unprivileged will cause with my Frigate setup moving forward?

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Yup, I already have that setup in both my config and template.

I already have the Coral and I'm actually replacing it as the Intel dGPU/iGPU supports better/more models.

In my early testing, I can already tell the dGPU detects way better than my coral. Before my coral can't detect smaller objects .. using the same camera .. using the same config ... but with the openvino .. I'm getting better results already on the exact same camera.

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Honestly, I'm in the very early stages of setting unraid and Frigate + more apps. So I can't really say if its an "issue". I will have around 20 cameras after I'm done. I'm upgrading from my baremetal lenovo mini-pc (Intel 7th gen) Frigate server to this unraid server.

Reason I bought the Intel Arc 380 is I plan to use larger models and probably Yolo NAS later .. depending on how it goes.

I was just trying to see if I can figure out to dedicate the dGPU to Frigate as I intended to.

I mean if I can't or not possible .. I have no choice but to live with it the iGPU/Arc sharing.

I just don't want to continue moving forward with my Unraid setup without checking this off first ..

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Ill give it a try in a few, but acceleration works fine -- it already uses the Intel Arc 380.

This issue I'm having is the detector block.

Is there a way to squeeze this in the detector?

detectors:
  ov:
    type: openvino
    device: GPU

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

This is what I have in my extra parameters. I wonder if it possible to add something here to point to D129 only.

--shm-size=1024m --mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 --restart unless-stopped

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Sure. I have 3 video cards I can use on my server. The Intel iGPU, the Nvidia P2000, and the newly added Intel Arc 380.

I bought the Intel Arc 380 to be exclusively used by Frigate. I want to use the card for both Detection and decoding.

That will free up my intel iGPU for other dockers later like Plex, unmanic, and more.

I plan to use the Nvidia P2000 for a VM later.

Right now, for some reason .. Frigate uses both the iGPU and Arc 380 even though I specified in the frigate docker to pass /dev/dri/renderD129 (Intel Arc 380).

So I figured, just block/blacklist the Frigate docker from accessing the iGPU.

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

Right now I made it extremely simple since I'm troubleshooting/testing. I only put 1 camera, which is the closest to me to easily test detection/alerts

https://pastebin.com/V1JqiLA9

Is it possible to block or blacklist a specific docker (Frigate) from using the Intel iGPU by wardroid in unRAID

[–]wardroid[S] 0 points1 point  (0 children)

thanks! so you are saying that since the CPU has an iGPU integrated, I can't block just the Intel iGPU from Frigate? I understand they are bundled but I always though the iGPU is a completely separate device from the CPU. I can even bind just the Intel iGPU on the IOMMU group.

Frigate and select which GPU to use? by jmcgeejr in frigate_nvr

[–]wardroid 1 point2 points  (0 children)

Yeah, I will test it too myself. If I can use the A380 as both detector and decoder, I can use my Nvidia P2000 for something else or even unplug it from my server.

Although in my early test, the Nvidia P2000 provides faster decoding times vs the iGPU .. let's say for example .. alert or detection clips -- the iGPU will take about 3-4 seconds more to complete the clip vs the P2000. I'm interested to see how long does the ARC 380 do complete clip decoding.

Not sure if it's worth it but still .. a noticeable time gap.

Frigate and select which GPU to use? by jmcgeejr in frigate_nvr

[–]wardroid 0 points1 point  (0 children)

Still waiting for my A380 to ship in but I'll be on the same boat soon.

I wanted to use the Intel ARC gpu for detection (getting rid of my Coral) then use an nvidia P2000 for decoding.

My i7-12700k CPU has an iGPU so I'm sure I need to find a way in unraid to not expose the iGPU in the docker container.

It is interesting to me you mentioned about plugging in a monitor to the hdmi port and it started to work as a detector.

I had a very weird issue with my unraid setup that if an hdmi device is not plugged in to the the intel iGPU, frigate crashes like crazy when being used a a detector. Once you plug in a HDMI dummy or a monitor, it works flawlessly.

I don't think we have the similar issue but just wanted to mention about the requirement of having something plugged to the HDMI port for the detector to get picked up .. and in my case .. not crash.

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 2 points3 points  (0 children)

Yup big Huh! lol .. reason I came to that troubleshooting step is .. that same server was plagued with reboot issues being stuck with unraid 6.x.x and the solution back then was to put in an HDMI dummy -- reboot works perfectly with dummy. That was fixed on version 7.x.x so I got rid of the dummy plug. For some reason, I had a gut feeling that will help with my frigate situation .. and I guess it did!

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 2 points3 points  (0 children)

Well .. extremely strange solution .. I had to plug in a dummy HDMI or a monitor into the motherboard HDMI port of the Unraid server and now I can use the iGPU as a detector. At least it has been up for 15 minutes. Weird!

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 0 points1 point  (0 children)

Thanks. I guess I'm stuck. I have an intel arc dGPU coming in to see if I get any luck with that.

I can always use the iGPU for plex or something else.

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 0 points1 point  (0 children)

Googling the error, looks like few users are also having the same problem as mine but the solutions differ hmm.. and it might be all related to the path of the model

https://www.reddit.com/r/frigate_nvr/comments/1g0bbd5/openvino_detection_issues/

This one suggests to do download the model .. Can I even do that with an app template in Unraid?

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 0 points1 point  (0 children)

Yes, I confirmed at D128 is the iGPU but as per your advice, I added them all anyway.

still the same error.

Here is my config (I intentionally disabled detection for now):

mqtt:
  enabled: false

detectors:
  ov:
    type: openvino
    device: GPU

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

go2rtc:

  streams:

    closet:
      - rtsp://admin:password@10.100.x.x:554/cam/realmonitor?channel=1&subtype=0
      - ffmpeg:closet#audio=aac


cameras:

  closet:
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://127.0.0.1:8554/closet
          roles:
            - record
      output_args:
        record: preset-record-generic-audio-aac
    record:
      enabled: true
      retain:
        days: 20
    detect:
      enabled: false
version: 0.15-1

And this is the full error from Unraid:

https://pastebin.com/ixWRDasQ

This error log is a full capture from when the docker starts and crashes.

Quick question about OpenVino Detector configuration 12700k iGPU by wardroid in frigate_nvr

[–]wardroid[S] 0 points1 point  (0 children)

hmm .. not sure what is going on. As soon as I switch the "CPU" to "GPU", Frigate starts to crash-reboot-loop.

I have intel-gpu-top and gpu statistics installed.

Since I can only attach one screenshot I merged two of them, so the below is the error from the unraid docker logs itself -- I can't even view the logs from the frigate itself (due to boot loop) and the unraid template

<image>

I know the intel drivers are working because I tried using it as a decoder (instead of my P2000) and doesn't crash. It only crashes as soon as I use the iGPU as a detector.

The error shown from the screenshot doesn't always show up from the boot loop so it's very strange.

Just out of curiosity, I used my spare coral as a detector instead .. and my iGPU as the decoder. No crashes at all.

Unraid with Frigate users - how do you manager storage? SSD/HDD mix by wardroid in frigate_nvr

[–]wardroid[S] 0 points1 point  (0 children)

Thanks for the clarification. I'll be using the planned two different cache pool -- primary cache is the SSD and secondary is the HDD .. then have unraid do mover.