Aller au contenu

« Trace install tas - Ollama » : différence entre les versions

De Loic Wiki
Actualisation des versions et unités Quadlet Ollama
Daneel (discussion | contributions)
Documentation mise à jour Ollama ROCm et client
Ligne 24 : Ligne 24 :
== Exécution / runtime ==
== Exécution / runtime ==
=== AMD / ROCm ===
=== AMD / ROCm ===
* Service systemd user : `/home/loic/.config/systemd/user/ollama.service`
* Service systemd user généré : `ollama-rocm.service`
* Conteneur : `ollama_roc`
* Conteneur : `ollama_roc`
* Image : `docker.io/ollama/ollama:rocm`
* Image : `docker.io/ollama/ollama:rocm`
Ligne 30 : Ligne 30 :


=== NVIDIA / CUDA ===
=== NVIDIA / CUDA ===
* Service systemd user : `/home/loic/.config/systemd/user/ollama-nvidia.service`
* Service systemd user généré : `ollama-nvidia.service`
* Conteneur : `ollama_nv`
* Conteneur : `ollama_nv`
* Image : `docker.io/ollama/ollama:latest`
* Image : `docker.io/ollama/ollama:latest`
Ligne 37 : Ligne 37 :


== Chemins de configuration ==
== Chemins de configuration ==
* `/home/loic/.config/systemd/user/ollama.service`
* `/home/loic/.config/containers/systemd/ollama-rocm.container`
* `/home/loic/.config/systemd/user/ollama-nvidia.service`
* `/home/loic/.config/containers/systemd/ollama-nvidia.container`
* `/etc/caddy/Caddyfile`
* `/etc/caddy/Caddyfile`
* `/home/loic/.bashrc` (alias CLI)
* `/home/loic/.bashrc` (alias CLI)
Ligne 116 : Ligne 116 :
=== État des services ===
=== État des services ===
<pre>
<pre>
systemctl --user status ollama.service
systemctl --user status ollama-rocm.service
systemctl --user status ollama-nvidia.service
systemctl --user status ollama-nvidia.service
</pre>
</pre>
Ligne 122 : Ligne 122 :
=== Journaux ===
=== Journaux ===
<pre>
<pre>
journalctl --user -u ollama.service -n 100 --no-pager
journalctl --user -u ollama-rocm.service -n 100 --no-pager
journalctl --user -u ollama-nvidia.service -n 100 --no-pager
journalctl --user -u ollama-nvidia.service -n 100 --no-pager
</pre>
</pre>
Ligne 150 : Ligne 150 :
== Données / emplacements à sauvegarder ==
== Données / emplacements à sauvegarder ==
* `/media/loic/nem/ollama`
* `/media/loic/nem/ollama`
* `/home/loic/.config/systemd/user/ollama.service`
* `/home/loic/.config/containers/systemd/ollama-rocm.container`
* `/home/loic/.config/systemd/user/ollama-nvidia.service`
* `/home/loic/.config/containers/systemd/ollama-nvidia.container`
* `/etc/caddy/Caddyfile`
* `/etc/caddy/Caddyfile`
* `/home/loic/.bashrc`
* `/home/loic/.bashrc`
Ligne 166 : Ligne 166 :
<pre>
<pre>
systemctl --user daemon-reload
systemctl --user daemon-reload
systemctl --user restart ollama.service
systemctl --user restart ollama-rocm.service
systemctl --user restart ollama-nvidia.service
systemctl --user restart ollama-nvidia.service
</pre>
</pre>
* Vérifier ensuite `curl http://127.0.0.1:11434/api/tags` et `curl http://127.0.0.1:11435/api/tags`.
* Vérifier ensuite `curl http://127.0.0.1:11434/api/tags` et `curl http://127.0.0.1:11435/api/tags`.
== Procédure de mise à jour — ROCm et client CLI ==
La procédure ci-dessous met à jour uniquement l’instance AMD/ROCm. Elle ne redémarre pas <code>ollama-nvidia.service</code> et ne modifie pas les modèles.
=== Mise à jour du conteneur ROCm ===
<pre>
# Sauvegarder la définition Quadlet avant modification éventuelle
STAMP=$(date +%Y%m%d-%H%M%S)
mkdir -p /home/loic/backups/ollama
cp -p /home/loic/.config/containers/systemd/ollama-rocm.container \
  /home/loic/backups/ollama/ollama-rocm.container.before-update-${STAMP}.bak
