Skip to content

This content is still in French

The page itself is translated, but its detailed content is not yet. Hardware sheets, guides and catalogues are still shown in French: we would rather give you the original than a rough machine translation. View the French site

Guide 5 sur 12

Compiler llama.cpp pour tirer le maximum du processeur

Quand Ollama ne suffit plus : compiler le moteur pour votre processeur exact, régler les threads, et récupérer les 20 à 40 % de débit que laisse un binaire générique.

Démarrer le pas à pas 7 étapes · 1 h 30 · une étape à l'écran, avec Précédent / Suivant

Niveau Avancé
Durée 1 h 30
Étapes 7
Catégorie Optimisation
Avant de commencer
  • Être à l'aise avec le terminal
  • Environ 5 Go d'espace disque libre
  • Un modèle GGUF déjà téléchargé, ou de quoi le récupérer
1

Pourquoi compiler

Un binaire distribué doit tourner partout : il n'active que les instructions présentes sur toutes les machines de la famille. Compilé sur place, le moteur utilise les extensions vectorielles réellement disponibles.

  • Sur ARM : les instructions dotprod et i8mm quand le cœur les possède
  • Sur x86 : AVX2, AVX-512 et les extensions VNNI selon le processeur
  • Contrôle direct du nombre de threads, du contexte et de l'attention rapide
  • Accès à llama-bench, l'outil de mesure de référence
Quand ça n'en vaut pas la peineSi Ollama vous donne déjà un débit confortable, gardez-le. Cette étape s'adresse aux machines contraintes où chaque token par seconde compte, ou aux plateformes qu'Ollama ne couvre pas.
2

Installer les dépendances

shell
# Debian, Ubuntu, Raspberry Pi OS
sudo apt update
sudo apt install -y build-essential cmake git libcurl4-openssl-dev

# Fedora
sudo dnf install -y gcc-c++ cmake git libcurl-devel

# Termux (Android)
pkg install -y clang cmake git
3

Compiler

shell
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

# Compilation CPU optimisée pour la machine locale
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=ON
cmake --build build --config Release -j$(nproc)

ls build/bin/

Comptez cinq minutes sur un mini-PC, une vingtaine sur un Raspberry Pi. Vous obtenez notamment llama-cli, llama-server et llama-bench.

Avec un GPU NVIDIA (Jetson compris), ajoutez le support CUDA :

shell
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)
GGML_NATIVECette option produit un binaire taillé pour ce processeur. Il peut refuser de démarrer sur une autre machine. Si vous préparez une image à dupliquer sur un parc hétérogène, compilez sans cette option.
4

Récupérer un modèle GGUF

shell
pip install -U "huggingface_hub[cli]"

hf download unsloth/Qwen3-4B-GGUF Qwen3-4B-Q4_K_M.gguf \
  --local-dir ./modeles

ls -lh ./modeles

Si Ollama est déjà installé, ses modèles sont sur le disque dans ~/.ollama/models/blobs/ : les fichiers volumineux sont des GGUF utilisables tels quels.

5

Mesurer, puis régler

Ne réglez rien à l'aveugle. llama-bench donne deux chiffres : le traitement du prompt (pp) et la génération (tg).

shell
# Comparer plusieurs nombres de threads
./build/bin/llama-bench -m ./modeles/Qwen3-4B-Q4_K_M.gguf -t 2,4,8
Le résultat qui surprendSur un processeur à cœurs hétérogènes — quatre gros et quatre petits, comme le RK3588 — utiliser tous les cœurs est souvent plus lent qu'utiliser les quatre performants seuls. Les petits cœurs freinent la synchronisation. Mesurez, ne supposez pas.
6

Lancer le serveur

shell
./build/bin/llama-server \
  -m ./modeles/Qwen3-4B-Q4_K_M.gguf \
  -c 4096 \
  -t 4 \
  --host 0.0.0.0 --port 8080

# Interface web sur http://IP:8080
# API compatible OpenAI sur http://IP:8080/v1
OptionRôleConseil sur petite machine
-cTaille du contexteLe plus bas qui convienne : 2048 ou 4096
-tThreads de générationLe nombre de cœurs performants, pas le total
-nglCouches déchargées sur le GPU0 sans GPU, 99 pour tout décharger
-faAttention rapideÀ activer : réduit la mémoire du cache
--mlockVerrouille le modèle en RAMUtile si la machine a tendance à swapper
7

Installer en service

Pour que le serveur redémarre avec la machine :

shell
sudo tee /etc/systemd/system/llama.service >/dev/null <<'EOF'
[Unit]
Description=llama.cpp server
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/llama.cpp
ExecStart=/home/pi/llama.cpp/build/bin/llama-server -m /home/pi/modeles/Qwen3-4B-Q4_K_M.gguf -c 4096 -t 4 --host 0.0.0.0 --port 8080
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now llama
systemctl status llama

Adaptez User et les chemins à votre installation.

llama.cpp compilation performance avancé