Hardware accelerated video transcoding with multiple worker nodes with dissimilar GPUs/APIs/vendors does not work #4403

Closed
opened 2026-02-05 10:19:32 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @skelefour on GitHub (Sep 25, 2024).

The bug

I'm unsure if this is the expected behavior, but while scaling my installation across a second device, it appears as of now, to be impossible to mix hardware acceleration APIs between worker nodes.

The OS that Immich Server is running on

Debian 12

Version of Immich Server

v1.115.0

Version of Immich Mobile App

n/a

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

standard

Your .env content

standard

Reproduction steps

Hardware:
1. Main server with an Intel GPU supporting QuickSync Video
2. A separate "immich_server" worker node on a second machine with an Nvidia GPU supporting NVENC

With the webui configured at:
Administration > Server Settings > Video Transcode Settings
to use the QuickSync Video for transcoding, immich expects and requires the additional worker node to also use QSV.

A likely workaround would be to use the VAAPI backend instead, as it is more widely supported across GPU vendors, however, per the docs, use of the hardware specific APIs is generally preferred. The docs also currently state immich does not support hardware decoding with VAAPI, so CPU load would also increase somewhat.

Ideally, individual configuration of hardware transcoding would be possible for each worker, allowing each worker to utilize their preferred acceleration API.

Relevant log from worker node equipped with Nvidia GPU attached below.

Relevant log output

immich_server            | [Nest] 7  - 09/25/2024, 6:19:29 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:29 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:29 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:29 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:30 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:31 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:31 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found
immich_server            | [Nest] 7  - 09/25/2024, 6:19:31 AM   ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found

Additional information

No response

Originally created by @skelefour on GitHub (Sep 25, 2024). ### The bug I'm unsure if this is the expected behavior, but while scaling my installation across a second device, it appears as of now, to be **impossible to mix hardware acceleration APIs between worker nodes.** ### The OS that Immich Server is running on Debian 12 ### Version of Immich Server v1.115.0 ### Version of Immich Mobile App n/a ### Platform with the issue - [X] Server - [ ] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML standard ``` ### Your .env content ```Shell standard ``` ### Reproduction steps Hardware: 1. Main server with an Intel GPU supporting QuickSync Video 2. A separate "immich_server" worker node on a second machine with an Nvidia GPU supporting NVENC With the webui configured at: Administration > Server Settings > Video Transcode Settings to use the QuickSync Video for transcoding, **immich expects and requires the additional worker node to also use QSV.** A likely workaround would be to use the VAAPI backend instead, as it is more widely supported across GPU vendors, however, per the docs, use of the hardware specific APIs is generally preferred. The docs also currently state immich does not support hardware _decoding_ with VAAPI, so CPU load would also increase somewhat. Ideally, individual configuration of hardware transcoding would be possible for each worker, allowing each worker to utilize their preferred acceleration API. Relevant log from worker node equipped with Nvidia GPU attached below. ### Relevant log output ```shell immich_server | [Nest] 7 - 09/25/2024, 6:19:29 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:29 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:29 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:29 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:30 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:31 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:31 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found immich_server | [Nest] 7 - 09/25/2024, 6:19:31 AM ERROR [Microservices:MediaService] An error occurred while configuring transcoding options: Error: No QSV device found ``` ### Additional information _No response_
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#4403