⚠️ Prérequis

Avant de commencer, assurez-vous que :

🟩 L'environnement NVIDIA

🔧 Installation du pilote de la carte graphique

Par défaut, une installation fraîche d'Ubuntu utilise le pilote graphique Nouveau, celui-ci a l'avantage d'être libre et open-source, cependant il ne permets pas l'utilisation de CUDA, indispensable pour l’inférence de notre LLM local.

Avant d'installer quoi que ce soit avec apt, il est recommandé de mettre à jour votre système :

sudo apt update && sudo apt upgrade

Pour vérifier si le pilote NVIDIA est déjà installé, exécutez la commande suivante :

$ cat /proc/driver/nvidia/version

Si on obtient une sortie similaire à celle-ci :

NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.309.01  Wed Mar 25 15:26:15 UTC 2026
GCC version:  gcc version 12.3.0 (Ubuntu 12.3.0-1ubuntu1~22.04.3)

Le pilote est déjà installé. Sinon, il faudra l'installer. Sous Ubuntu, c'est très simple. On affiche d'abord la liste des pilotes disponibles :

$ ubuntu-drivers devices

Exemple de sortie :

== /sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0 ==
modalias : pci:v000010DEd00002231sv00001028sd0000147Ebc03sc00i00
vendor   : NVIDIA Corporation
model    : GA102GL [RTX A5000]
driver   : nvidia-driver-580-server-open - distro non-free
driver   : nvidia-driver-535-server - distro non-free
driver   : nvidia-driver-535-open - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-535 - distro non-free
driver   : nvidia-driver-595-server - distro non-free
driver   : nvidia-driver-595-open - distro non-free recommended
driver   : nvidia-driver-545 - distro non-free
driver   : nvidia-driver-545-open - distro non-free
driver   : nvidia-driver-595 - distro non-free
driver   : nvidia-driver-580 - distro non-free
driver   : nvidia-driver-580-server - distro non-free
driver   : nvidia-driver-595-server-open - distro non-free
driver   : nvidia-driver-535-server-open - distro non-free
driver   : nvidia-driver-580-open - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

Le pilote marqué recommended est celui qu'il faut installer. Dans ce cas il s'agit de la version 595 :

$ sudo ubuntu-drivers install nvidia:595

Une alternative consiste à utiliser la méthode automatisée :

$ sudo ubuntu-drivers autoinstall

Il est également possible d'installer le pilote depuis le site de NVIDIA, mais je préfère utiliser la version fournie par apt, car c'est plus simple pour les mises à jour.

Redémarrez ensuite votre système :

$ sudo reboot

Pour vérifier si l'installation du pilote s'est bien passée, vous pouvez lancer nvidia-smi.

🔥 Le kit de développement CUDA

📌 À quoi sert CUDA

CUDA (Compute Unified Device Architecture) est un kit de développement propriétaire créé par NVIDIA. Il permet aux développeurs d’écrire du code en C/C++ pour exploiter la puissance des processeurs graphiques (GPU) et déléguer des calculs intensifs depuis le processeur central (CPU).

Cette approche est particulièrement efficace pour les tâches hautement parallélisables, comme :

Grâce à CUDA, les applications peuvent bénéficier d’une accélération matérielle significative, réduisant ainsi les temps de calcul de plusieurs ordres de grandeur.

🔧 Étapes d'installation

1. Déterminer la version a installer

On commence par afficher la version minimale de CUDA requise pour notre carte graphique avec la commande 1 :

nvidia-smi | grep -oP 'CUDA Version: \K[0-9.]+'

Sur ma machine, la sortie est :

13.2

Cela signifie que le pilote installé supporte CUDA jusqu’à la version 13.2. Pour exploiter pleinement l’accélération matérielle, il est donc recommandé d’installer le CUDA Toolkit en version 13.2.

On peut vérifier la version de CUDA Toolkit disponible dans les dépôts Ubuntu avec la commande : apt :

apt show nvidia-cuda-toolkit

Exemple de sortie :

Version: 11.5.1-1ubuntu1
Priority: extra
Section: multiverse/devel
Origin: Ubuntu
...

Ici, la version disponible (11.5.1) est inférieure à celle requise (13.2). Les dépôts Ubuntu officiels ne proposent pas toujours la dernière version de CUDA. Pour installer la version 13.2, il faudra donc passer par le dépôt officiel NVIDIA.

2. Installer gcc

On peut vérifier si gcc est installé avec la commande :

$ which gcc

Si la commande précédente ne renvoie rien gcc n'est pas installé, on l'installe donc en passant par le méta-paquet build-essential 2:

$ sudo apt install build-essential

3. Ajouter le dépôt officiel NVIDIA

Installer le paquet cuda-keyring : téléchargement du paquet :

$ wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb

Où on remplace <distro> et <arch> par les informations correspondant à votre systéme d'exploitation, que l'on peut obtenir avec la commande :

$ hostnamectl

Ce qui donne par exemple :

...
Operating System: Ubuntu 22.04.5 LTS
          Kernel: Linux 6.8.0-124-generic
Architecture: x86-64
...

