6 - Performances et accélération matérielle
Exploiter le GPU, régler les tâches et surveiller les performances d'Immich.
- 6.1 - Transcodage NVIDIA avec une Quadro P2000
- 6.2 - Machine learning avec CUDA
- 6.3 - Concurrence, tâches et choix du stockage
- 6.4 - Surveillance, journaux et contrôles
6.1 - Transcodage NVIDIA avec une Quadro P2000
La NVIDIA Quadro P2000 peut accélérer le transcodage vidéo avec NVENC et réduire la charge CPU. Immich indique que le transcodage matériel peut produire des fichiers plus volumineux et parfois de qualité inférieure à réglage comparable.
Vérifier le GPU sur TrueNAS
sudo lspci -nnk | grep -A3 -i nvidia
nvidia-smi
Ton environnement a déjà utilisé un pilote NVIDIA 570.172.08 avec la P2000 reconnue. Après chaque mise à jour TrueNAS, refaire le contrôle.
Vérifier dans le conteneur
Découvrir le conteneur :
sudo docker ps --format '{{.Names}} {{.Image}}' | grep -i immich
Puis :
sudo docker exec NOM_CONTENEUR_IMMICH nvidia-smi
L'image serveur observée utilisait NVIDIA_DRIVER_CAPABILITIES=all. Vérifier cette variable et l'allocation GPU dans l'interface TrueNAS plutôt que de modifier les fichiers Compose générés.
Activer dans TrueNAS
- éditer l'application Immich ;
- activer la configuration GPU ;
- sélectionner la P2000 pour le serveur Immich ;
- redéployer ;
- ouvrir les paramètres de transcodage vidéo ;
- choisir NVENC ;
- commencer avec le décodage matériel désactivé ;
- tester un fichier compatible puis activer le décodage si utile.
Contrôler l'utilisation
watch -n 1 nvidia-smi
Dans une autre session, lancer une tâche de transcodage et suivre les journaux :
sudo docker logs -f NOM_CONTENEUR_IMMICH
Limites de la P2000
- génération Pascal ancienne mais encore adaptée à H.264 et HEVC ;
- pas d'encodage AV1 ;
- qualité et formats limités par le matériel ;
- 5 Go de VRAM à partager si le machine learning utilise aussi le GPU ;
- nombre de sessions et performances variables selon les fichiers.
En cas d'artefacts
- tester le même fichier en transcodage logiciel ;
- désactiver le décodage matériel ;
- comparer H.264 et HEVC ;
- vérifier les journaux FFmpeg ;
- contrôler pilote et température ;
- ne pas conclure à une panne GPU à partir d'un seul fichier corrompu.
Référence : https://docs.immich.app/features/hardware-transcoding/
6.2 - Machine learning avec CUDA
Le machine learning Immich fournit la recherche intelligente et la reconnaissance faciale. CUDA est pris en charge sur les GPU NVIDIA avec une capacité de calcul 5.2 ou supérieure.
Conditions actuelles
- GPU NVIDIA compatible ;
- pilote officiel NVIDIA 545 ou plus récent ;
- accès au GPU depuis le conteneur ;
- image machine learning CUDA ;
- mémoire GPU suffisante pour le modèle.
La Quadro P2000 répond à la condition de capacité de calcul et ton pilote 570.172.08 dépasse le minimum documenté.
Docker Compose
Le service doit utiliser une image se terminant par -cuda et réserver un GPU. Exemple conceptuel :
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities:
- gpu
Utiliser de préférence les fichiers officiels hwaccel.ml.yml correspondant à la version Immich.
TrueNAS
Dans les paramètres de l'application :
- activer le GPU pour le machine learning ;
- sélectionner la P2000 ;
- redéployer ;
- vérifier le conteneur ;
- lancer une tâche de visages ou recherche intelligente.
Vérifier
sudo docker exec NOM_CONTENEUR_ML nvidia-smi
sudo docker logs --tail 200 NOM_CONTENEUR_ML
Chercher :
CUDAExecutionProvider
Available ORT providers
Surveiller :
watch -n 1 nvidia-smi
Gestion de la VRAM
La P2000 possède 5 Go de VRAM. Éviter de lancer simultanément un import massif, plusieurs transcodages et de nombreux traitements ML sans surveillance.
Réduire si nécessaire :
- le nombre de workers ;
- la concurrence des tâches ;
- la taille ou complexité du modèle ;
- les transcodages parallèles.
Après activation
Il n'est pas nécessaire de relancer tous les anciens jobs uniquement pour profiter de l'accélération. Les prochaines tâches utiliseront le backend disponible.
Référence : https://docs.immich.app/features/ml-hardware-acceleration/
6.3 - Concurrence, tâches et choix du stockage
Priorités de stockage
- PostgreSQL sur SSD si possible.
- Miniatures sur SSD si la navigation est lente.
- Originaux sur le pool de capacité.
- Sauvegardes sur un autre support et un autre système.
Séparer les datasets peut améliorer l'organisation, mais complexifie la restauration. Mesurer avant de multiplier les montages.
Concurrence des tâches
Dans Administration > Settings, ajuster progressivement :
- extraction de métadonnées ;
- miniatures ;
- transcodage ;
- recherche intelligente ;
- détection faciale.
Ne pas dépasser sans raison le nombre de coeurs disponibles, surtout pour les miniatures. Une concurrence trop forte peut ralentir l'API et saturer le stockage.
Import massif
Avant :
df -hT
free -h
nvidia-smi
Pendant :
docker stats
iostat -xz 2
watch -n 2 nvidia-smi
iostat est fourni par sysstat sur de nombreuses distributions.
Machine learning distant
Immich peut envoyer les aperçus à un service machine learning plus puissant. Cette option convient à un serveur limité, mais ajoute une dépendance réseau et un second service à sauvegarder ou reconstruire.
Base PostgreSQL
Éviter les modifications manuelles de paramètres PostgreSQL copiées depuis un autre environnement. L'image officielle Immich contient des réglages et extensions adaptés.
Contrôles utiles :
docker exec -it immich_postgres psql -U postgres -d immich -c 'select version();'
docker exec -it immich_postgres pg_isready -U postgres -d immich
Adapter utilisateur, base et conteneur.
Nettoyage
Après une mise à jour Docker validée :
docker image prune
Cette commande supprime les images inutilisées, pas les images en cours d'utilisation. Ne pas supprimer les volumes ou dossiers de données pour gagner de la place.
Mesurer
Comparer avant et après :
- temps d'ouverture des miniatures ;
- durée d'une tâche de 1000 actifs ;
- charge CPU ;
- mémoire disponible ;
- latence disque ;
- utilisation GPU ;
- réactivité de l'API.
Références :
https://docs.immich.app/administration/jobs-workers/https://docs.immich.app/install/truenas/
6.4 - Surveillance, journaux et contrôles
État des conteneurs
Docker Compose :
docker compose ps
docker compose logs --tail=100
docker stats --no-stream
TrueNAS :
sudo docker ps --format 'table {{.Names}}\t{{.Status}}'
sudo docker stats --no-stream
Version et schéma
docker exec -it immich_server immich-admin version
docker exec -it immich_server immich-admin schema-check
Adapter le nom du conteneur.
Santé de PostgreSQL
docker exec immich_postgres pg_isready -U postgres -d immich
docker logs --tail 100 immich_postgres
Ressources hôte
uptime
free -h
df -hT
df -i
lsblk -f
TrueNAS :
sudo zpool status
sudo zpool list
sudo zfs list
GPU :
nvidia-smi
Interface Immich
Administration > Server Statspour les actifs et quotas ;Administration > Jobspour les files ;Administration > Maintenancepour l'intégrité ;Administration > Settings > Backuppour les dumps ;Administration > External Librariespour les scans.
Collecte de diagnostic
Le pack contient scripts/diagnostic_immich.sh. Exemple :
IMMICH_COMPOSE_DIR=/srv/immich/app \
./scripts/diagnostic_immich.sh
Le script n'effectue aucune modification. Examiner le rapport avant de le partager, car il peut contenir noms de conteneurs, chemins, versions et adresses.
Alertes utiles
- espace libre faible ;
- pool ZFS dégradé ;
- conteneur en redémarrage ;
- sauvegarde PostgreSQL absente ou ancienne ;
- files d'attente bloquées ;
- erreurs d'intégrité ;
- certificat proche de l'expiration ;
- GPU absent après mise à jour.
Ne pas attendre un incident pour tester les commandes de diagnostic et la restauration.