Comment déployer un LLM local sans compromettre le stockage ni les applications

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Déployer un LLM local sur un NAS domestique n’est pas difficile parce que la première commande est compliquée. C’est difficile parce que le modèle, le cache, le conteneur, le serveur API et les tâches en arrière-plan rivalisent tous pour les mêmes ressources de stockage et système que votre NAS utilise déjà pour les fichiers, sauvegardes, médias, bases de données et applications.

L’objectif le plus sûr n’est pas de rendre le LLM aussi rapide que possible dès le premier jour. L’objectif plus sûr est de lui donner un chemin de stockage connu, des limites strictes de ressources, un parallélisme limité et une routine de vérification. Un modèle local un peu plus lent est généralement préférable à un modèle rapide qui remplit le disque système, déclenche une pression mémoire ou rend d’autres applications auto-hébergées instables.

Résumé rapide : Donnez au LLM son propre espace et ses limites

Un LLM local doit avoir son propre espace avant d’avoir son premier modèle. Cela signifie que vous devez savoir où les fichiers du modèle, caches, index, journaux et données d’application seront stockés avant de lancer un téléchargement de modèle ou de connecter une interface Web. Si ces fichiers se retrouvent dans un chemin Docker caché ou sur un petit disque de démarrage, le déploiement peut sembler réussi tout en consommant silencieusement l’espace nécessaire au NAS lui-même.

Il faut aussi des limites. Les environnements d’exécution LLM peuvent utiliser beaucoup de RAM, VRAM, threads CPU et mémoire contextuelle, surtout lorsque plusieurs modèles ou requêtes parallèles sont activés. Les contraintes de ressources de Docker expliquent que les conteneurs peuvent sinon utiliser les ressources de l’hôte selon le planificateur du noyau, et la pression mémoire peut entraîner des comportements d’épuisement de mémoire affectant d’autres processus.

Pour un NAS partagé, cela compte plus que les chiffres de performance maximale. Plex, Jellyfin, Home Assistant, bases de données, tâches de synchronisation, sauvegardes et partage de fichiers ne doivent pas devenir instables parce qu’un serveur de modèle essaie de répondre à une longue requête. Un déploiement sûr d’un LLM local commence par la cartographie du stockage, les limites de ressources, le choix du modèle et la vérification.

Ce qu’il faut confirmer avant de télécharger le premier modèle

Avant de télécharger le premier modèle, définissez le premier travail. Un LLM local utilisé pour un chat léger a des exigences différentes d’un assistant RAG, d’un travailleur d’embeddings, d’un assistant de codage ou d’un agent d’automatisation capable de lire et d’écrire des fichiers. Si vous ne définissez pas d’abord le cas d’utilisation, il est facile de télécharger un modèle trop volumineux, trop lent ou trop perturbateur pour le serveur.

Commencez par ces vérifications :

  • Cas d'utilisation : chat, RAG, embeddings, résumé, automatisation, codage ou assistance à la recherche.
  • Taille du modèle : la taille du fichier modèle et si vous conserverez plusieurs variantes.
  • Quantification : si le modèle est suffisamment compressé pour le serveur.
  • Chemin de stockage : où les fichiers de modèles et le cache seront stockés sur l’hôte.
  • Chemin du conteneur : comment le chemin hôte est mappé dans le conteneur.
  • RAM et VRAM : combien de mémoire reste disponible pour les autres applications.
  • Capacité CPU : combien de threads le modèle peut utiliser sans priver le NAS.
  • Parallélisme : combien de requêtes ou de modèles chargés peuvent fonctionner simultanément.
  • Charge de travail existante : sauvegardes, streaming média, bases de données, synchronisation et partage de fichiers.
  • Plan de vérification : comment vous prouverez que le NAS est toujours sain par la suite.

Cette étape préliminaire n’est pas une perte de temps. Elle évite le problème local le plus courant lors du déploiement d’un LLM sur un NAS : le modèle répond, mais le système autour devient moins fiable.

Gardez les fichiers de modèles hors du disque système

