Immich 远程机器学习

为了缓解树莓派等低内存系统的性能问题,可以把 Immich 的机器学习容器部署到更强大的系统,例如笔记本电脑或台式机。服务器容器会将包含图片预览的请求发送给远程机器学习容器处理。机器学习容器不会持久保存这些数据,也不会将它们关联到特定用户。

info

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

danger

图片预览会发送到远程机器学习容器。如果在公共计算机或付费云计算平台上运行,请谨慎使用这项功能。另外,机器学习容器是内部服务,本身没有任何安全防护措施。请注意部署位置以及哪些人能够访问它。

  1. 确保远程服务器已经安装 Docker。
  2. 将下面的 docker-compose.yml 复制到远程服务器。
info

如果使用硬件加速,还需要添加 hwaccel.ml.yml 文件,并按照硬件加速文档中的说明配置 docker-compose.yml。

name: immich_remote_mlservices:  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}    # extends:    #   file: hwaccel.ml.yml    #   service: # 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    restart: always    ports:      - 3003:3003volumes:  model-cache:
  1. 执行 docker compose up -d,启动远程机器学习容器。
info

两台主机之间的版本不一致可能造成错误或不稳定,因此更新本地 Immich 实例时,别忘了同时更新这个容器。

  1. 打开“机器学习设置”。
  2. 点击“添加 URL”。
  3. 在新字段中填入远程机器学习容器的 URL,例如 http://ip:port。

强制使用远程处理

建议新增一个 URL,而不是替换现有的 http://immich-machine-learning:3003。这样,远程服务器停机时可以回退到本地机器学习容器,保证任务仍能处理。如果不希望远程服务器不可用时在本地执行机器学习任务,可以替换现有 URL,仅保留远程容器地址。在这种情况下,可以从本地 docker-compose.yml 中移除 immich-machine-learning 部分以节省资源,因为该服务将不会再使用。

请注意,这意味着远程实例不可用时,智能搜索和人脸检测任务会处理失败。依赖这些功能的重复检测和人脸识别也不会对受影响资源运行。发生这种情况后,需要在“任务状态”页面中,手动点击智能搜索及人脸检测旁的“缺失”(Missing)按钮,才能重新尝试任务。

负载均衡

设置中可以填写多个 URL,但系统只会按顺序尝试,不会在多个容器之间分配负载。需要负载均衡时,建议使用专门的负载均衡器,并将其设为唯一 URL。这样还可以通过运行不同配置的多个容器,在同一服务器上使用不同 API。例如,同时运行 OpenVINO 容器和 CUDA 容器,或再运行标准发行版容器,以充分利用 CPU 和 GPU。

tip

多个 Immich 实例可以共享机器学习容器,不受各实例使用的模型限制。不过,使用不同模型会提高内存使用峰值。


原文:Remote Machine Learning。作者/来源:Immich 文档贡献者。本文依据所列原文整理为中文,代码、命令与配置示例保留原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容