Удаленное машинное обучение
Чтобы устранить проблемы с производительностью на системах с низким объемом памяти, таких как Raspberry Pi, вы можете запустить контейнер машинного обучения Immich на более мощной системе, например, на вашем ноутбуке или настольном компьютере. Контейнер сервера будет отправлять запросы с предварительным просмотром изображения в удаленный контейнер машинного обучения для обработки. Контейнер машинного обучения не сохраняет эти данные и не связывает их с конкретным пользователем.
Умный поиск и обнаружение лиц будут использовать эту функцию, но распознавание лиц — нет. Это связано с тем, что распознавание лиц использует результаты этих моделей, которые уже сохранены в базе данных. Таким образом, его обработка происходит между контейнером сервера и базой данных.
Предварительные просмотры изображений отправляются в удаленный контейнер машинного обучения. Используйте эту опцию осторожно, если вы запускаете ее на общественном компьютере или в платном облаке обработки. Кроме того, контейнер машинного обучения как внутренняя служба не имеет никаких мер безопасности. Убедитесь, что он развернут в безопасном месте и доступен только для доверенных лиц.
- Убедитесь, что на удаленном сервере установле н Docker.
- Скопируйте следующий файл
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:
- Запустите удаленный контейнер машинного обучения, выполнив команду
docker compose up -d
.
Несоответствие версий между хостами может вызвать ошибки и нестабильность, поэтому, обновляя локальный экземпляр Immich, не забывайте обновлять и этот контейнер.
- Перейдите в Настройки машинного обучения.
- Нажмите Добавить URL.
- Заполните новое поле URL-адресом удаленного контейнера машинного обучения, например
http://ip:port
.
Принуждение к удаленной обработке
Рекомендуется добавлять новый URL в настройки вместо замены существующего URL. Это позволит успешно обрабатывать задачи машинного обучения, когда удаленный сервер недоступен, используя локальный контейнер машинного обучения. Если вы не хотите, чтобы задачи машинного обучения обрабатывались локально, когда удаленный сервер недоступен, вы можете вместо этого заменить существующий URL и указать только URL удаленного контейнера. Если вы так поступите, вы можете удалить секцию immich-machine-learning
из локального файла docker-compose.yml
, чтобы сэкономить ресурсы, так как эта служба никогда не будет использоваться.
Имейте в виду, что в этом случае задачи Умного поиска и обнаружения лиц не будут выполняться, если удаленный экземпляр недоступен. В свою очередь, это означает, что задачи, зависящие от этих функций — такие как обнаружение дубликатов и распознавание лиц — не будут работать для затронутых активов. Если это произойдет, вам необходимо вручную нажать кнопку Пропущено рядом с Умным поиском и Обнаружением лиц на странице Статус заданий, чтобы задания были повторно отправлены.
Балансировка нагрузки
Хотя в настройках можно указать несколько URL, они обрабатываются последовательно; попытка распределить нагрузку между несколькими контейнерами не предпринимается. Рекомендуется использовать выделенный балансировщик нагрузки для таких случаев и указать только его URL. Это, среди прочего, может позволить использовать разные API на одном сервере, запустив несколько контейнеров с разными конфигурациями. Например, можно запустить контейнер OpenVINO в дополнение к контейнеру CUDA или запустить стандартный контейнер для максимизации использования как ЦПУ, так и графического процессора.
Контейнер машинного обучения может быть разделен между несколькими экземплярами Immich независимо от используемых моделей. Однако использование разных моделей приведет к более высокому пиковому использованию памяти.