Switched to intel GPU, Immich now has no machine learning

Hello, I have built a homemade ZimaOS server with an intel 4690 and originally a RTX 2070.
I’ve swapped my 2070 for an Arc a310, however doing that seems to have caused Immich facial recognition to stop working.

I haven’t done any config just swapped the card. I’ve read the setup page from the Immich webpage but I am still new to linux and would like some step by step instructions for doing it on a ZimaOS ……Thanks in advance.

-Kevin

-intel-gpu-top works from the server terminal but not in the Immich docker one
-The GPU widget from the Zimaos home page has disappeared
-GPU transcoding is working in Jellyfin

Here is a segment from the immich.yaml :

name: immich
services:
database:
cpu_shares: 90
command:
container_name: immich-postgres
deploy:
resources:
limits:
memory: 33583419392
reservations:
devices:
environment:

  • POSTGRES_DB=immich
  • POSTGRES_INITDB_ARGS=–data-checksums
  • POSTGRES_PASSWORD=postgres
  • POSTGRES_USER=postgres
    hostname: immich-postgres
    image: Package postgres · GitHub
    labels:
    icon: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/Immich/icon.png
    restart: unless-stopped
    shm_size: “134217728”
    volumes:
  • type: bind
    source: /DATA/AppData/immich/pgdata
    target: /var/lib/postgresql/data
    bind:
    create_host_path: true
    ports:
    devices:
    cap_add:
    networks:
  • immich
    privileged: false
    immich-machine-learning:
    cpu_shares: 90
    command:
    container_name: immich-machine-learning
    deploy:
    resources:
    limits:
    memory: 33583419392
    reservations:
    devices:
  • capabilities:
  • gpu
    device_ids:
  • “0”
    environment:
  • DB_DATABASE_NAME=immich
  • DB_PASSWORD=postgres
  • DB_USERNAME=postgres
    hostname: immich-machine-learning
    healthcheck: {}
    image: ghcr.io/immich-app/immich-machine-learning:v2.1.0
    labels:
    icon: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/Immich/icon.png
    restart: unless-stopped
    volumes:
  • type: bind
    source: /DATA/AppData/immich/model-cache
    target: /cache
    bind:
    create_host_path: true
    ports:
    devices:
    cap_add:
    networks:
  • immich
    privileged: false
    immich-server:
    cpu_shares: 90
    command:
    container_name: immich-server
    depends_on:
    database:
    condition: service_started
    required: true
    redis:
    condition: service_started
    required: true
    deploy:
    resources:
    limits:
    memory: 33583419392
    reservations:
    memory: “1073741824”
    devices:
    environment:
  • DB_DATABASE_NAME=immich
  • DB_PASSWORD=postgres
  • DB_USERNAME=postgres
    hostname: immich-server
    healthcheck: {}
    image: ghcr.io/immich-app/immich-server:v2.1.0
    labels:
    icon: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS

From the part of your YAML you posted, the machine learning container still looks configured for the old NVIDIA-style GPU setup:

reservations:
  devices:
    capabilities:
      - gpu
    device_ids:
      - "0"

For Intel Arc / Intel GPU machine learning, Immich normally needs the OpenVINO machine-learning image and access to /dev/dri.

I would first verify what the host and container can actually see before changing too much.

From the ZimaOS terminal, run:

ls -l /dev/dri
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
docker logs immich-machine-learning --tail=100

Then check whether /dev/dri is visible inside the Immich machine-learning container:

docker exec -it immich-machine-learning ls -l /dev/dri

If /dev/dri is missing inside that container, the ML container is not being given access to the Intel GPU.

The machine-learning service will likely need something like this added/changed:

immich-machine-learning:
  image: ghcr.io/immich-app/immich-machine-learning:v2.1.0-openvino
  devices:
    - /dev/dri:/dev/dri

I would remove the NVIDIA-style deploy.resources.reservations.devices section from the machine-learning container when using Intel/OpenVINO.

After editing the compose file, restart only Immich:

docker compose -p immich up -d
docker logs immich-machine-learning --tail=100

Also worth noting: Jellyfin transcoding working does not automatically mean Immich machine learning has GPU access. Jellyfin and Immich ML are separate containers, so each one needs its own device mapping.

The missing ZimaOS GPU widget may be a separate ZimaOS detection issue with the Arc card, but since Jellyfin is using the GPU, I would first focus on the Immich ML container image and /dev/dri mapping.