Ollama et ROCm sur GPU AMD : guide pour l'architecture RDNA

Exploiter la puissance d’un GPU AMD pour l’IA locale demande une configuration précise, surtout pour les cartes RDNA 2 comme la RX 6700. Ce guide vous montre comment installer Ollama avec accélération ROCm, configurer l’extension Cline et résoudre les erreurs de compatibilité.

Pourquoi ROCm et pas CUDA ?

Ollama supporte deux backends GPU principaux :

BackendConstructeurDétectionNotes
CUDANVIDIAAutomatiquePlug-and-play sur la majorité des cartes RTX/GTX
ROCmAMDManuelle pour RDNA 2Nécessite l’installation de la stack ROCm

CUDA est historiquement mieux supporté par l’écosystème IA. ROCm rattrape son retard depuis les séries RX 6000/7000, mais certaines cartes nécessitent encore un override d’architecture (c’est précisément l’objet de ce guide pour la RX 6700).

GPU AMD supportés par Ollama via ROCm

SérieExemplesIdentifiant ROCmStatut
RDNA 2RX 6600, 6700, 6800, 6900gfx1030/1031/1032✅ (override requis)
RDNA 3RX 7600, 7700, 7800, 7900gfx1100/1101/1102✅ natif
RDNA 4RX 9070, 9070 XTgfx1200/1201✅ natif (ROCm 6.4+)

1. Installation des pilotes AMD (ROCm)

Le socle de l’accélération GPU chez AMD est la stack ROCm (Radeon Open Compute). Elle expose le GPU via les interfaces HIP et HSA qu’Ollama utilise pour l’inférence.

Sur Arch Linux / CachyOS

sudo pacman -S rocm-hip-sdk rocm-opencl-sdk

Sur Ubuntu / Debian

sudo apt update && sudo apt install rocm-hip-sdk

Droits d’accès GPU (toutes distributions)

Par défaut, seul root peut accéder au GPU. Ajoutez votre utilisateur aux groupes nécessaires :

sudo usermod -aG video,render $USER

Redémarrez votre session (ou fermez/rouvrez votre environnement graphique) pour que les changements soient pris en compte.

Sur certaines distributions, une règle udev est nécessaire :

# Vérifier si la règle existe déjà
ls /etc/udev/rules.d/ | grep amdgpu

# Créer la règle si absente
echo 'SUBSYSTEM=="kfd", KERNEL=="kfd", TAG+="uaccess", GROUP="render"' \
  | sudo tee /etc/udev/rules.d/70-kfd.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

Validation

Vérifiez que votre GPU est reconnu par ROCm :

rocminfo | grep "gfx10"

La RX 6700 doit apparaître sous l’identifiant gfx1031.

# Vérification complète (liste tous les agents)
rocminfo | grep -A5 "Agent"

2. Installation propre d’Ollama

Pour éviter les conflits de versions entre les paquets système et le moteur d’inférence, nous utilisons le binaire officiel. Ce binaire embarque les bibliothèques CUDA et ROCm nécessaires — pas besoin de les installer séparément pour Ollama lui-même.

Nettoyage préalable (indispensable sur Arch si déjà installé via pacman) :

sudo pacman -Rs ollama
sudo rm -rf /etc/systemd/system/ollama.service.d

Installation via le script officiel :

curl -fsSL https://ollama.com/install.sh | sh

Le script installe Ollama dans /usr/local/bin/ollama et crée un service systemd ollama.service actif et démarré automatiquement.

# Vérifier que le service tourne
systemctl status ollama

# Consulter les logs pour confirmer la détection GPU
journalctl -u ollama -n 50

Dans les logs, cherchez une ligne mentionnant rocm ou hip pour confirmer que le GPU AMD est détecté.

3. Correction de l’erreur GGML_ASSERT (Spécifique RX 6700)

Par défaut, Ollama peut crasher avec l’erreur :

GGML_ASSERT(max_blocks_per_sm > 0) failed