Les fichiers de modèles peuvent croître plus vite que prévu. Un seul modèle peut être gérable, mais plusieurs modèles, variantes de quantification, embeddings, index, données WebUI et journaux peuvent rapidement atteindre des dizaines ou des centaines de gigaoctets. Si ces fichiers se retrouvent sur le disque système ou la racine Docker, le NAS peut manquer d’espace critique même si le pool de stockage principal semble encore sain.

La FAQ d’Ollama liste les emplacements par défaut des modèles pour différents systèmes d’exploitation et explique que le répertoire de stockage des modèles peut être modifié avec la variable d’environnement OLLAMA_MODELS. Sur un NAS ou un serveur domestique, ce détail est important car le chemin par défaut peut ne pas être l’endroit où vous souhaitez conserver des fichiers de modèles à long terme.

Si vous exécutez Ollama ou un autre moteur de modèles dans Docker, rappelez-vous qu’un chemin de conteneur n’est pas identique à un chemin hôte. Un répertoire comme /root/.ollama à l’intérieur du conteneur doit être mappé à un emplacement précis sur l’hôte si vous souhaitez un stockage prévisible. Sans mappage de volume, les fichiers de modèles peuvent rester dans le stockage géré par Docker, ce qui rend la croissance plus difficile à voir et à nettoyer.

Un schéma plus sûr consiste à créer un répertoire dédié aux modèles avant le déploiement, comme un dossier de stockage IA sur un pool de données ou un volume de stockage d’application. Gardez-le séparé des cibles de sauvegarde, des bases de données critiques et des données d’application irremplaçables. Le répertoire des modèles doit être suffisamment grand, facile à inspecter et documenté afin que vous puissiez supprimer les anciens modèles plus tard.

Décidez aussi où les fichiers associés seront stockés. Les index RAG, embeddings, bases de données vectorielles, journaux et documents téléchargés peuvent devenir des consommateurs de stockage séparés. Si vous ne prévoyez que le fichier modèle, le reste de la pile IA peut encore vous surprendre.

Définissez les limites de mémoire, CPU et parallélisme

Limites de mémoire

Les LLM locaux consomment beaucoup de mémoire. Ils ont besoin de mémoire pour les poids du modèle, le contexte, la surcharge d’exécution et parfois plusieurs modèles chargés. Si le serveur exécute aussi des bases de données, des services médias, la synchronisation de fichiers, des conteneurs et des tâches de sauvegarde, le LLM ne doit pas pouvoir consommer toute la mémoire disponible.

Docker prend en charge les limites de mémoire des conteneurs qui peuvent empêcher un conteneur de monopoliser l’hôte. Pour un NAS partagé, il s’agit moins d’accélérer le modèle que de protéger le reste du système. Si le conteneur LLM atteint sa propre limite, c’est généralement préférable à laisser tout le serveur subir une pression mémoire.

Laissez une marge pour les services essentiels. Si le NAS dispose de 32 Go de RAM et que les applications normales utilisent entre 8 et 12 Go pendant les périodes chargées, ne donnez pas le reste au LLM. Laissez de la place pour le cache du système de fichiers, les tâches de sauvegarde, les bases de données et les pics courts. Un modèle qui ne fonctionne que lorsque rien d’autre ne tourne n’est pas une valeur sûre pour un serveur domestique partagé.

La VRAM est également importante lorsque l’inférence GPU est impliquée. La FAQ d’Ollama explique que l’inférence CPU utilise la mémoire système, tandis que l’inférence GPU utilise la VRAM, et que le chargement simultané de modèles dépend de la mémoire ou de la VRAM disponible. Cela signifie qu’un GPU peut beaucoup aider, mais ne supprime pas le besoin d’un plan mémoire.

Limites CPU

Les limites CPU protègent la réactivité. Un LLM local peut utiliser de nombreux threads lors du traitement des requêtes ou de la génération de tokens. S’il sature le CPU, le tableau de bord du NAS peut ralentir, les flux médias peuvent se mettre en mémoire tampon, les automatisations peuvent être retardées et les bases de données peuvent répondre lentement.

