I have a P400 in my storage server which currently also runs some media containers like Plex, sonarr-sma, radarr-sma, Jellyfin, exploring Immich, etc. I have the GPU surfaced via docker and added it to each of the containers that needed access to the GPU for hardware acceleration needs. Is it possible to be able to leverage the Nvidia gpu container remotely (over the lan) without having the containers access it (pseudo) directly? I want to move the media handling containers to a Turing Pi 2 and keep just the GPU access on the storage server.
deleted by creator
Serious bumdiddlyummer
Not sure about docker support, but there is a gpu-over-ip implementation that supports Linux here: https://github.com/Juice-Labs/Juice-Labs
This is interesting, thanks!
Exit: Sadly, they don’t support media encoding at all. So might still be useful for ML duties.
Not possible AFAIK, plus it will degrade the performance due to the latency etc, IMO it’s not feasible and not the best way if you want to leverage your GPU’s horsepower.
You will need to keep the transcoding in the storage server, maybe the rest (a viewer, manager etc) you can move to the Turing Pi 2.
But then, if it’s for a real time decoding, it’s not possible. Rather than getting an SBC like the Pi styled computers, consider getting something like a motherboard that has built in J4125 from Biostar which has a PCI-E slot and move your GPU to that Biostar mobo to handle all your media needs. And keep the storage server GPU-less.
Transcoding on download seems like the easiest use case, I could use Tdarr and have one node with the GPU. But for apps like Immich that use the GPU for both transcoding (raw to jpg?) and for ML purposes (facial recognition) I’m guessing the container will have to run on the hardware where the GPU is, which means Plex and Jellyfin will also have to follow the gpu.
I’ve definitely thought about moving the GPU to a dedicated mini itx box. Wonder if I could find something rack friendly…
here is a super user post about pcie virtualization, and it involves writing custom drivers.
Off the top of my head, a similar setup with transcoding comes to mind. In this case I used a shared volume mount between the media server and the transcoding server, and ssh to run ffmpeg on the remote server.
I think an easier setup would be to proxy app calls that use the gpu through ssh to your gpu container, then write the output to a volume that the non gpu host can read from.
If you’re looking for transcoding, check out rffmpeg