La RX 6700 est identifiée comme gfx1031, une variante non supportée nativement par toutes les bibliothèques ROCm. La correction consiste à lui faire croire qu’elle est une gfx1030 (RX 6800), dont l’architecture est quasi-identique.

1. Éditer le service systemd

sudo systemctl edit ollama.service

Cela ouvre un fichier d’override dans /etc/systemd/system/ollama.service.d/override.conf. Ajoutez le contenu suivant :

[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
Environment="HIP_VISIBLE_DEVICES=0"
  • HSA_OVERRIDE_GFX_VERSION=10.3.0 : force ROCm à traiter la carte comme une gfx1030
  • HIP_VISIBLE_DEVICES=0 : expose uniquement le premier GPU (évite les conflits si vous avez un iGPU)

2. Appliquer et redémarrer

sudo systemctl daemon-reload
sudo systemctl restart ollama

3. Validation du chargement des variables

sudo tr '\0' '\n' < /proc/$(pidof ollama)/environ | grep -E 'HSA|HIP'

La sortie doit afficher les deux variables d’environnement définies.

Autres cartes RDNA 2 concernées

Cartegfx natifOverride à utiliser
RX 6600gfx1032HSA_OVERRIDE_GFX_VERSION=10.3.0
RX 6700gfx1031HSA_OVERRIDE_GFX_VERSION=10.3.0
RX 6750 XTgfx1031HSA_OVERRIDE_GFX_VERSION=10.3.0
RX 6800gfx1030Aucun (natif)
RX 6900 XTgfx1030Aucun (natif)

4. Configuration de Cline pour VS Code

Cline transforme votre éditeur en agent de développement autonome.

  1. Installez l’extension Cline dans Visual Studio Code.
  2. Ouvrez le panneau Cline et accédez aux réglages.
  3. Configurez les champs suivants :
    • Provider : Ollama
    • Base URL : http://localhost:11434
    • Model ID : qwen2.5-coder:7b (téléchargez-le via ollama pull qwen2.5-coder:7b)

5. Dépannage et Validation

Vérifier l’utilisation du GPU

Lancez un modèle et surveillez l’activité en temps réel :

# Terminal 1 : lancer le modèle
ollama run qwen2.5-coder:7b "Écris un script shell de test"

# Terminal 2 : surveiller la VRAM et l'utilisation GPU
watch -n1 rocm-smi

Pendant l’inférence, la colonne VRAM Used doit afficher une valeur significative (plusieurs Go pour un modèle 7B).

Ollama ignore le GPU (utilise le CPU)

Si rocm-smi ne montre aucune activité pendant l’inférence :

# Vérifier les logs d'Ollama pour voir si ROCm est détecté
journalctl -u ollama --no-pager | grep -i "rocm\|hip\|gpu\|error"

Causes fréquentes :

  • Variables d’environnement non chargées → revérifier l’étape 3
  • Droits d’accès manquants → revérifier les groupes video et render
  • Version ROCm incompatible → essayer une version antérieure depuis l’AUR

Tester les performances

# Benchmark rapide : nombre de tokens par seconde
ollama run qwen2.5-coder:7b "Génère 500 mots sur l'histoire de Linux" 2>&1 | tail -5

Ollama affiche à la fin : eval rate: XX.XX tokens/s. Sur une RX 6700 avec override ROCm, attendez 30 à 60 tokens/s pour un modèle 7B Q4.

Droits d’accès GPU

Si les groupes ont déjà été vérifiés à l’étape 1 et que le problème persiste :

# Vérifier les groupes actuels de l'utilisateur (sans redémarrer)
id $USER

# Forcer l'application sans redémarrage (session courante uniquement)
newgrp render

Conclusion

Votre RX 6700 est désormais pleinement exploitée pour le développement assisté par IA. Vous bénéficiez d’une confidentialité totale et d’une latence réduite grâce à l’exécution 100% locale.

Pour aller plus loin

Sources

Catégories : DevOps Divers 
Tags: Cline LLM Ollama 

Suggestions de lecture :