Docker offre des contrôles CPU tels que --cpus, --cpu-quota, et --cpuset-cpus. Vous n’avez pas toujours besoin de limites strictes, mais vous devez décider de la quantité de CPU que le LLM est autorisé à utiliser pendant l’activité normale du NAS. Un modèle qui met un peu plus de temps à répondre tout en laissant le serveur réactif est généralement plus adapté qu’un modèle qui consomme tous les threads.

Le calcul uniquement CPU est particulièrement sensible aux limites. Sans GPU ni NPU, le LLM entre directement en concurrence avec tous les autres services liés au CPU. Si le NAS gère déjà la transcodification média, l’indexation, la compression, les sauvegardes ou les bases de données, le LLM ne doit pas fonctionner sans restriction pendant les heures de pointe.

Nombre de modèles et requêtes parallèles

Le parallélisme est facile à négliger. Un modèle unique répondant à une seule invite peut suffire. Plusieurs utilisateurs, une interface Web, un flux d’automatisation et un outil RAG peuvent rapidement créer des requêtes empilées. Chaque requête peut ajouter de la mémoire de contexte et de la charge CPU.

La FAQ d’Ollama décrit les requêtes parallèles et le comportement des modèles chargés, y compris les paramètres tels que OLLAMA_MAX_LOADED_MODELS, OLLAMA_NUM_PARALLEL et OLLAMA_MAX_QUEUE. Ces paramètres sont importants sur un NAS car la concurrence peut transformer un déploiement stable mono-utilisateur en un pic de ressources.

Pour un serveur domestique partagé, commencez avec des limites conservatrices. Un modèle chargé et une requête active est une base plus sûre. Augmentez seulement après avoir confirmé que le stockage, la mémoire, le CPU et les autres services restent stables.

Choisissez un modèle adapté au serveur, pas au battage médiatique

Le bon premier modèle n’est pas le plus grand que vous pouvez télécharger. C’est le plus petit modèle capable d’accomplir la tâche avec une qualité acceptable. Sur un NAS, le choix du modèle fait partie de la protection du système.

Les modèles quantifiés sont souvent le point de départ pratique. llama.cpp documente comment les modèles quantifiés réduisent la précision du poids du modèle, par exemple en convertissant des fichiers de modèle GGUF haute précision en formats plus petits. Cela peut réduire la taille du modèle et améliorer l’inférence pratique, mais peut aussi impliquer des compromis sur la qualité.

Ce compromis est généralement acceptable pour de nombreux cas d’utilisation NAS domestique : chat simple, résumé, embeddings, assistance RAG, organisation de fichiers et petits assistants d’automatisation. Il est moins adapté si la tâche nécessite un raisonnement approfondi, un contexte long, des performances multi-utilisateurs ou une grande précision de codage.

Utilisez la condition du serveur comme point de départ :

Condition du serveur Point de départ plus sûr Éviter le premier
8 Go–16 Go RAM, CPU uniquement Petit modèle quantifié, embeddings, chat léger Grands modèles, contexte long, plusieurs utilisateurs
16 Go–32 Go RAM, iGPU / NPU Petit chat, RAG, assistant de recherche Génération d’images, assistant de codage intensif
GPU avec suffisamment de VRAM Modèle plus grand ou inférence plus rapide Empilement illimité de modèles
NAS partagé avec de nombreuses applications Tâches IA planifiées, un modèle, un utilisateur Inférence lourde toujours active
NAS plus machine GPU séparée Le NAS stocke les données ; la machine IA exécute l'inférence Forcer tout le calcul sur le NAS

Un déploiement sûr commence petit car il vous donne une base stable. Ensuite, vous pouvez tester un modèle plus grand, un contexte plus long ou une intégration WebUI. Si le système devient lent, vous savez quel changement a causé le problème.

Éloignez le LLM des applications critiques et des sauvegardes

Un LLM local ne doit pas partager les limites de défaillance avec les services dont vous dépendez le plus. Si le stockage des modèles AI, les sauvegardes, les bases de données d'applications et les fichiers temporaires vivent tous au même endroit mal planifié, une charge de travail peut créer des problèmes pour les autres.

