Saltar al contenido principal

Aprendizaje Automático Remoto

Para aliviar problemas de rendimiento en sistemas con poca memoria como el Raspberry Pi, también puedes alojar el contenedor de aprendizaje automático de Immich en un sistema más potente, como tu ordenador portátil o de escritorio. El contenedor del servidor enviará solicitudes que contienen la vista previa de la imagen al contenedor remoto de aprendizaje automático para su procesamiento. El contenedor de aprendizaje automático no persiste estos datos ni los asocia con un usuario en particular.

información

La búsqueda inteligente y la detección facial usarán esta función, pero el reconocimiento facial no lo hará. Esto se debe a que el reconocimiento facial utiliza las salidas de estos modelos que ya se han guardado en la base de datos. Por lo tanto, su procesamiento se realiza entre el contenedor del servidor y la base de datos.

peligro

Las vistas previas de las imágenes se envían al contenedor remoto de aprendizaje automático. Usa esta opción con cuidado cuando la ejecutes en un ordenador público o en una nube de procesamiento paga. Además, como servicio interno, el contenedor de aprendizaje automático no tiene medidas de seguridad. Ten cuidado con dónde se despliega y quién puede acceder a él.

  1. Asegúrate de que el servidor remoto tenga Docker instalado
  2. Copia el siguiente archivo docker-compose.yml al servidor remoto
información

Si utilizas aceleración de hardware, el archivo hwaccel.ml.yml también debe ser agregado y el archivo docker-compose.yml debe ser configurado como se describe en la documentación de aceleración de hardware

name: immich_remote_ml

services:
immich-machine-learning:
container_name: immich_machine_learning
# Para aceleración de hardware, agrega uno de -[armnn, cuda, rocm, openvino, rknn] a la etiqueta de la imagen.
# Ejemplo de etiqueta: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.ml.yml
# service: # ajusta a uno de [armnn, cuda, rocm, openvino, openvino-wsl, rknn] para inferencia acelerada - usa la versión `-wsl` para WSL2 donde sea aplicable
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003

volumes:
model-cache:
  1. Inicia el contenedor remoto de aprendizaje automático ejecutando docker compose up -d
información

Las incompatibilidades de versión entre ambos anfitriones pueden causar errores e inestabilidad, así que recuerda actualizar este contenedor también cuando actualices la instancia local de Immich.

  1. Navega a la Configuración de Aprendizaje Automático
  2. Haz clic en Agregar URL
  3. Completa el nuevo campo con la URL del contenedor remoto de aprendizaje automático, por ejemplo, http://ip:port

Forzar procesamiento remoto

Se recomienda agregar una nueva URL a la configuración en lugar de reemplazar la URL existente. Esto permitirá que las tareas de aprendizaje automático se procesen con éxito cuando el servidor remoto esté inactivo al recurrir al contenedor local de aprendizaje automático. Si no deseas que las tareas de aprendizaje automático se procesen localmente cuando el servidor remoto no está disponible, puedes reemplazar la URL existente y solo proporcionar la URL del contenedor remoto. Si haces esto, puedes eliminar la sección immich-machine-learning del archivo local docker-compose.yml para ahorrar recursos, ya que este servicio nunca será utilizado.

Ten en cuenta que esto implicará que las tareas de búsqueda inteligente y detección de rostros no se procesarán cuando la instancia remota no esté disponible. Esto, a su vez, significa que las tareas dependientes de estas características—detector de duplicados y reconocimiento facial—no se ejecutarán para los activos afectados. Si esto ocurre, debes hacer clic manualmente en el botón Faltante junto a la búsqueda inteligente y detección de rostros en la página Estado de las Tareas para que las tareas se reinicien.

Balanceo de carga

Aunque varias URLs pueden ser proporcionadas en la configuración, se prueban de manera secuencial; no hay intento de distribuir la carga entre múltiples contenedores. Se recomienda usar un equilibrador de carga dedicado para estos casos y especificarlo como la única URL. Entre otras cosas, esto puede permitir el uso de diferentes APIs en el mismo servidor al ejecutar múltiples contenedores con diferentes configuraciones. Por ejemplo, se podría ejecutar un contenedor OpenVINO además de un contenedor CUDA, o ejecutar un contenedor de lanzamiento estándar para maximizar la utilización tanto de CPU como de GPU.

consejo

El contenedor de aprendizaje automático puede ser compartido entre varias instancias de Immich independientemente de los modelos que una instancia particular utilice. Sin embargo, usar diferentes modelos conducirá a un mayor uso máximo de memoria.