Remote Mashine Learning Settings

hey there Is remote machine learning also used for duplicate detection? For which features is remote machine learning used? In which order are the URLs tested from the web interface — from top to bottom or from bottom to top? 2. I use ans Nvidia RTX 5060 TI and on my WSL this Compose file: cat docker-compose.yml
version: "3.9"
name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# WICHTIG: CUDA-Variante verwenden
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda

# GPU in Docker Desktop/WSL2 freigeben
# Primär (funktioniert in den meisten Setups):
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility

# Alternative (falls Dein Compose "runtime" nicht akzeptiert):
# Achtung: "deploy" wird lokal oft ignoriert; nur nutzen, wenn es bei Dir greift.
# deploy:
# resources:
# reservations:
# devices:
# - capabilities: ["gpu"]

# API-Port nur im LAN verwenden (nicht öffentlich exponieren)
ports:
- "${ML_PORT:-3003}:3003"

volumes:
- model-cache:/cache

restart: unless-stopped

logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"

volumes:
model-cache:
version: "3.9"
name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# WICHTIG: CUDA-Variante verwenden
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda

# GPU in Docker Desktop/WSL2 freigeben
# Primär (funktioniert in den meisten Setups):
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility

# Alternative (falls Dein Compose "runtime" nicht akzeptiert):
# Achtung: "deploy" wird lokal oft ignoriert; nur nutzen, wenn es bei Dir greift.
# deploy:
# resources:
# reservations:
# devices:
# - capabilities: ["gpu"]

# API-Port nur im LAN verwenden (nicht öffentlich exponieren)
ports:
- "${ML_PORT:-3003}:3003"

volumes:
- model-cache:/cache

restart: unless-stopped

logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"

volumes:
model-cache:
But my GPU is not used for Face detection, waiting 12.378 images, Active 1 Port is open (immich server) sudo nmap -sT -Pn 192.168.178.107 -p 3003
Starting Nmap 7.80 ( https://nmap.org ) at 2025-08-22 11:57 CEST
Nmap scan report for desktop-6p79g8t (192.168.178.107)
Host is up (0.0020s latency).

PORT STATE SERVICE
3003/tcp open cgms

Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
Starting Nmap 7.80 ( https://nmap.org ) at 2025-08-22 11:57 CEST
Nmap scan report for desktop-6p79g8t (192.168.178.107)
Host is up (0.0020s latency).

PORT STATE SERVICE
3003/tcp open cgms

Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
No description
No description
11 Replies
Immich
Immich2mo ago
:wave: Hey @palpatine, 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 Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: 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. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
palpatine
palpatineOP2mo ago
@Mraedis thx
No description
Mraedis
Mraedis2mo ago
I don't see any enabled hwaccel config in your compose? Start with the website template and don't follow chatgpt
palpatine
palpatineOP2mo ago
i was also trying this: https://immich.app/docs/guides/remote-machine-learning/ docker compose.yml:
name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
extends:
file: hwaccel.ml.yml
service: cuda # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003

volumes:
model-cache:
name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
extends:
file: hwaccel.ml.yml
service: cuda # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003

volumes:
model-cache:
and hwaccel.ml.yml
# Configurations for hardware-accelerated machine learning

# If using Unraid or another platform that doesn't allow multiple Compose files,
# you can inline the config for a backend by copying its contents
# into the immich-machine-learning service in the docker-compose.yml file.

# See https://immich.app/docs/features/ml-hardware-acceleration for info on usage.

services:
armnn:
devices:
- /dev/mali0:/dev/mali0
volumes:
- /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)
- /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required)

rknn:
security_opt:
- systempaths=unconfined
- apparmor=unconfined
devices:
- /dev/dri:/dev/dri

cpu: {}

cuda:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu

rocm:
group_add:
- video
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd

openvino:
device_cgroup_rules:
- 'c 189:* rmw'
devices:
- /dev/dri:/dev/dri
volumes:
- /dev/bus/usb:/dev/bus/usb

openvino-wsl:
devices:
- /dev/dri:/dev/dri
- /dev/dxg:/dev/dxg
volumes:
- /dev/bus/usb:/dev/bus/usb
- /usr/lib/wsl:/usr/lib/wsl
# Configurations for hardware-accelerated machine learning

# If using Unraid or another platform that doesn't allow multiple Compose files,
# you can inline the config for a backend by copying its contents
# into the immich-machine-learning service in the docker-compose.yml file.