Gardez le cache des modèles et les données temporaires AI à l'écart des cibles de sauvegarde. Un répertoire de modèle est généralement reproductible ; un dépôt de sauvegarde ne l'est pas. Remplir une destination de sauvegarde avec des fichiers de modèle ou des données temporaires AI peut entraîner des sauvegardes manquées, des échecs de synchronisation ou des points de restauration confus.

Gardez les bases de données des applications séparées quand c'est possible. Home Assistant, serveurs médias, bibliothèques photos, gestionnaires de mots de passe et autres applications auto-hébergées peuvent dépendre de petites bases de données sensibles à une pression I/O soudaine ou à un faible espace disque. Ne laissez pas un téléchargement massif de modèle ou un travail d'indexation RAG encombrer la même zone de stockage sans planification.

Pensez aussi au temps. Si les sauvegardes s'exécutent la nuit, ne planifiez pas d'indexation lourde dans la même fenêtre. Si le streaming média a lieu le soir, ne lancez pas d'inférences longues en CPU uniquement à ce moment-là. Un NAS a souvent assez de capacité pour plusieurs tâches, mais pas toutes à leur pic.

Pour les flux de travail LLM qui peuvent écrire des fichiers ou appeler des outils, ajoutez des garde-fous. Utilisez des chemins isolés, des étapes de confirmation et des journaux. Laissez le modèle suggérer des actions, mais utilisez un code déterministe ou une confirmation utilisateur pour les écritures, suppressions, déplacements et modifications d'applications. Un déploiement LLM sûr protège non seulement les ressources système, mais aussi les données qu'il peut toucher.

Signes d'alerte que le LLM prive d'autres services

Un mauvais déploiement ne plante pas toujours immédiatement. Le plus souvent, il crée des symptômes qui semblent d'abord sans rapport.

Un signe d'alerte est une croissance soudaine du disque. Si le disque système, la racine Docker ou le stockage des applications grossit rapidement après le téléchargement des modèles, le chemin du modèle peut ne pas être mappé là où vous l'attendiez. Vérifiez le chemin réel sur l'hôte, pas seulement le chemin dans le conteneur.

Les redémarrages de conteneurs sont un autre signal. Si le conteneur LLM, la base de données, Home Assistant, le serveur média ou l'interface WebUI redémarrent sans cesse, vérifiez la pression mémoire, les journaux OOM et la saturation CPU. Le LLM peut rester actif tandis que d'autres services perdent des ressources.

Un tableau de bord NAS lent est également important. Si l'interface web devient lente lors des requêtes, le LLM local peut utiliser trop de threads CPU, trop de mémoire ou trop d'E/S disque. Le fait que le modèle réponde correctement ne signifie pas que le déploiement est sain.

La mise en tampon des médias, les automatisations retardées, les partages de fichiers lents et les fenêtres de sauvegarde manquées sont des signes plus forts. Ce sont des fonctions essentielles du NAS. Si elles se dégradent après le déploiement du LLM, le LLM a besoin d’un modèle plus petit, de limites plus strictes, d’une meilleure planification ou d’un hôte de calcul séparé.

Surveillez aussi le comportement de l’API. Si l’API LLM se bloque, fait la queue indéfiniment ou devient instable lorsqu’une interface Web, un outil RAG ou un système d’automatisation se connecte, le parallélisme est peut-être trop élevé pour le serveur. Limitez les modèles chargés, les requêtes actives et la longueur de la file d’attente avant d’ajouter d’autres intégrations.

Un ordre de déploiement plus sûr pour un LLM local sur NAS

Ne commencez pas par installer tous les outils IA en même temps. Commencez par un service LLM local, un modèle, un chemin de stockage et un cas d’usage test. Cela rend le déploiement plus facile à comprendre et plus sûr à déboguer.

