I tried following the instructions here, hoping this would make the gpu available to the machine learning sub-service: Immich - NixOS Wiki
Checking with htop, radeontop and kde’s task manager, apparently the gpu is not used.
I’d like immich.machine-learning to detect faces/items etc. using the gpu. According to immich’s documentation, it should be possible: Hardware-Accelerated Machine Learning | Immich (it says the rocm image is big for some reason, but I use the nixos module anyways, not the docker image)
What should I do?
System info:
- system:
"x86_64-linux" - host os:
Linux 6.12.56, NixOS, 25.11 (Xantusia), 25.11.20251031.2fb006b - multi-user?:
yes - sandbox:
yes - version:
nix-env (Nix) 2.31.2 - nixpkgs:
/nix/store/xjjq52iwslhz6lbc621a31v0nfdhr5ks-source
System specs:
- CPU: AMD Ryzen 7 5700X (16) @ 4.66 GHz
- GPU: AMD Radeon RX 7600 [Discrete]
If it matters, I run a headless server, but I have added this line in my configuration.nix to use sunshine as a remote desktop
boot.kernelParams = [ "video=DP-1:1920x1080@60D" ];
Immich setup:
services.immich = {
enable = true;
port = 2283;
host = "0.0.0.0";
openFirewall = true;
machine-learning.enable = true;
accelerationDevices = [ "/dev/dri/renderD128" ];
#also tried using:
#accelerationDevices = null;
};
users.users.immich.extraGroups = [ "video" "render" ];
Also in case that’s useful:
$ tree /dev/dri
/dev/dri
├── by-path
│ ├── pci-0000:08:00.0-card -> ../card1
│ └── pci-0000:08:00.0-render -> ../renderD128
├── card1
└── renderD128
2 directories, 4 files
Logs from the 2 services:
immich-server.service.log
$ cat immich-server.service.log
Nov 01 18:14:07 nixos-base immich[9776]: [Nest] 9776 - 11/01/2025, 6:14:07 PM LOG [Api:EventRepository] Websocket Connect: 6I-F7sVi636Vh0o7AAAD
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_formerly_allocated_pages = 0',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '100',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_freshly_allocated_pages = 3',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '104',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_freed_pages = 3',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '108',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_formerly_allocated_pages = 3',
Nov 01 18:16:13 nixos-base immich[9590]: where: 'while cleaning up index "clip_index" of relation "public.smart_search"',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '100',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_freshly_allocated_pages = 0',
Nov 01 18:16:13 nixos-base immich[9590]: where: 'while cleaning up index "clip_index" of relation "public.smart_search"',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '104',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:13 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:13 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:13 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:13 nixos-base immich[9590]: message: 'maintain: number_of_freed_pages = 3',
Nov 01 18:16:13 nixos-base immich[9590]: where: 'while cleaning up index "clip_index" of relation "public.smart_search"',
Nov 01 18:16:13 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:13 nixos-base immich[9590]: line: '108',
Nov 01 18:16:13 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:13 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_formerly_allocated_pages = 3',
Nov 01 18:16:30 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '100',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_freshly_allocated_pages = 0',
Nov 01 18:16:30 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '104',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_freed_pages = 3',
Nov 01 18:16:30 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '108',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_formerly_allocated_pages = 0',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '100',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_freshly_allocated_pages = 3',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '104',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:30 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:30 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:30 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:30 nixos-base immich[9590]: message: 'maintain: number_of_freed_pages = 3',
Nov 01 18:16:30 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:30 nixos-base immich[9590]: line: '108',
Nov 01 18:16:30 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:30 nixos-base immich[9590]: }
Nov 01 18:16:31 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:31 PM LOG [Microservices:PersonService] Detected 1 new faces in asset cbeecb25-2d04-49c0-80a0-c2712401ff85
Nov 01 18:16:31 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:31 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 59a90513-bbfd-4bea-986a-b81cf3e3875b
Nov 01 18:16:31 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:31 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 7cb9fb3e-0cc0-4942-8fc2-ce97c0025fa6
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset c32f4561-1298-4a86-99ce-5d7ce55c9388
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset ee77445c-7d5f-4e05-9415-0c46e01f95fe
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset bd21b335-765f-47f0-9500-53d441ae5eeb
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 19f0b4a6-7a85-4cdb-97ea-0a328ff6e13a
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 2 new faces in asset 136814f3-1053-4494-a5f6-0c773231d39a
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 433c556e-89dc-4887-b773-d0b6263f0d96
Nov 01 18:16:32 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:32 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 6c56275a-32d5-4f7c-89de-9897d9c137f5
Nov 01 18:16:33 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:33 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 4f09c03a-4fed-45d5-a316-61255ee96e4b
Nov 01 18:16:33 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:33 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 19d622c5-0d57-4416-99f2-39be6cb1b6d1
Nov 01 18:16:34 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:34 PM LOG [Microservices:PersonService] Creating new person for face bf307cd9-41fc-4827-918b-d1fd1bf241d0
Nov 01 18:16:34 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:34 PM LOG [Microservices:PersonService] Creating new person for face ce0fdf66-785c-40d7-870d-af76d3e6de52
Nov 01 18:16:43 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:43 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:43 nixos-base immich[9590]: message: 'maintain: number_of_formerly_allocated_pages = 3',
Nov 01 18:16:43 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:43 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:43 nixos-base immich[9590]: line: '100',
Nov 01 18:16:43 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:43 nixos-base immich[9590]: }
Nov 01 18:16:43 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:43 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:43 nixos-base immich[9590]: message: 'maintain: number_of_freshly_allocated_pages = 0',
Nov 01 18:16:43 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:43 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:43 nixos-base immich[9590]: line: '104',
Nov 01 18:16:43 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:43 nixos-base immich[9590]: }
Nov 01 18:16:43 nixos-base immich[9590]: Postgres notice: {
Nov 01 18:16:43 nixos-base immich[9590]: severity_local: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: severity: 'INFO',
Nov 01 18:16:43 nixos-base immich[9590]: code: '00000',
Nov 01 18:16:43 nixos-base immich[9590]: message: 'maintain: number_of_freed_pages = 3',
Nov 01 18:16:43 nixos-base immich[9590]: where: 'while cleaning up index "face_index" of relation "public.face_search"',
Nov 01 18:16:43 nixos-base immich[9590]: file: 'algo.rs',
Nov 01 18:16:43 nixos-base immich[9590]: line: '108',
Nov 01 18:16:43 nixos-base immich[9590]: routine: 'vchord::index::vchordrq::algo::maintain'
Nov 01 18:16:43 nixos-base immich[9590]: }
Nov 01 18:16:43 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:43 PM LOG [Microservices:PersonService] Creating new person for face bf307cd9-41fc-4827-918b-d1fd1bf241d0
Nov 01 18:16:43 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:43 PM LOG [Microservices:PersonService] Creating new person for face ce0fdf66-785c-40d7-870d-af76d3e6de52
Nov 01 18:16:50 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:50 PM LOG [Microservices:MediaService] Transcoding video 5add9366-bce3-47b0-828b-3baed1bf6d7e without hardware acceleration
Nov 01 18:16:50 nixos-base immich[9590]: [Nest] 9590 - 11/01/2025, 6:16:50 PM LOG [Microservices:MediaService] Successfully encoded 5add9366-bce3-47b0-828b-3baed1bf6d7e
Nov 01 18:16:56 nixos-base immich[9776]: [Nest] 9776 - 11/01/2025, 6:16:56 PM LOG [Api:EventRepository] Websocket Disconnect: 6I-F7sVi636Vh0o7AAAD
immich-machine-learning.service.log
Apparently this only produces logs only when I restart the service, so I did that:
$ journalctl --since "2025-11-01 18:00:00" -u immich-machine-learning.service
Nov 01 18:21:37 nixos-base machine-learning[9874]: [2025-11-01 18:21:37 +0200] [9874] [INFO] Shutting down
Nov 01 18:21:38 nixos-base machine-learning[9874]: [2025-11-01 18:21:38 +0200] [9874] [INFO] Waiting for application shutdown.
Nov 01 18:21:38 nixos-base machine-learning[9874]: [2025-11-01 18:21:38 +0200] [9874] [INFO] Application shutdown complete.
Nov 01 18:21:38 nixos-base machine-learning[9874]: [2025-11-01 18:21:38 +0200] [9874] [INFO] Finished server process [9874]
Nov 01 18:21:38 nixos-base machine-learning[9589]: [2025-11-01 18:21:38 +0200] [9589] [ERROR] Worker (pid:9874) was sent SIGINT!
Nov 01 18:21:38 nixos-base machine-learning[12567]: [2025-11-01 18:21:38 +0200] [12567] [INFO] Booting worker with pid: 12567
Nov 01 18:21:38 nixos-base machine-learning[12567]: mkdir -p failed for path /var/empty/.config/matplotlib: [Errno 1] Operation not permitted: '/var/empty/.config'
Nov 01 18:21:38 nixos-base machine-learning[12567]: Matplotlib created a temporary cache directory at /tmp/matplotlib-xt9rv7va because there was an issue with the def>
Nov 01 18:21:39 nixos-base machine-learning[12567]: [2025-11-01 18:21:39 +0200] [12567] [INFO] Started server process [12567]
Nov 01 18:21:39 nixos-base machine-learning[12567]: [2025-11-01 18:21:39 +0200] [12567] [INFO] Waiting for application startup.
Nov 01 18:21:39 nixos-base machine-learning[12567]: [2025-11-01 18:21:39 +0200] [12567] [INFO] Application startup complete.
Nov 01 18:23:09 nixos-base systemd[1]: Stopping immich machine learning...
Nov 01 18:23:09 nixos-base machine-learning[9589]: [2025-11-01 18:23:09 +0200] [9589] [INFO] Handling signal: term
Nov 01 18:23:09 nixos-base machine-learning[12567]: [2025-11-01 18:23:09 +0200] [12567] [INFO] Shutting down
Nov 01 18:23:09 nixos-base machine-learning[12567]: [2025-11-01 18:23:09 +0200] [12567] [INFO] Waiting for application shutdown.
Nov 01 18:23:09 nixos-base machine-learning[12567]: [2025-11-01 18:23:09 +0200] [12567] [INFO] Application shutdown complete.
Nov 01 18:23:09 nixos-base machine-learning[12567]: [2025-11-01 18:23:09 +0200] [12567] [INFO] Finished server process [12567]
Nov 01 18:23:09 nixos-base machine-learning[9589]: [2025-11-01 18:23:09 +0200] [9589] [ERROR] Worker (pid:12567) was sent SIGTERM!
Nov 01 18:23:09 nixos-base machine-learning[9589]: [2025-11-01 18:23:09 +0200] [9589] [INFO] Shutting down: Master
Nov 01 18:23:09 nixos-base systemd[1]: immich-machine-learning.service: Deactivated successfully.
Nov 01 18:23:09 nixos-base systemd[1]: Stopped immich machine learning.
Nov 01 18:23:09 nixos-base systemd[1]: immich-machine-learning.service: Consumed 1min 47.413s CPU time, 1.2G memory peak, 72K written to disk, 18.6M incoming IP traff>
Nov 01 18:23:10 nixos-base systemd[1]: Started immich machine learning.
Nov 01 18:23:10 nixos-base machine-learning[12935]: [2025-11-01 18:23:10 +0200] [12935] [INFO] Starting gunicorn 23.0.0
Nov 01 18:23:10 nixos-base machine-learning[12935]: [2025-11-01 18:23:10 +0200] [12935] [INFO] Listening at: http://127.0.0.1:3003 (12935)
Nov 01 18:23:10 nixos-base machine-learning[12935]: [2025-11-01 18:23:10 +0200] [12935] [INFO] Using worker: immich_ml.config.CustomUvicornWorker
Nov 01 18:23:10 nixos-base machine-learning[13185]: [2025-11-01 18:23:10 +0200] [13185] [INFO] Booting worker with pid: 13185
Nov 01 18:23:11 nixos-base machine-learning[13185]: mkdir -p failed for path /var/empty/.config/matplotlib: [Errno 1] Operation not permitted: '/var/empty/.config'
Nov 01 18:23:11 nixos-base machine-learning[13185]: Matplotlib created a temporary cache directory at /tmp/matplotlib-fm1x7ibc because there was an issue with the def>
Nov 01 18:23:11 nixos-base machine-learning[13185]: [2025-11-01 18:23:11 +0200] [13185] [INFO] Started server process [13185]
Nov 01 18:23:11 nixos-base machine-learning[13185]: [2025-11-01 18:23:11 +0200] [13185] [INFO] Waiting for application startup.
Nov 01 18:23:11 nixos-base machine-learning[13185]: [2025-11-01 18:23:11 +0200] [13185] [INFO] Application startup complete.