mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Moteur : drapeaux de chargement à jour, -ngl auto ; dictée qui dit pourquoi
Les llama-server récents ont fusionné --mlock, --mmap et --no-mmap dans un seul --load-mode, et refusent désormais d'ajuster les couches GPU dès qu'on leur impose un nombre : « n_gpu_layers already set by user to 999, abort ». Le moteur pousse alors tout sur le GPU et meurt en cudaMalloc, ou se replie à moitié sur le CPU — débit effondré, GPU à 100 %. - Traduction des drapeaux dépréciés AU LANCEMENT, pas dans le preset : --mlock → --load-mode mlock, --no-mmap → --load-mode none, --mmap → --load-mode mmap. Les interrupteurs de l'interface continuent d'écrire l'ancienne forme, et un moteur antérieur la reçoit telle quelle. Un --load-mode écrit à la main dans EXTRA_ARGS gagne sur tout. - -ngl auto par défaut quand le moteur propose la valeur, 999 sinon (l'omettre sur un moteur ancien le ferait tourner 100 % CPU). NGL=<nombre> dans le preset reste souverain. - --parallel et -ngl ne sont plus ajoutés en double quand EXTRA_ARGS les porte déjà : le moteur râlait (« specified multiple times ») et, pire, c'est la dernière occurrence qui gagne — le réglage explicite du preset était donc silencieusement écrasé par le défaut de Loki. - Les capacités se lisent dans « <bin> --help », une seule fois par binaire (binHelp met en cache) au lieu d'un lancement par question. Dictée : quand le téléchargement du modèle whisper échoue (conteneur sans réseau, Hugging Face injoignable), le serveur renvoyait bien la raison mais l'interface affichait quand même « téléchargement (0 %) ». L'erreur cachée laissait cliquer indéfiniment sur un micro qui n'écrira jamais rien. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
69bf8d985d
commit
cbf8635c61
4 files changed
+232
-25
No files matched your search
@@ -9241,7 +9241,12 @@ async function dictateStop(){
|
||||
const r = await jfetch('/api/transcribe', {method:'POST', headers:{'Content-Type':'audio/wav'}, body:wav});
|
||||
const j = await r.json().catch(()=>({}));
|
||||
if(r.status === 503 && j.downloading){
|
||||
toast('modèle de dictée en téléchargement ('+(j.pct||0)+' %) — réessaie dans un instant');
|
||||
// Le serveur relance le téléchargement à chaque tentative ; s'il a déjà
|
||||
// échoué (conteneur sans accès réseau, Hugging Face injoignable), il nous
|
||||
// renvoie la raison. La cacher derrière « 0 % » laissait l'utilisateur
|
||||
// cliquer indéfiniment sur un micro qui n'écrira jamais rien.
|
||||
toast(j.error ? 'modèle de dictée : échec du téléchargement — ' + j.error
|
||||
: 'modèle de dictée en téléchargement (' + (j.pct||0) + ' %) — réessaie dans un instant');
|
||||
return;
|
||||
}
|
||||
if(!r.ok){ toast(j.error || 'échec de la transcription'); return; }
|
||||
|
||||
@@ -48,7 +48,12 @@ async function dictateStop(){
|
||||
const r = await jfetch('/api/transcribe', {method:'POST', headers:{'Content-Type':'audio/wav'}, body:wav});
|
||||
const j = await r.json().catch(()=>({}));
|
||||
if(r.status === 503 && j.downloading){
|
||||
toast('modèle de dictée en téléchargement ('+(j.pct||0)+' %) — réessaie dans un instant');
|
||||
// Le serveur relance le téléchargement à chaque tentative ; s'il a déjà
|
||||
// échoué (conteneur sans accès réseau, Hugging Face injoignable), il nous
|
||||
// renvoie la raison. La cacher derrière « 0 % » laissait l'utilisateur
|
||||
// cliquer indéfiniment sur un micro qui n'écrira jamais rien.
|
||||
toast(j.error ? 'modèle de dictée : échec du téléchargement — ' + j.error
|
||||
: 'modèle de dictée en téléchargement (' + (j.pct||0) + ' %) — réessaie dans un instant');
|
||||
return;
|
||||
}
|
||||
if(!r.ok){ toast(j.error || 'échec de la transcription'); return; }
|
||||
|
||||
Reference in new issue
Block a user