Un ordre de déploiement plus sûr ressemble à ceci :

  1. Sélectionnez un cas d’usage, comme un chat léger, des embeddings ou un test RAG.
  2. Choisissez le plus petit modèle capable de faire le travail.
  3. Créez un répertoire modèle dédié sur un chemin de stockage connu.
  4. Mappez ce répertoire dans le conteneur ou configurez le runner pour l’utiliser.
  5. Définissez des limites de mémoire et de CPU.
  6. Limitez les requêtes parallèles et les modèles chargés.
  7. Commencez par une requête test ou un petit index RAG.
  8. Surveillez le disque, la RAM, le CPU, le GPU, les logs et le temps de réponse pendant l’exécution.
  9. Confirmez que les applications et sauvegardes existantes fonctionnent toujours normalement.
  10. Ce n’est qu’ensuite que vous ajoutez des intégrations comme Open WebUI, les outils RAG ou les workflows d’automatisation.

Cet ordre peut sembler plus lent qu’un guide d’installation rapide, mais il réduit les surprises. Si quelque chose casse, vous saurez si le problème vient du modèle, du chemin, des limites de ressources, de l’interface Web, de l’index RAG ou d’une autre intégration.

Comment vérifier que le stockage et les applications sont toujours sûrs

La vérification ne doit pas s’arrêter à « le modèle a répondu ». Un LLM local peut répondre à une requête tout en remplissant le mauvais disque, en privant d’autres conteneurs de ressources ou en retardant les tâches de sauvegarde.

Commencez par la vérification du stockage. Confirmez que les fichiers du modèle sont bien arrivés dans le chemin hôte attendu. Vérifiez que le disque système dispose encore d’espace libre. Contrôlez que la racine Docker n’a pas augmenté de manière inattendue. Assurez-vous que le cache du modèle, les logs, les index et les données des applications ne sont pas mélangés avec des sauvegardes ou bases de données critiques.

Puis vérifiez les ressources. Le CPU doit revenir à la normale après les requêtes ou l'indexation. La mémoire doit rester en dessous de la limite prévue. Le swap ne doit pas augmenter en usage normal. Si l'inférence GPU est activée, vérifiez que le modèle utilise bien le GPU et que la pression sur la VRAM est acceptable.

Vérifiez ensuite la stabilité de l'application. Ouvrez les partages de fichiers, diffusez des médias, déclenchez une automatisation Home Assistant, naviguez dans le tableau de bord du NAS et confirmez que les bases de données ou les tableaux de bord des applications restent réactifs. Si ces services ralentissent uniquement lorsque le LLM est actif, vous devez appliquer des limites plus strictes sur le CPU, la mémoire ou la planification.

Vérifiez les journaux. Recherchez des boucles de redémarrage, des messages OOM, des échecs de chargement de modèle, des erreurs de permission, un accès GPU manquant, des montages de volume échoués et des délais d’attente API répétés. Les journaux sont souvent l’endroit où un déploiement « fonctionnel » révèle qu’il est à peine stable.

Enfin, vérifiez la limite du point de terminaison. Si le serveur de modèle expose une API, sachez où elle est accessible. Un point de terminaison LLM local ne doit pas devenir public par accident. Gardez-le interne à moins de l’avoir intentionnellement placé derrière une authentification, des règles de proxy inverse, un accès VPN ou une autre limite contrôlée.

Comment ZimaOS AI Search Montre un Modèle de Déploiement IA Contrôlé

Un flux de travail IA NAS contrôlé doit avoir un chemin de modèle défini, des exigences en ressources, des attentes d’exécution et un chemin de vérification. Il ne doit pas se comporter comme un service d’arrière-plan illimité qui télécharge des modèles, consomme du temps GPU et écrit des données où il veut.

ZimaOS-AI est un exemple utile de ce modèle contrôlé. Le guide ZimaSpace pour la recherche IA explique que le module est conçu pour servir la recherche ZimaOS en utilisant un LLM local pour extraire des caractéristiques à partir d’images, audio et vidéo. Ce cadre est important : la charge de travail IA soutient la recherche et l’extraction de caractéristiques plutôt que de transformer le NAS en serveur de chat illimité.

Le même guide rend la limite des ressources visible. Il décrit des chemins d’installation séparés pour les systèmes GPU discrets NVIDIA et les systèmes GPU intégrés Intel. Le chemin NVIDIA dépend du support GPU compatible CUDA, tandis que le chemin GPU intégré Intel nécessite au moins 8 Go de RAM libre et recommande un processeur i5-1235U ou supérieur avec graphique intégré. Il liste également au moins 20 Go d’espace système libre et note que les fichiers modèles sont stockés sous /media/ZimaOS-HD/AppData/.models sauf si AppData a été migré.

