Outils pour utilisateurs

Outils du site


reseau:cloud:proxmox:lxcnvidiaollama

Proxmox : utiliser Ollama dans un conteneur LXC avec des GPU Nvidia

Présentation de Ollama

Ollama permet :

  • d'installer un modèle LLM de son choix,
  • de configurer automatiquement tous les paramètres techniques,
  • de disposer d'une interface simple pour interagir avec l’IA.

Les données restent locales.

Un LLM (Large Language Model) est un programme informatique qui a été entraîné sur d’énormes quantités de texte (livres, articles, code source, pages web…). Grâce à cet entraînement, il a appris :

  • Les règles de la langue : grammaire, orthographe, syntaxe,
  • Les connaissances du monde : histoire, science, actualités (jusqu’à sa date de publication),
  • Les patterns de raisonnement : comment résoudre des problèmes, structurer une réponse,
  • Les conventions du code : syntaxe des langages, bonnes pratiques, patterns courants.

Quand une question est posée à un LLM, il ne cherche pas la réponse dans une base de données. Il génère la réponse mot par mot, en prédisant quel mot est le plus probable après le précédent, compte tenu de votre question et de tout ce qu’il a appris.

Ollama peut faire fonctionner des LLM uniquement en RAM (512 Gio dans le serveur) mais si des GPU NVIDIA sont installés avec au moins 8 Gio de VRAM, Ollama les utilisera automatiquement. Les deux cartes installées possèdent chacune 16 Gio de VRAM.

La quantité de RAM est le facteur déterminant de la rapidité des réponses du LLM.

Quand un modèle IA (LLM) est lancé avec Ollama, celui-ci est entièrement chargé en mémoire. Si votre ordinateur n’a pas assez de RAM, le modèle ne pourra pas être chargé, ou sera très lent car il devra utiliser le disque dur (swap).

RAM disponible Modèles utilisables Expérience
4 GB ❌ Insuffisant Ollama refusera de lancer les modèles
8 GB Modèles légers (3B) Fonctionnel mais limité
16 GB Modèles moyens (7B) Bonne expérience pour la plupart des usages
32 GB Grands modèles (13B) Excellente expérience
64 GB+ Très grands modèles (70B) Usage professionnel

Espace disque typique occupé par chaque modèle IA :

Modèle Taille sur disque
Llama 3.2 (3B) ~2 GB
Mistral (7B) ~4 GB
CodeLlama (7B) ~4 GB
Llama 3.1 (70B) ~40 GB

Les paramètre d'un modèle de langage (LLM)

Les modèles de langage (LLM) disponibles sont caractérisés par le nombre de paramètres gérés : 3B signifie 3 Billion parameters, soit 3 milliards de paramètres ou nombre de connexions neuronales dans le modèle.

Plus un modèle a de paramètres, plus il peut :

  • capturer des nuances linguistiques complexes,
  • mémoriser des patterns,
  • généraliser à partir d’exemples,
  • fournir des réponses plus fines.

Comparaison rapide

TailleRAM minimaleUsage typique
1-3B 4-8 GB Bon équilibre : Questions simples, résumés, traduction
7B 8-16 GB Très bon généraliste : Code, rédaction, raisonnement
13B 16-32 GB Analyse complexe, créativité
70B 64 GB+ Niveau proche du SOTA (State Of The Art, état de l’art) : Recherche, usage professionnel,
500B+entre 300 Go et plus de 2 To de RAM, selon la précision. Modèles géants (GPT-5, etc.) : Raisonnement avancé

Pour un usage personnel, 3B est un excellent compromis.

Installer Ollama

  • utiliser un conteneur avec les pilotes Nvidia
  • installer les prérequis
apt install -y curl zstd pciutils

L'installateur à besoin de lspci (dans pciutils)

  • installer Ollama
# curl -fsSL https://ollama.com/install.sh | sh

>>> Cleaning up old version at /usr/local/lib/ollama
>>> Installing ollama to /usr/local
>>> Downloading ollama-linux-amd64.tar.zst
########################################################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink '/etc/systemd/system/default.target.wants/ollama.service' -> '/etc/systemd/system/ollama.service'.
>>> NVIDIA GPU installed.

Vérifier l'installation

* visualiser la version

ollama --version

⇒ vous devriez visualiser le numéro de version comme ollama version 0.14.1

  • Vérifiez que le service tourne
systemctl status ollama

⇒ Vous devriez voir Active: active (running) en vert.

Tester le modèle en console

# ollama run qwen2.5-coder:7b

Le modèle Qwen2.5‑Coder 7B dans Ollama en mode interactif est spécialisé pour le code.

