Machine Learning Remota
Para aliviar problemas de desempenho em sistemas com pouca memória como o Raspberry Pi, você também pode hospedar o contêiner de machine learning do Immich em um sistema mais poderoso, como seu laptop ou computador desktop. O contêiner do servidor enviará solicitações contendo a pré-visualização da imagem para o contêiner remoto de machine learning para processamento. O contêiner de machine learning não armazena esses dados nem os associa a um usuário específico.
A Pesquisa Inteligente e a Detecção de Rostos usarão este recurso, mas o Reconhecimento Facial não. Isso ocorre porque o Reconhecimento Facial utiliza os resultados desses modelos que já foram salvos no banco de dados. Assim, seu processamento ocorre entre o contêiner do servidor e o banco de dados.
Pré-visualizações de imagens são enviadas para o contêiner remoto de machine learning. Use esta opção com cuidado ao executá-la em um computador público ou em uma nuvem paga de processamento. Além disso, como um serviço interno, o contêiner de machine learning não possui nenhuma medida de segurança. Por favor, esteja atento aonde ele está implantado e quem pode acessá-lo.
- Certifique-se de que o servidor remoto tenha o Docker instalado
- Copie o seguinte
docker-compose.yml
para o servidor remoto
Se for usar aceleração de hardware, o arquivo hwaccel.ml.yml também precisa ser adicionado e o docker-compose.yml
precisa ser configurado conforme descrito na documentação de aceleração de hardware
name: immich_remote_ml
services:
immich-machine-learning:
container_name: immich_machine_learning
# Para aceleração de hardware, adicione um dos -[armnn, cuda, rocm, openvino, rknn] à tag da imagem.
# Exemplo de tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.ml.yml
# service: # defina como um dos [armnn, cuda, rocm, openvino, openvino-wsl, rknn] para inferência acelerada - use a versão `-wsl` para WSL2, onde aplicável
volumes:
- model-cache:/cache
restart: always
ports:
- 3003:3003
volumes:
model-cache:
- Inicie o contêiner remoto de machine learning executando
docker compose up -d
Incompatibilidades de versão entre os dois hosts podem causar falhas e instabilidades, então lembre-se de atualizar este contêiner quando atualizar a instância local do Immich.
- Navegue até as Configurações de Machine Learning
- Clique em Adicionar URL
- Preencha o novo campo com o URL do contêiner remoto de machine learning, por exemplo,
http://ip:porta
Forçando processamento remoto
Adicionar um novo URL às configurações é recomendado em vez de substituir o URL existente. Isso permite que as tarefas de machine learning sejam processadas com sucesso quando o servidor remoto estiver fora do ar, recorrendo ao contêiner local de machine learning. Se você não quiser que as tarefas de machine learning sejam processadas localmente quando o servidor remoto não estiver disponível, você pode substituir o URL existente e fornecer apenas o URL do contêiner remoto. Se fizer isso, você pode remover a seção immich-machine-learning
do arquivo docker-compose.yml
local para economizar recursos, já que esse serviço nunca será usado.
Tenha em mente que isso significa que tarefas de Pesquisa Inteligente e Detecção de Rostos falharão quando a instância remota não estiver disponível. Isso, por sua vez, significa que tarefas dependentes dessas funções—como Detecção de Duplicados e Reconhecimento Facial—não serão executadas para os ativos afetados. Se isso ocorrer, você precisará clicar manualmente no botão Faltando ao lado de Pesquisa Inteligente e Detecção de Rostos na página de Status de Trabalhos para que as tarefas sejam reprocessadas.
Balanceamento de carga
Embora vários URLs possam ser fornecidos nas configurações, eles são tentados sequencialmente; não há tentativa de distribuir a carga entre vários contêineres. É recomendável usar um balanceador de carga dedicado para esses casos de uso e especificá-lo como o único URL. Entre outras vantagens, isso pode permitir o uso de diferentes APIs no mesmo servidor executando vários contêineres com configurações diferentes. Por exemplo, pode-se executar um contêiner OpenVINO além de um contêiner CUDA ou executar um contêiner padrão para maximizar tanto a utilização da CPU quanto a da GPU.
O contêiner de machine learning pode ser compartilhado entre várias instâncias do Immich, independentemente dos modelos que uma instância específica utilize. No entanto, o uso de diferentes modelos levará a um uso de memória máxima mais elevado.