跳转到主要内容

远程机器学习

为了缓解低内存系统上的性能问题,例如树莓派,您可以在更强大的系统上托管 Immich 的机器学习容器,例如您的笔记本或台式电脑。服务器容器将发送包含图像预览的请求到远程机器学习容器进行处理。机器学习容器不会保存这些数据或将其与特定用户关联。

信息

智能搜索和人脸检测会使用此功能,但人脸识别不会。这是因为人脸识别使用的是已经保存到数据库中的这些模型的输出。因此,它的处理是在服务器容器与数据库之间进行的。

危险

图像预览将发送到远程机器学习容器。在公共电脑或付费处理云上运行时,请谨慎使用此选项。此外,作为内部服务,机器学习容器没有任何安全措施。请注意其部署地点以及谁可以访问它。

  1. 确保远程服务器已安装 Docker
  2. 将以下 docker-compose.yml 文件复制到远程服务器
信息

如果使用硬件加速,还需要添加 hwaccel.ml.yml 文件,并根据硬件加速文档配置 docker-compose.yml

name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# 如果使用硬件加速,请在镜像标签中添加 -[armnn, cuda, rocm, openvino, rknn] 之一。
# 示例标签: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.ml.yml
# service: # 设置为 [armnn, cuda, rocm, openvino, openvino-wsl, rknn] 之一以进行加速推理 - 在适用的情况下使用 `-wsl` 版本以支持 WSL2
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003

volumes:
model-cache:
  1. 通过运行 docker compose up -d 启动远程机器学习容器
信息

两个主机之间的版本不匹配可能会导致错误和不稳定。因此,当更新本地 Immich 实例时,记得也要更新这个容器。

  1. 转到机器学习设置
  2. 点击 添加 URL
  3. 在新字段中填写远程机器学习容器的 URL,例如 http://ip:port

强制使用远程处理

建议在设置中添加新的 URL,而不是替换现有 URL。这是因为当远程服务器停止时,它可以让机器学习任务通过回退到本地机器学习容器成功处理。如果您不希望在远程服务器不可用时本地处理机器学习任务,您可以替换现有的 URL,仅提供远程容器的 URL。在这种情况下,您可以删除本地 docker-compose.yml 文件中的 immich-machine-learning 部分以节省资源,因为该服务将永远不会被使用。

请注意,这将意味着当远程实例不可用时,智能搜索和人脸检测任务将无法处理。这反过来意味着依赖这些功能的任务(如重复检测和人脸识别)将不会为受影响的资源运行。如果发生这种情况,您必须在任务状态页面中点击智能搜索和人脸检测旁边的 缺失 按钮,以重新尝试这些任务。

负载均衡

设置中可以提供多个 URL,但它们是按顺序尝试的;不会尝试在多个容器间分配负载。建议为此类使用场景使用专用负载均衡器,并将其指定为唯一的 URL。除此之外,它可能还允许在同一服务器上使用不同的 API,方法是在具有不同配置的情况下运行多个容器。例如,可以运行一个 OpenVINO 容器以及一个 CUDA 容器,或者运行一个标准发布容器以最大化 CPU 和 GPU 的使用率。

提示

机器学习容器可以共享给多个 Immich 实例,无论特定实例使用哪些模型。然而,使用不同的模型会导致更高的峰值内存使用。