Immich hardware-accelerated machine learning

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • OrganicIron
  • Registratie: Juni 2007
  • Laatst online: 15-10 21:39
Mijn vraag
Ik heb sinds gister Immich in docker draaien op een Windows 2025 server. Ik zag dat de facial recognition concurrency op 1 gelimiteerd staat en dat ik met de default installatie geen HW acceleratie heb. Ik heb al wat stapjes gezet, maar krijg het niet voor elkaar. Ik begrijp niet precies wat/hoe devices werken in Docker voor Windows en wat ik daarvoor moet aanpassen.

Relevante software en hardware die ik gebruik
Ik heb een Windows 2025 servertje draaien op een i3-13100 CPU en wil via openvino proberen de ingebouwde GPU gebruiken (UHD Graphics 730) voor hardware acceleratie in de machine learning container.

Wat ik al gevonden of geprobeerd heb
Ik heb de compose file als volgt aangepast:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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}-openvino
        extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
            file: hwaccel.ml.yml
            service: openvino-wsl #cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
            - D:/Immich/model-cache:/cache
        env_file:
            - .env
        restart: always
        healthcheck:
            disable: false


Als ik de compse up doe krijg ik de foutmelding: Error response from daemon: error gathering device information while adding custom device "/dev/dri": no such file or directory

In de hwaccel.ml.yml staan de onderstaande openvino referenties. Ik begrijp niet precies waar naar verwezen wordt en wat ik moet aanpassen om dit ook in windows te laten werken. Zijn dit mappen met drivers, verwijzing naar hardware, beide, of heel iets anders? 🫣

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

Alle reacties


Acties:
  • 0 Henk 'm!

  • Endpoint
  • Registratie: April 2016
  • Laatst online: 16-10 06:54
/dev/dri is gebaseerd op een docker host die een Linux smaak draait. Als je het perse op Windows wilt draaien zul je het op een andere manier op moeten lossen(https://learn.microsoft.c...ntainers/gpu-acceleration)

Is er een reden waarom je docker op Windows draait?

Acties:
  • 0 Henk 'm!

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 00:43

Jazzy

Moderator SSC/PB

Moooooh!

Endpoint schreef op maandag 13 oktober 2025 @ 10:29:
/dev/dri is gebaseerd op een docker host die een Linux smaak draait. Als je het perse op Windows wilt draaien zul je het op een andere manier op moeten lossen(https://learn.microsoft.c...ntainers/gpu-acceleration)
Volgens mij zou dat ook gewoon op Windows moeten werken, zie ook de verwijzing naar WSL. Al heb ik geen /dev/dri op mijn non-Docker WSL2.

Edit: Instructies staan hier: https://github.com/openvi...ster/docs/accelerators.md

[ Voor 14% gewijzigd door Jazzy op 13-10-2025 13:15 ]

Exchange en Office 365 specialist. Mijn blog.


Acties:
  • 0 Henk 'm!

  • OrganicIron
  • Registratie: Juni 2007
  • Laatst online: 15-10 21:39
Thanks voor het meedenken @Endpoint & @Jazzy! Helaas krijg ik het nog niet voor elkaar.

@Endpoint : Het lijkt erop dat class/5B45201D-F2F2-4F3B-85BB-30FF1F953599 voor het meegeven van een GPU aan een windows container is, of begrijp ik dat verkeerd? Ik run linux based containers, maar vanaf een windows host. Als ik de compose file laadt klapt hij op class/{guid}.

@Jazzy
Als ik de dxg meegeef starten alle containers correct op, maar krijg ik onderstaande foutmeldingen in de log als ik videos opnieuw laat transcoden. Als ik ook de /dev/dri mee wil geven, dan krijg ik errors dat hij niet gevonden kan worden. Ik meen te begrijpen dat als de host wsl2 is, je dxg moet gebruiken? Als ik /dev/dxg:/dev/dri probeer, dan krijg ik ook foutmeldingen in de log bij het starten van een transcode job.

code:
1
2
3
4
5
6
7
openvino-wsl:
    devices:
      #- /dev/dri:/dev/dri
      - /dev/dxg:/dev/dxg
    volumes:
      - /dev/bus/usb:/dev/bus/usb
      - /usr/lib/wsl:/usr/lib/wsl


Video transcode settings in Immich:
Afbeeldingslocatie: https://tweakers.net/i/iw0d8SF_pI-2WcEMfHOFBMR58VA=/800x/filters:strip_exif()/f/image/KLjSGEX5U3q2SbALzDEKcXl2.png?f=fotoalbum_large

Log van de machine learning container
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[10/13/25 20:53:30] INFO     Starting gunicorn 23.0.0                           
[10/13/25 20:53:30] INFO     Listening at: http://[::]:3003 (8)                 
[10/13/25 20:53:30] INFO     Using worker: immich_ml.config.CustomUvicornWorker 
[10/13/25 20:53:30] INFO     Booting worker with pid: 9                         
[10/13/25 20:53:34] INFO     Started server process [9]                         
[10/13/25 20:53:34] INFO     Waiting for application startup.                   
[10/13/25 20:53:34] INFO     Created in-memory cache with unloading after 300s of inactivity.                                     
[10/13/25 20:53:34] INFO     Initialized request thread pool with 8 threads.    
[10/13/25 20:53:34] INFO     Application startup complete.                      
[10/13/25 20:57:55] INFO     Loading textual model 'ViT-B-32__openai' to memory 
[10/13/25 20:57:56] INFO     Setting execution providers to                     
                             ['OpenVINOExecutionProvider',                      
                             'CPUExecutionProvider'], in descending order of preference


Log van de sever container, na het starten van een transcode video -> all command (via Immich admin jobs pagina)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[Nest] 7  - 10/13/2025, 9:03:17 PM   ERROR [Microservices:{"id":"a32a3e34-d4e6-4d68-85a1-5d5fdde18254"}] Unable to run job handler (AssetEncodeVideo): Error: No /dev/dri devices found. If using Docker, make sure at least one /dev/dri device is mounted

Error: No /dev/dri devices found. If using Docker, make sure at least one /dev/dri device is mounted
    at QsvHwDecodeConfig.validateDevices (/usr/src/app/server/dist/utils/media.js:280:19)
    at QsvHwDecodeConfig.getDevice (/usr/src/app/server/dist/utils/media.js:288:37)
    at new BaseHWConfig (/usr/src/app/server/dist/utils/media.js:273:28)
    at new QsvHwDecodeConfig (/usr/src/app/server/dist/utils/media.js:601:1)
    at BaseConfig.getHWCodecConfig (/usr/src/app/server/dist/utils/media.js:47:23)
    at BaseConfig.create (/usr/src/app/server/dist/utils/media.js:15:21)
    at MediaService.handleVideoConversion (/usr/src/app/server/dist/services/media.service.js:349:44)
    at async JobService.onJobStart (/usr/src/app/server/dist/services/job.service.js:198:28)
    at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:126:13)
    at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.58.5/node_modules/bullmq/dist/cjs/classes/worker.js:498:32