Aller au contenu
Inférence

llama.cpp et llama-server

Le moteur de départ de la Box : slots, contexte partagé, KV cache quantifié, flash attention, métriques Prometheus, images Docker ROCm/Vulkan et flags connus pour gfx1151.

À vérifier#llama-cpp#rocm#vulkan#strix-halo#multi-utilisateurs#kv-cache#monitoring#dockerPublié le 16 sept. 2026Mis à jour le 16 sept. 2026Vérifié le 16 sept. 2026À revérifier le 15 déc. 2026

L'essentiel

  • llama-server est le serveur HTTP de llama.cpp : API OpenAI, slots parallèles, continuous batching activé par défaut, KV cache quantifiable, métriques Prometheus 1.
  • Deux backends GPU sur gfx1151 : HIP (ROCm) et Vulkan (RADV). Aucun n'est systématiquement plus rapide : cela dépend du modèle, de la phase (prompt ou génération) et des flags de build.
  • Limite structurelle : file d'attente FIFO sans priorité documentée.
  • Toutes les options ci-dessous proviennent du README officiel ; les flags de build et variables d'environnement « Strix Halo » proviennent de la communauté et doivent être revalidés.

Options clés de llama-server

Source : README tools/server 1. Les valeurs par défaut sont celles de la branche master au 16 septembre 2026.

OptionRôleValeur par défaut
-np, --parallel Nnombre de slots (requêtes traitées simultanément)-1 (auto)
-c, --ctx-size Ntaille du contexte total ; partagé entre les slots (chaque slot dispose de ctx / n_parallel en mode non unifié, formulation à vérifier dans la version courante)0 (lu depuis le modèle)
--kv-unifiedun seul buffer KV partagé entre toutes les séquencesactivé si le nombre de slots est auto
-cb, --cont-batchingcontinuous batching (dynamic batching)activé
--cache-type-k, --cache-type-vtype du KV cache : f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1f16
-fa, --flash-attn on/off/autoflash attentionauto
--metricsendpoint Prometheusdésactivé
--slotsendpoint de supervision des slotsactivé
--jinjatemplates de chat Jinja (requis pour gpt-oss / harmony) 2

Endpoints : /v1/chat/completions, /v1/embeddings (modèle avec pooling), /rerank, /health, /slots, /metrics.

Slots, contexte, KV unifié

Un slot est une séquence servie en parallèle. Avec -np 4 -c 32768 en mode non unifié, chaque slot disposerait d'environ 8 192 tokens (formulation du README à vérifier). Avec --kv-unified, le buffer est commun et se répartit selon l'usage réel : plus souple quand les requêtes sont de longueurs très différentes (question courte vs analyse de dossier). Dimensionnement détaillé dans KV cache.

KV cache quantifié

