收起左侧

immich硬件加速机器学习

1
回复
161
查看
[ 复制链接 ]

16

主题

13

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章

🚀 Immich 双卡硬件加速教学文档(第一次编辑代码粘上去不太习惯见谅)
本指南基于您拥有的NVIDIA Tesla P4 (dGPU)和Intel UHD Graphics 770 (iGPU)硬件,配置 Immich 实现机器学习加速和视频转码加速的分工合作。

📝 1. 准备工作与文件结构
为了实现硬件分工,Immich 采用extends关键字将通用配置与硬件加速配置分离。您需要在同一目录下准备以下三个文件:

.env:环境变量文件(包含端口、路径、数据库密码等)。

docker-compose.yml:主配置文件,定义所有服务和 NVIDIA ML 加速。

hwaccel.transcoding.yml:额外的配置文件,专门用于启用Intel QSV转码加速。

💻2.核心配置文件:docker-compose.yml
该文件是整个Immich系统的核心,它定义了四个服务,并配置了Tesla P4 (CUDA)机器学习加速。

# docker-compose.yml - Immich 最终双卡加速主配置文件

name: immich

services:
  immich-server:
    container_name: immich_server
    # 使用中国镜像地址
    image: ghcr.nju.edu.cn/immich-app/immich-server:${IMMICH_VERSION:-release}
  
    # ⭐ 引用 hwaccel.transcoding.yml 中的 quicksync 服务,启用 Intel UHD 770 QSV 加速 ⭐
    extends:
      file: hwaccel.transcoding.yml
      service: quicksync 
    
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      # 外部媒体库挂载点 (请根据实际路径保留或修改)
      - /vol2/1000/
      # ... (省略其他媒体库挂载点)
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
      - immich-machine-learning
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    # 使用 CUDA 版本镜像
    image: ghcr.nju.edu.cn/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
  
    # ⭐ 配置 NVIDIA Tesla P4 CUDA 加速 ⭐
    runtime: nvidia
    environment:
      # Immich 多 GPU/指定设备配置模式
      - MACHINE_LEARNING_DEVICE_IDS=0  # 假设 Tesla P4 的设备 ID 为 0 (请通过 nvidia-smi 确认)
      - MACHINE_LEARNING_WORKERS=1     # 对应设备数量
    
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: >-
        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTRES_USER}" || exit 1;
        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTRES_USER}" --tuples-only --no-align
        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
        echo "checksum failure count is $$Chksum";
        [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command: >-
      postgres
      -c shared_preload_libraries=vectors.so
      -c 'search_path="$$user", public, vectors'
      -c logging_collector=on
      -c max_wal_size=2GB
      -c shared_buffers=512MB
      -c wal_compression=on
    restart: always

volumes:
  model-cache:
    driver: local
收藏
送赞
分享

1

主题

51

回帖

0

牛值

初出茅庐

技术贴,顶起
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则