C’est le type d’informations dont un déploiement sécurisé de LLM a besoin avant de commencer. Un appareil de cloud privé tel que ZimaCube 2 AI NAS peut prendre en charge des flux de travail IA locaux plus riches lorsque le chemin du modèle, le support GPU ou iGPU, la RAM, l’espace de stockage et la planification correspondent à la charge de travail. Mais la leçon importante est la limite, pas le nom de la marque : savoir où le modèle se trouve, quel chemin matériel il utilise, et quand il est autorisé à consommer des ressources.

Les détails de dépannage montrent aussi à quoi ressemble la vérification du déploiement. Si la recherche AI ne renvoie pas de résultats liés à l’IA, le modèle peut encore être en cours de téléchargement, l’extraction des caractéristiques peut être en cours, l’accès à Hugging Face peut être indisponible, ou la VRAM peut être trop faible et forcer un recours au CPU / mémoire. Le guide oriente aussi les utilisateurs vers l’historique des appels, le trafic réseau et journalctl -xef -u zimaos-ai pour vérifier le statut.

C’est un schéma utile pour tout déploiement local de LLM sur un NAS : définir le chemin, définir les ressources, surveiller les journaux, confirmer que la fonctionnalité fonctionne réellement, et planifier les activités lourdes pour que le NAS reste utilisable.

FAQ

Où dois-je stocker les fichiers de modèles LLM locaux sur un NAS ?

Stockez les fichiers du modèle dans un répertoire dédié et documenté sur un volume de données ou un emplacement de stockage d’application avec suffisamment d’espace. Évitez que les modèles soient placés silencieusement sur le disque de démarrage, la racine Docker ou une cible de sauvegarde. Le chemin doit être facile à inspecter, nettoyer et migrer.

Dois-je exécuter Ollama directement ou dans Docker ?

Les deux options peuvent fonctionner. Docker facilite l’isolation et le déploiement, mais vous devez bien mapper le stockage du modèle et définir les limites de ressources. Une installation directe peut être plus simple sur certains systèmes, mais vous devez toujours vérifier le répertoire du modèle, les permissions, l’utilisation mémoire et les limites de service.

Combien de RAM devrais-je réserver pour les autres applications ?

Réservez suffisamment de RAM pour le système d’exploitation du NAS, le cache du système de fichiers, les bases de données, les services médias, les sauvegardes et les conteneurs normaux avant d’allouer de la mémoire au LLM. Ne dimensionnez pas le modèle en fonction de la RAM totale, mais en fonction de la RAM disponible après avoir laissé une marge aux services essentiels.

Un LLM local peut-il perturber mes autres conteneurs Docker ?

Il peut perturber les autres services s’il consomme trop de mémoire, CPU, E/S disque ou espace de stockage. Il ne les « casse » pas directement, mais peut provoquer des ralentissements, des boucles de redémarrage, des événements OOM, des fenêtres de sauvegarde manquées ou des échecs d’opérations de base de données s’il est déployé sans limites.

Quand devrais-je déplacer le LLM sur une machine séparée ?

Déplacez le LLM sur une machine séparée lorsque vous avez besoin de modèles plus grands, d'un contexte long, de plusieurs utilisateurs, de charges lourdes en GPU ou de réponses rapides qui ralentissent le NAS. Dans cette configuration, le NAS peut rester la source de stockage et de données tandis qu’un bureau, un mini PC ou un serveur AI équipé d’un GPU gère l’inférence.

Un déploiement local sécurisé d'un LLM sur un NAS commence par des limites, pas par le battage médiatique autour du modèle. Donnez au modèle un chemin connu, attribuez des limites de ressources au conteneur, protégez les applications critiques et les sauvegardes, et vérifiez l'ensemble du serveur après la première requête. Le déploiement est réussi uniquement lorsque le LLM fonctionne et que le NAS continue de se comporter comme un NAS fiable.

Assistance et conseils

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.