Avec cette commande :

  • Ollama contacte son registre (“magasin” de modèles)
  • télécharge le modèle morceau par morceau
  • vérifie l’intégrité des fichiers téléchargés (pour s’assurer qu’ils ne sont pas corrompus
  • optimise le modèle pour l'ordinateur

Poser des questions en langage naturel

Il suffit simplement de taper une question comme :

  • Comment créer une API REST en Python ?

Le modèle répond dans le terminal.

Générer du code (tous langages) Comme il s’agit d’un modèle coder, on peux lui demander :

  • Écris une fonction en JavaScript qui trie une liste d’objets par date.

Ou même des projets complets :

  • Génère un Dockerfile pour une application FastAPI.

Expliquer du code :

  • Explique ce que fait ce script :

<ton code ici>

Il te donnera une explication détaillée.

Déboguer ou améliorer du code

  • Voici mon code, il plante. Trouve l’erreur.

ou

  • Optimise cette fonction pour la rendre plus rapide.

Travailler en conversation continue

  • Ollama garde l’état de la conversation tant que le processus est lancé. Il est alors possible d'enchaîner les prompts :
  • Maintenant rends le code compatible Python 3.12.

Quitter proprement

  • /bye

ou simplement CTRL + C.

Utiliser le modèle dans un script (API locale Ollama)

  • depuis une autre console, pour appeler l’API :
curl http://localhost:11434/api/generate \
  -d '{ "model": "qwen2.5-coder:7b", "prompt": "Écris une classe Python." }'

Utiliser dans VS Code ou un éditeur

Beaucoup d’extensions permettent de configurer Ollama comme LLM local. Qwen2.5‑Coder peux alors être utilisé comme assistant de code directement dans l’IDE.

Lancer en mode serveur

ollama serve

Le modèle devient accessible à d’autres outils (LM Studio, Continue, Cursor, etc.).

Installer Open WebUI

Installer Nodejs

apt install -y nodejs npm

Installer les prérequis

apt install python3-pip python3-venv  => à enlever

Créer un environnement virtuel pour OpenWebUI

Open‑WebUI n’est installable via pip avec Python 3.11 ou 3.12. Toutes les versions publiées sur PyPI exigent strictement :

Python ≥ 3.11 Python < 3.13.0a1

Python3.12 sera installé avec pyenv :

  • Aucun impact sur le Python système (3.13) qui reste disponible.
  • Gère plusieurs versions Python facilement.
  • Compatible avec pip / virtualenv.

Installation de pyenv

  • Installer pyenv
curl https://pyenv.run | bash
  • Ajouter les lignes suivantes à la fin du fichier .bashrc du compte root :
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • Recharger le shell :
exec $SHELL

Installer Python 3.11

apt install -y \
  build-essential \
  libssl-dev \
  zlib1g-dev \
  libbz2-dev \
  libreadline-dev \
  libsqlite3-dev \
  libffi-dev \
  liblzma-dev \
  uuid-dev \
  tk-dev \
  libncursesw5-dev \
  libxml2-dev \
  libxmlsec1-dev \
  libgdbm-dev \
  libnss3-dev \
  libdb-dev \
  xz-utils
  
wget https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tgz
tar -xzf Python-3.11.7.tgz
cd Python-3.11.7

./configure --enable-optimizations

make -j$(nproc)

make altinstall
  • Vérifier que SQLite fonctionne
python3.11 -c "import sqlite3; print(sqlite3.sqlite_version)"
=> doit afficher 3.46.1

S'il est nécessaire de recompiler Python3.11 utilisez les commandes suivantes :

pyenv install 3.11.7
pyenv global 3.11.7
  • Test d’utilisation ????
cd ~
pyenv global 3.11.7
python3 --version   # Python 3.11.7Afficher plus de lignes

Installer open‑webui

  • Créer l'environnement virtuel avec la nouvelle version Python dans le dossier /opt/open-webui :
mkdir /opt/open-webui
cd /opt/open-webui
python3.11 -m venv venv
source venv/bin/activate
pip install --upgrade pip
  • Installer Open‑WebUI :
pip install open-webui
  • lancer Open-Webui
open-webui serve

Lancer automatiquement Open WebUI au démarrage du conteneur

Créer un compte dédié à open-webui

useradd -r -s /usr/sbin/nologin -d /opt/open-webui openwebui

Commentaires :

  • -r → compte système
  • -s /usr/sbin/nologin → impossible de se connecter
  • -d /opt/open-webui → son dossier d’application
  • openwebui → nom du compte
  • Donner les droits sur le dossier Open WebUI :
chown -R openwebui:openwebui /opt/open-webui

Créer un service systemd

  • créer le fichier /etc/systemd/system/openwebui.service avec le contenu suivant
[Unit]
Description=Open WebUI service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openwebui
Group=openwebui
WorkingDirectory=/opt/open-webui
Environment="PATH=/opt/open-webui/venv/bin:/usr/local/bin:/usr/bin"
Environment="PYTHONUNBUFFERED=1"

#Attendre que tout les services soient actifs
ExecStartPre=/bin/sleep 5
ExecStart=/opt/open-webui/venv/bin/open-webui serve --host 0.0.0.0 --port 8080
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
Problème Solution
Le service démarre trop tôtAfter=network-online.target + ExecStartPre sleep 5
venv pas disponible au bootsleep 5
réseau absent au bootnetwork-online.target

* Activer et démarrer le service

systemctl daemon-reload
systemctl enable openwebui
systemctl start openwebui
systemctl status openwebui

Publier openwebui sur le port 80 avec caddy

  • Installer Caddy
apt install -y caddy
  • Configuration :
nano /etc/caddy/Caddyfile
  • Décommenter la ligne pour avoir ce contenu
:80 {
    reverse_proxy 127.0.0.1:8080
}
  • Recharger la configuration :
systemctl reload caddy

Open WebUI est accessible à l'URL http://adresseipLXC/

reseau/cloud/proxmox/lxcnvidiaollama.txt · Dernière modification : 2026/01/18 19:00 de techer.charles_educ-valadon-limoges.fr