Ir para o conteúdo

Este conteúdo ainda está em francês

A página está traduzida, mas o conteúdo detalhado ainda não. As fichas, os guias e os catálogos continuam em francês: preferimos mostrar-lhe o original a uma tradução automática aproximada. Ver o site em francês

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é