# See https://immich.app/docs/features/ml-hardware-acceleration for info on usage.

services:
armnn:
devices:
- /dev/mali0:/dev/mali0
volumes:
- /lib/firmware/mali_csffw.bin:/lib/firmware/mali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)
- /usr/lib/libmali.so:/usr/lib/libmali.so:ro # Mali driver for your chipset (always required)

rknn:
security_opt:
- systempaths=unconfined
- apparmor=unconfined
devices:
- /dev/dri:/dev/dri

cpu: {}

cuda:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu

rocm:
group_add:
- video
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd

openvino:
device_cgroup_rules:
- 'c 189:* rmw'
devices:
- /dev/dri:/dev/dri
volumes:
- /dev/bus/usb:/dev/bus/usb

openvino-wsl:
devices:
- /dev/dri:/dev/dri
- /dev/dxg:/dev/dxg
volumes:
- /dev/bus/usb:/dev/bus/usb
- /usr/lib/wsl:/usr/lib/wsl
palpatine
palpatineOP2mo ago
He is not using my GPU
$ docker compose pull && docker compose up -d && docker compose logs -f
[+] Pulling 1/1
✔ immich-machine-learning Pulled 0.7s
[+] Running 1/1
✔ Container immich_machine_learning Started 0.8s
immich_machine_learning | [08/22/25 10:30:58] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:30:58] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:30:58] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:30:58] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:31:01] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:31:01] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:31:01] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:31:01] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:31:01] INFO Application startup complete.
$ docker compose pull && docker compose up -d && docker compose logs -f
[+] Pulling 1/1
✔ immich-machine-learning Pulled 0.7s
[+] Running 1/1
✔ Container immich_machine_learning Started 0.8s
immich_machine_learning | [08/22/25 10:30:58] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:30:58] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:30:58] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:30:58] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:31:01] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:31:01] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:31:01] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:31:01] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:31:01] INFO Application startup complete.
No description
Mraedis
Mraedis2mo ago
Are you sure Or did you just expect a higher usage %? Don't forget the limiting factor here is the network/storage
palpatine
palpatineOP2mo ago
I didn’t see any activity in my logs. I know it was working on an older version in the past, and I was able to see logs back then. I also tested directly from my Immich container:
$ docker exec -it immich_server bash
root@0ae4f4a3b183:/usr/src/app# curl -sS http://192.168.178.107:3003
{"message":"Immich ML"}
$ docker exec -it immich_server bash
root@0ae4f4a3b183:/usr/src/app# curl -sS http://192.168.178.107:3003
{"message":"Immich ML"}
So the Immich server is able to connect to my desktop PC on port 3003. However, I still don’t see any logs. My expected behavior is that I should see log entries inside my WSL container whenever remote machine learning is being used.
docker compose logs -f
[+] Pulling 1/1
✔ immich-machine-learning Pulled 0.8s
[+] Running 1/1
✔ Container immich_machine_learning Started 1.2s
immich_machine_learning | [08/22/25 10:37:03] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:37:03] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:37:03] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:37:03] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:37:04] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:37:04] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:37:04] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:37:04] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:37:04] INFO Application startup complete.
docker compose logs -f
[+] Pulling 1/1
✔ immich-machine-learning Pulled 0.8s
[+] Running 1/1
✔ Container immich_machine_learning Started 1.2s
immich_machine_learning | [08/22/25 10:37:03] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:37:03] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:37:03] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:37:03] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:37:04] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:37:04] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:37:04] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:37:04] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:37:04] INFO Application startup complete.
No actions
Mraedis
Mraedis2mo ago
Try removing the internal machine learning url and see what's going on, maybe your container can't be reached?
palpatine
palpatineOP2mo ago
mh, i was restarting the immich container and restart "INTELLIGENTE SUCHE" Activ: 2 waiting: 93.667 wsl logs:
immich_machine_learning | [08/22/25 10:47:30] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:47:30] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:47:30] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:47:30] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:47:33] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:47:33] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:47:33] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:47:33] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:47:33] INFO Application startup complete.
immich_machine_learning | [08/22/25 10:49:33] INFO Loading visual model 'ViT-B-32__openai' to memory
immich_machine_learning | [08/22/25 10:49:33] INFO Setting execution providers to
immich_machine_learning | ['CPUExecutionProvider'], in descending order of
immich_machine_learning | preference
immich_machine_learning | [08/22/25 10:47:30] INFO Starting gunicorn 23.0.0
immich_machine_learning | [08/22/25 10:47:30] INFO Listening at: http://[::]:3003 (8)
immich_machine_learning | [08/22/25 10:47:30] INFO Using worker: immich_ml.config.CustomUvicornWorker
immich_machine_learning | [08/22/25 10:47:30] INFO Booting worker with pid: 9
immich_machine_learning | [08/22/25 10:47:33] INFO Started server process [9]
immich_machine_learning | [08/22/25 10:47:33] INFO Waiting for application startup.
immich_machine_learning | [08/22/25 10:47:33] INFO Created in-memory cache with unloading after 300s
immich_machine_learning | of inactivity.
immich_machine_learning | [08/22/25 10:47:33] INFO Initialized request thread pool with 12 threads.
immich_machine_learning | [08/22/25 10:47:33] INFO Application startup complete.
immich_machine_learning | [08/22/25 10:49:33] INFO Loading visual model 'ViT-B-32__openai' to memory
immich_machine_learning | [08/22/25 10:49:33] INFO Setting execution providers to
immich_machine_learning | ['CPUExecutionProvider'], in descending order of
immich_machine_learning | preference
Now it looks like he is using my gpu / WSL Im confused that my GPU is around at 1 - 10 % ussage. My Server is using nvme and my desktop pc too. MY local connection is direct cat 7 and lowest iy my intel n100 CPU on Server side
Mraedis
Mraedis2mo ago
All you need to pay attention to is the amount of requests it can parse/second If going from normal to GPU-accelerated means 5/s to 50/s then that's 10x improvement Don't try to 100% your GPU, it won't work
palpatine
palpatineOP2mo ago
is there a way to check that remote ml is working ?
[08/22/25 13:59:11] INFO Downloading visual model

