Immich video transcode using multiple QuickSync pipeline encoders, found in Intel i7 13600 CPU

Is this currently possible? I have a Render128 and Render129 devices available as the i7 13600 and above have two encoders. Can they be used together to accelerate jobs?
15 Replies
Immich
Immich4mo ago
:wave: Hey @CyberSocialist, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA
Immich
Immich4mo ago
Checklist I have... 1. :blue_square: verified I'm on the latest release(note that mobile app releases may take some time). 2. :blue_square: read applicable release notes. 3. :blue_square: reviewed the FAQs for known issues. 4. :blue_square: reviewed Github for known issues. 5. :blue_square: tried accessing Immich via local ip (without a custom reverse proxy). 6. :blue_square: uploaded the relevant information (see below). 7. :blue_square: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed.
GitHub
immich-app immich · Discussions
Explore the GitHub Discussions forum for immich-app immich. Discuss code, ask questions & collaborate with the developer community.
GitHub
Issues · immich-app/immich
High performance self-hosted photo and video management solution. - Issues · immich-app/immich
CrushedAsian255
CrushedAsian2554mo ago
Do you mean combining them into one larger faster unit, or using them both at the same time to run 2 jobs at once?
Tempest
Tempest4mo ago
I believe you'd need to setup 2 ml containers, and specify one GPU per container, and then setup a load balancer for requests
CrushedAsian255
CrushedAsian2554mo ago
are we talking about video transcoding or ML acceleration?
CyberSocialist
CyberSocialistOP4mo ago
Ideally I'd like to use QuickSync for all that it can be used for. Can I use it for ML & Video? If so , then yes. The guides I've seen only stipulate how to set up '1' hw accelerator. My CPU has 2 QuickSync pipelines as per 13600 and above processors so I have 2 render units at my disposal.
sogan
sogan4mo ago
You’d need a second server container to accomplish that. Pass only renderD128 to one and renderD129 to the other. You can see this, but don’t set IMMICH_WORKERS_INCLUDE=api because you still want to use it for transcoding
CyberSocialist
CyberSocialistOP4mo ago
ok, thanks. so to be clear: - tasks need to be assigned to a specific immich container ahead of time? - there is no HA / load-sharing between two render devices based upon demand? don't they both = the same thing? I mean, I think it's probably not parallelisable to split a single 'task' on a single photo into two shared threads so sharing the load between the two pipelines across 'a lot of photos' is acceptable - on a large enough set of photos we'd probably get to almost 2x speed up (1/2 the total job time) , right?
sogan
sogan4mo ago
No, it’s a pull model where you have jobs stored in redis and 1 or more workers that pull from the queue. It’s just that 1 worker has 1 configuration for transcoding, so if you want 2 devices to be used you need 2 workers. They will work on different jobs in parallel One thing to keep in mind is that concurrency limits are per worker, so since they’re on the same machine in this case you might want to decrease job concurrencies after adding the second worker
CyberSocialist
CyberSocialistOP4mo ago
Got it. Can I check then (as per https://www.reddit.com/r/immich/comments/1cn0n8x/what_does_and_does_not_use_hardware_acceleration/ ) the 'tasks' that QuickSync can do are : 1) Transcode videos 2) recognise faces / smart search But not: 3) make thumbnails? And can each of these be assigned to a worker in any permutation, such as worker 1 can do all of the above but worker 2 can be used to only transcode video?
Reddit
From the immich community on Reddit
Explore this post and more from the immich community
sogan
sogan4mo ago
No, worker 1 and worker 2 will both do all tasks. Quick Sync specifically is only for transcoding, but you can use OpenVINO for ML In the future we might have a separate worker for transcoding so you can scale it up without scaling other tasks
CyberSocialist
CyberSocialistOP4mo ago
ah, that's not supported on the intel CPU - only dGPUs right?
sogan
sogan4mo ago
I should update the text on that for less confusion. It does work right now, but that’s after landing on a very specific combination of dependencies. A dependency update can easily cause regressions in this area
CyberSocialist
CyberSocialistOP4mo ago
ah - be good to know what these dependencies are. Worth me trying?
sogan
sogan4mo ago
The main one is onnxruntime-openvino at 1.18 (which comes with openvino 2024.1 IIRC): https://github.com/immich-app/immich/blob/50a2f6193f216d47443e013db72888a7ebe09842/machine-learning/pyproject.toml#L54 Updating that to 1.19.1 caused complaints that search wasn’t working correctly anymore

Did you find this page helpful?