# Télécharger l’image flottante ROCm puis recréer le conteneur
podman pull docker.io/ollama/ollama:rocm
systemctl --user daemon-reload
systemctl --user restart ollama-rocm.service
# Contrôler le service et la version API
systemctl --user is-active ollama-rocm.service
podman ps --filter name=ollama_roc
curl -fsS http://127.0.0.1:11434/api/version
curl -fsS http://127.0.0.1:11434/api/tags
</pre>
Le 14 août 2026, cette procédure a fait passer l’API ROCm de <code>0.32.0</code> à <code>0.32.9</code>. Le journal confirme la détection ROCm de la Radeon RX 7900 XTX.
=== Mise à jour du client CLI utilisateur ===
Le binaire système <code>/usr/bin/ollama</code> était une installation root en version client <code>0.30.7</code>. Comme l’accès sudo n’était pas disponible, le client officiel a été installé dans <code>/home/loic/.local/bin</code>, qui est prioritaire dans le <code>PATH</code>.
<pre>
# Télécharger l’archive officielle Linux AMD64
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst \
  -o "$TMP/ollama.tar.zst"
zstd -d "$TMP/ollama.tar.zst" -o "$TMP/ollama.tar"
tar -xf "$TMP/ollama.tar" -C "$TMP"
# Installer le client pour l’utilisateur courant
mkdir -p /home/loic/.local/bin
install -m 0755 "$TMP/bin/ollama" /home/loic/.local/bin/ollama
hash -r
# Vérifier la résolution et la version
command -v ollama
ollama --version
# Tester le client contre l’instance AMD
OLLAMA_HOST=http://127.0.0.1:11434 ollama list
</pre>
Résultat vérifié : <code>/home/loic/.local/bin/ollama</code>, client version <code>0.32.9</code>, aligné avec l’API ROCm.
Pour remplacer également le binaire système, après validation et avec un compte root :
<pre>
sudo cp -p /usr/bin/ollama /home/loic/backups/ollama/ollama-client.system.before-update-$(date +%Y%m%d-%H%M%S).bin
sudo install -o root -g root -m 0755 /home/loic/.local/bin/ollama /usr/bin/ollama
/usr/bin/ollama --version
</pre>
=== Retour arrière ===
<pre>
# Revenir à l’image actuellement utilisée avant le pull : utiliser son digest
podman image ls --digests docker.io/ollama/ollama
# Restaurer le Quadlet si nécessaire, puis relancer
systemctl --user daemon-reload
systemctl --user restart ollama-rocm.service
# Désactiver le client utilisateur pour revenir au client système
mv /home/loic/.local/bin/ollama /home/loic/.local/bin/ollama.disabled
hash -r
/usr/bin/ollama --version
</pre>


== Maintenance documentaire ==
== Maintenance documentaire ==
Ligne 179 : Ligne 260 :
Les deux instances Ollama sont définies par Quadlet :
Les deux instances Ollama sont définies par Quadlet :