'ViT-SO400M-16-SigLIP2-384__webli'. This may take a

while.


Fetching 339 files: 0%| | 0/339 [00:00<?, ?it/s]

....
[08/22/25 14:00:00] INFO Loading visual model

'ViT-SO400M-16-SigLIP2-384__webli' to memory

[08/22/25 14:00:00] INFO Setting execution providers to

['CPUExecutionProvider'], in descending order of

preference

[08/22/25 14:33:43] INFO Shutting down due to inactivity.

[08/22/25 14:33:43] INFO Shutting down

[08/22/25 14:33:43] INFO Waiting for application shutdown.

[08/22/25 14:33:43] INFO Application shutdown complete.

[08/22/25 14:33:43] INFO Finished server process [1105]

[08/22/25 14:33:43] ERROR Worker (pid:1105) was sent SIGINT!

[08/22/25 14:33:43] INFO Booting worker with pid: 3754

[08/22/25 14:33:45] INFO Started server process [3754]

[08/22/25 14:33:45] INFO Waiting for application startup.

[08/22/25 14:33:45] INFO Created in-memory cache with unloading after 300s

of inactivity.

[08/22/25 14:33:45] INFO Initialized request thread pool with 12 threads.

[08/22/25 14:33:45] INFO Application startup complete.
[08/22/25 13:59:11] INFO Downloading visual model

'ViT-SO400M-16-SigLIP2-384__webli'. This may take a

while.


Fetching 339 files: 0%| | 0/339 [00:00<?, ?it/s]

....
[08/22/25 14:00:00] INFO Loading visual model

'ViT-SO400M-16-SigLIP2-384__webli' to memory

[08/22/25 14:00:00] INFO Setting execution providers to

['CPUExecutionProvider'], in descending order of

preference

[08/22/25 14:33:43] INFO Shutting down due to inactivity.

[08/22/25 14:33:43] INFO Shutting down

[08/22/25 14:33:43] INFO Waiting for application shutdown.

[08/22/25 14:33:43] INFO Application shutdown complete.

[08/22/25 14:33:43] INFO Finished server process [1105]

[08/22/25 14:33:43] ERROR Worker (pid:1105) was sent SIGINT!

[08/22/25 14:33:43] INFO Booting worker with pid: 3754

[08/22/25 14:33:45] INFO Started server process [3754]

[08/22/25 14:33:45] INFO Waiting for application startup.

[08/22/25 14:33:45] INFO Created in-memory cache with unloading after 300s

of inactivity.

[08/22/25 14:33:45] INFO Initialized request thread pool with 12 threads.

[08/22/25 14:33:45] INFO Application startup complete.
But nothing happened. I thought Remote ML would work. Is there a log that shows this information?

Did you find this page helpful?