From ecaa84743963110f9abdc5c72a20ace90c367284 Mon Sep 17 00:00:00 2001 From: Loki Date: Sat, 15 Aug 2026 11:11:40 +0000 Subject: [PATCH] =?UTF-8?q?NGL=3Dauto=20:=20laisser=20llama.cpp=20ajuster?= =?UTF-8?q?=20les=20couches=20=C3=A0=20la=20VRAM=20libre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Loki passait TOUJOURS -ngl, avec 999 comme repli quand le champ est vide : vider « Couches sur GPU » ne changeait donc rien. Or llama.cpp sait ajuster lui-même le nombre de couches à la mémoire libre (common_fit_params), mais y renonce dès que la valeur est imposée — « n_gpu_layers already set by user to 999, abort ». D'où, sur une carte trop juste pour le contexte demandé, des cudaMalloc en échec, un repli partiel sur le CPU, et un débit effondré alors que le GPU tourne à 100 %. NGL=auto n'envoie plus -ngl du tout. Le défaut reste 999 : omettre le drapeau sur un llama.cpp antérieur à cet ajustement le ferait tourner 100 % CPU. Le champ de l'UI passe en texte pour accepter « auto ». Vérifié : NGL=auto → aucun -ngl dans la ligne de commande ; NGL=999 → -ngl 999. --- internal/loki/backend_serve.go | 11 ++++++++++- internal/loki/sys_service.go | 2 +- internal/loki/ui/index.html | 4 ++-- internal/loki/ui/src/index.tmpl.html | 4 ++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/loki/backend_serve.go b/internal/loki/backend_serve.go index b65f2ff..c711d98 100644 --- a/internal/loki/backend_serve.go +++ b/internal/loki/backend_serve.go @@ -101,7 +101,6 @@ func cmdServe(args []string) error { llmArgs := []string{bin, "-m", model, - "-ngl", get("NGL", "999"), "-c", get("CTX", "32768"), "-t", get("THREADS", "0"), "-tb", get("THREADS_BATCH", "0"), @@ -110,6 +109,16 @@ func cmdServe(args []string) error { "--host", get("HOST", "0.0.0.0"), "--port", get("PORT", "8080"), } + // NGL=auto : on n'envoie PAS -ngl, et llama.cpp choisit lui-même combien de + // couches tiennent dans la VRAM libre (common_fit_params). Il s'en abstient + // dès que la valeur est imposée — « n_gpu_layers already set by user to 999, + // abort » — d'où des cudaMalloc en échec, un repli partiel sur le CPU et un + // débit effondré alors que le GPU tourne à 100 %. + // Le défaut reste 999 (tout sur le GPU) : omettre -ngl sur un llama.cpp + // antérieur à cet ajustement automatique le ferait tourner 100 % CPU. + if ngl := get("NGL", "999"); !strings.EqualFold(ngl, "auto") { + llmArgs = append(llmArgs, "-ngl", ngl) + } if ktv != "" { llmArgs = append(llmArgs, "-ctk", ktv) } diff --git a/internal/loki/sys_service.go b/internal/loki/sys_service.go index 9a8e80f..4eadd6b 100644 --- a/internal/loki/sys_service.go +++ b/internal/loki/sys_service.go @@ -67,7 +67,7 @@ var configTemplate = []struct{ key, help string }{ {"HOST", "adresse d'écoute du moteur (défaut 0.0.0.0)"}, {"PORT", "port du moteur (défaut 8080)"}, {"CTX", "taille du contexte (défaut 32768)"}, - {"NGL", "couches déportées sur le GPU (défaut 999 = tout)"}, + {"NGL", "couches déportées sur le GPU (défaut 999 = tout ; auto = ce qui tient en VRAM)"}, {"BATCH", "batch (défaut 2048)"}, {"UBATCH", "micro-batch (défaut 512)"}, {"THREADS", "threads CPU, 0 = auto"}, diff --git a/internal/loki/ui/index.html b/internal/loki/ui/index.html index 135758e..68be1ae 100644 --- a/internal/loki/ui/index.html +++ b/internal/loki/ui/index.html @@ -1902,8 +1902,8 @@ button:hover{border-color:var(--dim);color:var(--text)} tok
- Couches sur GPU999 = tout sur le GPU - + Couches sur GPU999 = tout sur le GPU · auto = ce qui tient en VRAM +
Experts MoE sur CPUvide = non diff --git a/internal/loki/ui/src/index.tmpl.html b/internal/loki/ui/src/index.tmpl.html index f69057e..ca2cc5e 100644 --- a/internal/loki/ui/src/index.tmpl.html +++ b/internal/loki/ui/src/index.tmpl.html @@ -720,8 +720,8 @@ tok
- Couches sur GPU999 = tout sur le GPU - + Couches sur GPU999 = tout sur le GPU · auto = ce qui tient en VRAM +
Experts MoE sur CPUvide = non