* ROCm : <code>ollama-rocm.service</code>, conteneur <code>ollama_roc</code>, port <code>11434</code>, image <code>docker.io/ollama/ollama:rocm</code>
* ROCm : <code>ollama-rocm.service</code>, conteneur <code>ollama_roc</code>, port <code>11434</code>, image <code>docker.io/ollama/ollama:rocm</code>, API vérifiée en version <code>0.32.9</code> le 14 août 2026
* NVIDIA : <code>ollama-nvidia.service</code>, conteneur <code>ollama_nv</code>, port <code>11435</code>, image <code>docker.io/ollama/ollama:latest</code>
* NVIDIA : <code>ollama-nvidia.service</code>, conteneur <code>ollama_nv</code>, port <code>11435</code>, image <code>docker.io/ollama/ollama:latest</code>
* Fichiers : <code>/home/loic/.config/containers/systemd/ollama-rocm.container</code> et <code>ollama-nvidia.container</code>
* Fichiers : <code>/home/loic/.config/containers/systemd/ollama-rocm.container</code> et <code>ollama-nvidia.container</code>
* Modèles partagés : <code>/media/loic/nem/ollama</code>
* Modèles partagés : <code>/media/loic/nem/ollama</code>


L'API ROCm répond actuellement en version <code>0.32.3</code>. Le tag <code>:rocm</code> est flottant ; pour figer une version, comparer son digest à un tag versionné tel que <code>:0.32.3-rocm</code> puis modifier le Quadlet.
L’API ROCm répond en version <code>0.32.9</code> après mise à jour du conteneur le 14 août 2026. Le tag <code>:rocm</code> est flottant ; pour figer une version, comparer son digest à un tag versionné tel que <code>:0.32.3-rocm</code> puis modifier le Quadlet.


L'instance NVIDIA reste dépendante de la cohérence entre le pilote noyau, les bibliothèques NVIDIA, le toolkit et le CDI.
L'instance NVIDIA reste dépendante de la cohérence entre le pilote noyau, les bibliothèques NVIDIA, le toolkit et le CDI.

Version du 14 août 2026 à 00:48

Trace install tas - Ollama

Rôle

API locale de modèles LLM avec deux instances distinctes :

  • une instance AMD/ROCm sur la Radeon RX 7900
  • une instance NVIDIA/CUDA sur la GeForce RTX 3070

Accès

Instance AMD / ROCm

Instance NVIDIA / CUDA

Ports

  • 11434/tcp : serveur Ollama AMD / ROCm
  • 11435/tcp : serveur Ollama NVIDIA / CUDA
  • 25434/tcp : proxy public Caddy vers l'instance AMD/ROCm, protégé par basicauth

Exécution / runtime

AMD / ROCm

  • Service systemd user généré : `ollama-rocm.service`
  • Conteneur : `ollama_roc`
  • Image : `docker.io/ollama/ollama:rocm`
  • Devices : `/dev/kfd`, `/dev/dri`

NVIDIA / CUDA

  • Service systemd user généré : `ollama-nvidia.service`
  • Conteneur : `ollama_nv`
  • Image : `docker.io/ollama/ollama:latest`
  • Intégration GPU : Podman + NVIDIA Container Toolkit + CDI
  • Device CDI utilisé : `nvidia.com/gpu=all`

Chemins de configuration

  • `/home/loic/.config/containers/systemd/ollama-rocm.container`
  • `/home/loic/.config/containers/systemd/ollama-nvidia.container`
  • `/etc/caddy/Caddyfile`
  • `/home/loic/.bashrc` (alias CLI)
  • `/home/loic/upgrade/ollama-dual-gpu-plan.md`

Volumes / persistance

  • Stockage modèles partagé entre les deux instances : `/media/loic/nem/ollama`
  • Montage conteneur : `/media/loic/nem/ollama -> /root/.ollama`

Dépendances

  • Caddy 25434 -> 11434 avec basicauth pour l'instance AMD/ROCm
  • NVIDIA driver 580 open pour la RTX 3070
  • NVIDIA Container Toolkit
  • CDI NVIDIA généré dans `/var/run/cdi/nvidia.yaml`
  • clients comme Open WebUI