<distro> = ubuntu2204 et <arch> = x86_64

Puis on installe le paquet :

$ sudo dpkg -i cuda-keyring_1.1-1_all.deb

4. Mettre à jour les dépôts et installer CUDA Toolkit

On met à jour la liste des dépôts du système d'exploitation :

$ sudo apt update

On peut maintenant vérifier que les différentes versions de cuda-toolkit sont maintenant disponibles :

$ apt show cuda-toolkit -a

On finit l'installation avec la bonne version de CUDA (<version>=13-2 dans cet exemple) :

$ sudo apt install cuda-toolkit-<version>

5. Finalisation de l'installation

$ sudo apt-mark hold cuda-toolkit-<version>

usr/local/cuda/bin/nvcc --version

echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc source ~/.bashrc

On redémarre le système :

$ sudo reboot

🌍 Hello world!

On vient juste d'installer un compilateur pour notre GPU, il serait donc dommage de ne pas faire le traditionnel « Hello world » :

#include <stdio.h>
#include <cuda_runtime.h>

// Le mot-clé "__global__" indique que cette fonction s'exécute sur le GPU
__global__ void cuda_hello()
{
    // threadIdx.x est une variable intégrée à CUDA contenant l'ID du thread
    printf("Hello World from GPU thread %d!\n", threadIdx.x);
}

int main()
{
    printf("Hello World from CPU!\n");

    /* * Lance le noyau GPU.
     * <<<1, 5>>> signifie : 1 bloc de threads, contenant 5 threads parallèles.
     */
    cuda_hello<<<1, 5>>>();

    // Attend que le GPU ait fini d'imprimer avant que le CPU ne quitte le programme
    cudaDeviceSynchronize();

    return 0;
}

👁️ Supervision de l'activité du GPU

Le paquet du pilote de la carte graphique NVIDIA contient un outil très utile : nvidia-smi, c'est un analogue de htop 3 qui permet de superviser le CPU et l'utilisation de la RAM.

nvidia-smi

Voici un exemple de sortie dans le terminal :

Thu Jul  9 16:00:38 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.71.05              Driver Version: 595.71.05      CUDA Version: 13.2     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA RTX A5000               Off |   00000000:65:00.0  On |                  Off |
| 30%   47C    P8             30W /  230W |    1398MiB /  24564MiB |     17%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            3303      G   /usr/lib/xorg/Xorg                      370MiB |
|    0   N/A  N/A            3460      G   /usr/bin/gnome-shell                    194MiB |
|    0   N/A  N/A            4129      G   .../8585/usr/lib/firefox/firefox        242MiB |
|    0   N/A  N/A            5636      G   ...t_NextclWXLJfK/AppRun.wrapped          3MiB |
|    0   N/A  N/A            6417      G   /usr/lib/thunderbird/thunderbird        189MiB |
|    0   N/A  N/A            6696    C+G   ...al/zed.app/libexec/zed-editor        127MiB |
|    0   N/A  N/A           22557      G   /usr/share/librewolf/librewolf          160MiB |
+-----------------------------------------------------------------------------------------+

e la carte graphique avec nvidia-smi + watch nvidia-smi est un outil installé avec le pilote de la carte graphique, qui permet de surveiller l'activité de la carte graphique.

nvidia-smi

vérif la version apt show nvidia-cuda-toolkit

🧠 Moteurs d'inférence locale

🦙 llama.cpp

sudo apt update sudo apt install build-essential cmake git libcurl4-openssl-dev libssl-dev git clone https://github.com/ggml-org/llama.cpp cd llama.cpp cmake -B build -DGGML_CUDA=ON cmake --build build --config Release -j$(nproc)

echo 'export PATH="$HOME/APPLICATIONS/llama.cpp/build/bin:$PATH"' >> ~/.bashrc source ~/.bashrc

llama-cli --version

✨ Ollama

🔄 Autres moteurs

lmstudio etc.

🤖 Agents

🦉 Claude code

📜 Codex

🚀 Zed Agent

🌟 Zed : l'environnement de développement intégré

🔧 Installation

curl -f https://zed.dev/install.sh | sh

⚙️ Configuration de Zed Agent

🛠️ Utilitaires

🔍 📦 llmfit

llmfit curl -fsSL https://llmfit.axjns.dev/install.sh | sh

📋 Notes

1. 🔗 Explication détaillée de la commande :
nvidia-smi | grep -oP 'CUDA Version: \K[0-9.]+'

Cette commande illustre parfaitement la puissance de grep. La sortie de nvidia-smi est chaînée avec l'opérateur pipe | dans grep, utilisé avec deux options :

Dans l'expression régulière on trouve trois éléments :

2. 🔗 Le méta-paquet build-essential contient d'autres outils en plus de gcc (GNU C Compiler) :

3. 🔗 htop est un logiciel en ligne de commande plus avancé que la commande top. Il permet de surveiller en temps réel l'utilisation des ressources (CPU, mémoire, etc.), de trier, filtrer ou tuer des processus. Idéal pour le diagnostic système et la gestion des performances. Pour l'installer :
$ sudo apt install htop
htop