--cache-type-k q8_0 --cache-type-v q8_0 divise par deux la mémoire du KV cache par rapport à f16, pour une perte de précision faible ; q4_0 divise par quatre avec une perte plus marquée (formulation reprise de la FAQ Ollama, qui s'appuie sur llama.cpp). La quantification de V requiert généralement flash attention.

Métriques et supervision

--metrics expose notamment llamacpp:prompt_tokens_total, llamacpp:prompt_seconds_total, llamacpp:tokens_predicted_total, llamacpp:requests_processing, llamacpp:prompt_tokens_seconds, llamacpp:predicted_tokens_seconds 1. /slots donne l'état de chaque slot (occupé, tokens traités). Il n'y a pas de métrique TTFT par requête : à mesurer côté client ou reverse proxy. Voir Monitoring.

File d'attente et priorité

Les requêtes au-delà des slots disponibles sont mises en file et servies dans l'ordre. Aucune option de priorité n'est documentée. Conséquence pour la Box : un traitement par lots (indexation, résumé nocturne) doit passer par une instance séparée ou être planifié hors heures ouvrées.

Images Docker officielles

ghcr.io/ggml-org/llama.cpp:server, :server-rocm, :server-vulkan 1. Alternatives : binaires « AMD-validated » pour gfx1150/gfx1151 sous ROCm 7.1.1 et Ubuntu 24.04 (llama-server, llama-bench, llama-cli) 5 ; builds nightly ROCm 7 de Lemonade 6 ; conteneurs communautaires kyuz0 7.

Exemple de lancement (documenté)

Le guide officiel gpt-oss recommande de lancer avec --jinja, -c et -np, et de régler l'effort de raisonnement via --chat-template-kwargs 2. Une commande complète pour notre cas (4 slots, 32k de contexte total, KV q8_0, métriques) reste à écrire et à valider sur la machine ; elle n'est pas reproduite ici faute de source la donnant telle quelle.

Flags et réglages « Strix Halo » (communauté, à revalider)

Réglages récurrents dans les retours communautaires (aucun n'est une recommandation officielle) :

  • Build HIP : GGML_HIP_NO_VMM=ON (gestionnaire de mémoire virtuelle HIP jugé bogué sur gfx1151), GPU_TARGETS=gfx1151, GGML_HIP_ROCWMMA_FATTN=ON 4 10.
  • Exécution HIP : -dio (direct I/O) requis pour les modèles au-delà d'environ 6 Go, sinon blocage au chargement 4 ; ROCBLAS_USE_HIPBLASLT=1 8.
  • Toujours : -fa 1 et --no-mmap pour éviter plantages et ralentissements 7.
  • Multi-slots : peu de gain observé au-delà de -np 4 sur GPU NVIDIA, goulot d'échantillonnage CPU (PR --backend-sampling) 3 ; sur Strix Halo, hogeheer trouve -np 8 comme point d'équilibre sur un MoE 35B-A3B 12.

Limites

  • Pas de priorité de file ; pas de TTFT natif dans les métriques.
  • Deux backends à maintenir et à re-mesurer à chaque mise à jour de ROCm ou Mesa.
  • Le contexte total est fixé au lancement : changer -c ou -np impose un redémarrage.
  • Un seul modèle par instance : embeddings et reranker demandent des instances séparées (ou un routeur).

Ce qu'il reste à tester

Sources

  1. 1llama.cpp — README de llama-server (tools/server)GitHubFiabilité hauteggml-org · publié 2026 (master) · consulté le 16 sept. 2026 · fiche source
  2. 2Guide officiel llama.cpp : running gpt-oss (#15396)GitHubFiabilité hauteggml-org · Georgi Gerganov · publié 2025-08 · consulté le 16 sept. 2026 · fiche source
  3. 3Discussion llama.cpp #18308 — paramètres optimaux pour l'inférence parallèleForumFiabilité moyenneggml-org (discussion) · publié 2025-12 · consulté le 16 sept. 2026 · fiche source
  4. 4llama.cpp discussion #20856 — Known-Good Strix Halo ROCm + llama.cpp StackGitHubFiabilité moyenneGitHub ggml-org (communauté) · realugbun · publié 2026-03-22 (màj 2026-07-23) · consulté le 16 sept. 2026 · fiche source
  5. 5AMD — binaires llama.cpp validés pour ROCm 7.1.1 (Radeon/Ryzen)Documentation officielleFiabilité hauteAMD · publié 2025–2026 · consulté le 16 sept. 2026 · fiche source
  6. 6lemonade-sdk/llamacpp-rocm — builds nightly llama.cpp + ROCm 7GitHubFiabilité hauteLemonade SDK / AMD · publié 2026 · consulté le 16 sept. 2026 · fiche source
  7. 7amd-strix-halo-toolboxes (README)GitHubFiabilité moyenneGitHub (communauté) · kyuz0 · publié 2025–2026 · consulté le 16 sept. 2026 · fiche source
  8. 8AMD Strix Halo (Ryzen AI Max+ 395) GPU Performance (llm-tracker)BenchmarkFiabilité hautellm-tracker.info · lhl · publié 2025-05-17 · consulté le 16 sept. 2026 · fiche source
  9. 9llama.cpp: Vulkan vs ROCm on Strix Halo (Soothill)BenchmarkFiabilité moyennesoothill.io · Darren Soothill · publié 2026-08-03 · consulté le 16 sept. 2026 · fiche source
  10. 10I tuned llama.cpp on a Strix Halo mini-PC — why « Vulkan beats ROCm » is a myth (Medium)BlogFiabilité faibleMedium · Bkpaine · publié 2026-07 · consulté le 16 sept. 2026 · fiche source
  11. 11Running 122B-Parameter LLMs Locally on AMD Strix Halo (Pellegrini, LinkedIn)BenchmarkFiabilité moyenneLinkedIn (article personnel) · Pellegrini · publié 2026 · consulté le 16 sept. 2026 · fiche source
  12. 12strix-halo-guide (README + BENCHMARKS.md)GitHubFiabilité moyenneGitHub (communauté) · hogeheer499 · publié 2026-03 → 2026-08-30 · consulté le 16 sept. 2026 · fiche source
content/docs/inference/llama-cpp.md883 mots