Remarques

  • L'instance NVIDIA n'a fonctionné correctement qu'après mise en place de NVIDIA Container Toolkit et CDI.
  • Le stockage de modèles est partagé entre les deux serveurs pour éviter les doublons disque.
  • Par prudence, éviter les `ollama pull` simultanés sur les deux instances.
  • Faire préférentiellement les opérations d'écriture (`pull`, `rm`, création de modèles) sur une seule instance à la fois.
  • Le proxy public documenté actuellement cible uniquement l'instance AMD/ROCm.

Utilisation CLI

Sélection explicite du serveur

Pour cibler un serveur particulier depuis le terminal local, utiliser `OLLAMA_HOST`.

Exemples :

OLLAMA_HOST=http://127.0.0.1:11434 ollama list
OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3

OLLAMA_HOST=http://127.0.0.1:11435 ollama list
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3

Alias shell

Alias ajoutés dans `/home/loic/.bashrc` :

alias ollama-amd='OLLAMA_HOST=http://127.0.0.1:11434 ollama'
alias ollama-nvidia='OLLAMA_HOST=http://127.0.0.1:11435 ollama'

Exemples :

ollama-amd list
ollama-amd run qwen3

ollama-nvidia list
ollama-nvidia run qwen3

Exemples de tests

Test basique de disponibilité

curl http://127.0.0.1:11434/api/tags
curl http://127.0.0.1:11435/api/tags

Questions de test

OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3 "Donne-moi un résumé en 3 phrases de la différence entre ROCm et CUDA."
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3 "Donne-moi un résumé en 3 phrases de la différence entre ROCm et CUDA."
OLLAMA_HOST=http://127.0.0.1:11434 ollama run qwen3 "Écris un haïku sur les GPU."
OLLAMA_HOST=http://127.0.0.1:11435 ollama run qwen3 "Écris un haïku sur les GPU."

Vérifier le GPU utilisé côté NVIDIA

Les logs de `ollama-nvidia.service` doivent montrer une détection CUDA du type :

  • `library=CUDA`
  • `description="NVIDIA GeForce RTX 3070"`

Supervision / diagnostic

État des services

systemctl --user status ollama-rocm.service
systemctl --user status ollama-nvidia.service

Journaux

journalctl --user -u ollama-rocm.service -n 100 --no-pager
journalctl --user -u ollama-nvidia.service -n 100 --no-pager

Vérifier la carte NVIDIA

nvidia-smi
watch -n 1 nvidia-smi

Vérifier que CDI voit le GPU

nvidia-ctk cdi list

Conteneurs actifs

podman ps | grep -E 'ollama_roc|ollama_nv'

Contrôler la réponse API

curl http://127.0.0.1:11434/api/tags
curl http://127.0.0.1:11435/api/tags

Données / emplacements à sauvegarder

  • `/media/loic/nem/ollama`
  • `/home/loic/.config/containers/systemd/ollama-rocm.container`
  • `/home/loic/.config/containers/systemd/ollama-nvidia.container`
  • `/etc/caddy/Caddyfile`
  • `/home/loic/.bashrc`

Sauvegarde

  • Sauvegarder le répertoire de modèles partagé `/media/loic/nem/ollama`.
  • Sauvegarder les deux services systemd user Ollama.
  • Sauvegarder la configuration Caddy liée à `25434`.

Restauration

  • Restaurer `/media/loic/nem/ollama`.
  • Restaurer les fichiers systemd user `ollama.service` et `ollama-nvidia.service`.
  • Recharger systemd user puis relancer les services :
systemctl --user daemon-reload
systemctl --user restart ollama-rocm.service
systemctl --user restart ollama-nvidia.service


Procédure de mise à jour — ROCm et client CLI

La procédure ci-dessous met à jour uniquement l’instance AMD/ROCm. Elle ne redémarre pas ollama-nvidia.service et ne modifie pas les modèles.

Mise à jour du conteneur ROCm

# Sauvegarder la définition Quadlet avant modification éventuelle
STAMP=$(date +%Y%m%d-%H%M%S)
mkdir -p /home/loic/backups/ollama
cp -p /home/loic/.config/containers/systemd/ollama-rocm.container \
  /home/loic/backups/ollama/ollama-rocm.container.before-update-${STAMP}.bak

