Hallo zusammen,
hat jemand eine Idee wie ich die Hardwarebeschleunigung in Immich nutzen kann? Ich habe mich an der offiziellen Anleitung orientiert:
Immich Docs - features - hardware-transcoding
Immich Docs - features - machine learning
Für die Hardware Transcodierung habe ich Quicksync ausgewählt und unter Verwaltung -> Einstellungen -> Videotranskodierung aktiviert.
Das scheint auch zu funktionieren, beim Umwandeln von Videos ging die GPU Auslastung zumindest auf 8% im Task Manager.
Machine Learning nutzt die GPU aber leider gar nicht. Hier habe ich openvino ausgewählt, weil es laut Recherche mit Intel GPUs funktionieren sollte.
Mein Docker Compose sieht so aus:
name: immich
services:
immich-server:
container_name: immich_server
privileged: true
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: hwaccel.transcoding.yml
service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
- /volume1/Bilder:/mnt/media/Bilder:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
privileged: true
# 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:-openvino}
extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
file: hwaccel.ml.yml
service: openvino # 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
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:41eacbe83eca995561fe43814fd4891e16e39632806253848efaf04d3c8a8b84
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
# DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: always
volumes:
model-cache:
Display More
Die Dateien .env hwaccel.transcoding.yml hwaccel.ml.yml liegen im Immich Docker Ordner.
Falls ihr euch fragt, warum ich dem Service privileged: true gegeben habe: Das war ein verzweifelter Versuch, nachdem ich gelesen hatte, dass der Container dadurch Zugriff auf die benötigten Treiber erhält.