freedzhost.cloud

Votre premier modèle local avec llama.cpp

Niveau DébutantTemps estimé 30 minÀ lire avant Docker avec accès à votre carte graphiqueUn mot inconnu ? Lexique

Dernière révision :

llama.cpp est le moteur open source qui fait tourner la plupart des modèles locaux. Son serveur parle la même API que les grands fournisseurs du cloud : la plupart des outils peuvent l'utiliser sans modification.

Un peu d'histoire

En mars 2023, quelques jours après la diffusion des poids de LLaMA de Meta, Georgi Gerganov publiait llama.cpp : du C et du C++ tout simples qui faisaient tourner un grand modèle de langage sur le processeur d'un portable. La quantification, stocker les poids sur 4 ou 5 bits au lieu de 16, le faisait tenir dans une mémoire ordinaire. En août 2023, le projet a introduit le format de fichier GGUF, devenu la monnaie commune des modèles locaux.

1. Télécharger un modèle

Qwen3 8B, compressé sur 4 bits (Q4_K_M), 5,0 Go : il tient sur une carte de 8 Go.

mkdir -p ~/models
curl -L -o ~/models/Qwen3-8B-Q4_K_M.gguf \
  https://huggingface.co/unsloth/Qwen3-8B-GGUF/resolve/main/Qwen3-8B-Q4_K_M.gguf

2. Le servir

docker run --rm --gpus all \
  -p 127.0.0.1:8080:8080 \
  -v ~/models:/models \
  ghcr.io/ggml-org/llama.cpp:server-cuda \
  -m /models/Qwen3-8B-Q4_K_M.gguf \
  -ngl 99 -c 8192 -fa on \
  --host 0.0.0.0 --port 8080
cette machinecurl / votre outil127.0.0.1:8080llama-servercontainerMémoire GPUpoids 5,0 Go + contextePOST /v1/chat/completionsport publié-ngl 99Internetnon exposé
Une requête, du début à la fin, sans quitter la machine : le port n'écoute que sur 127.0.0.1.

3. Lui parler

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "Dis bonjour en une phrase."}]}'

Ou ouvrez http://127.0.0.1:8080 dans un navigateur : le serveur fournit une petite page de discussion.

Un piège que nous avons mesuré

jetons/s, lecture du prompt-ctv q8_01 330-ctv q4_062,7génération : 54 jetons/s dans les deux cas
Même modèle, même carte, un seul réglage changé. Lecture d'un prompt de 7 758 jetons : 21 fois plus lent avec ‑ctv q4_0.

Pour gagner de la mémoire, on peut compresser le cache de contexte avec -ctk q8_0 -ctv q8_0. N'allez pas plus loin côté V : avec -ctv q4_0, flash attention se désactive sans prévenir et la lecture d'un long prompt est devenue 21 fois plus lente sur notre carte (62,7 au lieu de 1 330 jetons par seconde), alors que la vitesse de génération n'a pas bougé. Un test qui ne mesure que la génération ne l'aurait jamais vu.

Sources

Utile ? Dites-nous ce qu'il faut mesurer ensuite.