# Télécharger l’image flottante ROCm puis recréer le conteneur
podman pull docker.io/ollama/ollama:rocm
systemctl --user daemon-reload
systemctl --user restart ollama-rocm.service

# Contrôler le service et la version API
systemctl --user is-active ollama-rocm.service
podman ps --filter name=ollama_roc
curl -fsS http://127.0.0.1:11434/api/version
curl -fsS http://127.0.0.1:11434/api/tags

Le 14 août 2026, cette procédure a fait passer l’API ROCm de 0.32.0 à 0.32.9. Le journal confirme la détection ROCm de la Radeon RX 7900 XTX.

Mise à jour du client CLI utilisateur

Le binaire système /usr/bin/ollama était une installation root en version client 0.30.7. Comme l’accès sudo n’était pas disponible, le client officiel a été installé dans /home/loic/.local/bin, qui est prioritaire dans le PATH.

# Télécharger l’archive officielle Linux AMD64
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst \
  -o "$TMP/ollama.tar.zst"
zstd -d "$TMP/ollama.tar.zst" -o "$TMP/ollama.tar"
tar -xf "$TMP/ollama.tar" -C "$TMP"

# Installer le client pour l’utilisateur courant
mkdir -p /home/loic/.local/bin
install -m 0755 "$TMP/bin/ollama" /home/loic/.local/bin/ollama
hash -r

# Vérifier la résolution et la version
command -v ollama
ollama --version

# Tester le client contre l’instance AMD
OLLAMA_HOST=http://127.0.0.1:11434 ollama list

Résultat vérifié : /home/loic/.local/bin/ollama, client version 0.32.9, aligné avec l’API ROCm.

Pour remplacer également le binaire système, après validation et avec un compte root :

sudo cp -p /usr/bin/ollama /home/loic/backups/ollama/ollama-client.system.before-update-$(date +%Y%m%d-%H%M%S).bin
sudo install -o root -g root -m 0755 /home/loic/.local/bin/ollama /usr/bin/ollama
/usr/bin/ollama --version

Retour arrière

# Revenir à l’image actuellement utilisée avant le pull : utiliser son digest
podman image ls --digests docker.io/ollama/ollama

# Restaurer le Quadlet si nécessaire, puis relancer
systemctl --user daemon-reload
systemctl --user restart ollama-rocm.service

# Désactiver le client utilisateur pour revenir au client système
mv /home/loic/.local/bin/ollama /home/loic/.local/bin/ollama.disabled
hash -r
/usr/bin/ollama --version

Maintenance documentaire

Lors d'un changement de port, de proxy public, de stockage des modèles, de pilote GPU, de toolkit NVIDIA, d'alias shell ou d'architecture AMD/NVIDIA, mettre à jour cette page et la page centrale Trace install tas.

Trace documentaire

Cette page fait partie de Trace install tas.\n\n== État Quadlet confirmé — 2026-07-25 ==

Les deux instances Ollama sont définies par Quadlet :

  • ROCm : ollama-rocm.service, conteneur ollama_roc, port 11434, image docker.io/ollama/ollama:rocm, API vérifiée en version 0.32.9 le 14 août 2026
  • NVIDIA : ollama-nvidia.service, conteneur ollama_nv, port 11435, image docker.io/ollama/ollama:latest
  • Fichiers : /home/loic/.config/containers/systemd/ollama-rocm.container et ollama-nvidia.container
  • Modèles partagés : /media/loic/nem/ollama

L’API ROCm répond en version 0.32.9 après mise à jour du conteneur le 14 août 2026. Le tag :rocm est flottant ; pour figer une version, comparer son digest à un tag versionné tel que :0.32.3-rocm puis modifier le Quadlet.

L'instance NVIDIA reste dépendante de la cohérence entre le pilote noyau, les bibliothèques NVIDIA, le toolkit et le CDI.