Live 18/11 · Cohorte 318 nov à 19h00 MSK — atelier pratique gratuit sur les agents IA · La Cohorte 3 démarre le 23/11Atelier 18/11 →Cohorte 3 (23/11)
SortieAnalyse · Sur le radarHabr AI→ original

Cinq astuces pour accélérer un MoE sur GTX 1070 : l'auto-préfixe fait passer la latence de 13,3 à 6,1 s

Le développeur du moteur Strata fait tourner un gros modèle MoE sur une GTX 1070 avec 8 Go de VRAM et a recensé cinq façons de l'accélérer. Quatre existent déjà dans le moteur, mais sont souvent désactivées : le décodage spéculatif, le cache KV en RAM, le batching et le cache d'experts adaptatif. La cinquième est un patch maison avec détection automatique du préfixe commun, qui a réduit le délai avant le premier token de 13,3 à 6,1 secondes.

Traité par IA depuis Habr AI ; édité par Hamidun News
Cinq astuces pour accélérer un MoE sur GTX 1070 : l'auto-préfixe fait passer la latence de 13,3 à 6,1 s
Source : Habr AI. Collage: Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Source primaireHabr AI ↗
Rédacteur en chef
Chiffre clé #1--spec/--mtp apporte 1,3 à 1,6x en génération, surtout sur le code
Chiffre clé #2--kv-resident cède la VRAM libérée au cache d'experts
Chiffre clé #3Le cache d'experts adaptatif est 1,5 à 2 fois plus rapide que le cache statique

Si vous essayez de faire tourner un gros modèle MoE sur une carte graphique grand public, le goulot d'étranglement n'est pas le calcul, mais la mémoire. Les poids des experts ne tiennent pas dans la VRAM, une partie part en RAM et sur SSD, et chaque accès à un expert « froid » coûte de précieuses millisecondes. L'auteur du moteur Strata, qui fait tourner Qwen3.8-Flash-Next sur une GTX 1070 de 8 Go, a rassemblé cinq astuces pour y remédier. Quatre sont déjà intégrées au moteur ; la cinquième, il l'a écrite lui-même et il en présente les mesures.

Quatre astuces déjà présentes dans le moteur

Première astuce : le décodage spéculatif (--spec N --mtp <chemin>). Une petite couche de brouillon prédit plusieurs tokens à l'avance, et le grand modèle les vérifie en une seule passe. Si le brouillon a deviné juste, vous obtenez plusieurs tokens au prix d'un seul. Le gain est généralement de 1,3 à 1,6x. Le brouillon devine bien le code et les motifs répétitifs, moins bien la prose libre. Le coût : un peu de VRAM pour la couche de brouillon et les tampons.

Deuxième astuce : --kv-resident N. Seule une fenêtre d'attention glissante de N tokens reste en VRAM, tandis que tout le cache KV passe en RAM épinglée (pinned). L'attention elle-même n'en est pas accélérée. Le gain est ailleurs : la mémoire libérée revient au cache d'experts. Pour un MoE, un gigaoctet de plus pour les experts résidents est généralement plus utile qu'une économie sur le KV. C'est facile à vérifier : comparez le taux de succès (hit rate) de l'expert cache dans le journal avant et après.

Troisième astuce : le batching (--batch, --parallel). Il s'agit du continuous batching : plusieurs conversations sont décodées dans des fenêtres communes, et les poids partagés ne sont lus qu'une fois pour tout le monde. Sur une seule carte, le débit par utilisateur baisse même légèrement. En revanche, personne n'attend en file pendant qu'on sert son voisin. Si vous avez plusieurs GPU en layer-split ou des agents parallèles, consultez docs/BATCHING.md.

Quatrième astuce : la résidence adaptative des experts (--adapt-every, --adapt-swaps). Le cache déplace lui-même les poids entre VRAM, RAM et SSD selon la fréquence d'accès, en pleine génération. D'après les mesures de l'auteur, l'écart entre un cache statique et un cache « vivant » va de 1,5x à 2x, selon l'homogénéité du flux de prompts.

Cinquième astuce : le préfixe commun automatique

Strata dispose d'un mécanisme strata_prefix : le client indique explicitement où s'arrête la partie commune du prompt, et le moteur enregistre un point de contrôle à cette frontière. Les requêtes suivantes ayant le même début ne le relisent pas. Le problème, c'est que presque aucun client, ni chatbot ni framework d'agents, ne le fait.

L'auteur a ajouté une couche côté serveur (STRATA_AUTO_PREFIX=1, désactivée par défaut). Elle conserve un radix-trie sur les identifiants de tokens des prompts récents et gère un budget sur le nombre de « pins » simultanés. Chaque pin prend de la VRAM au cache d'experts : il n'y a pas de pin gratuit. Si une requête arrive sans préfixe explicite, le serveur trouve lui-même la correspondance et place la frontière. Le moteur ne voit aucune différence.

Mesure : Strata 0.2.12, une GTX 1070 8 Go, Qwen3.8-Flash-Next UD-IQ4_XS, deux clients avec un même long document.

  • Médiane des tokens relus : 886 → 468.
  • Médiane des tokens issus du cache : 0 → 413.
  • Médiane du délai avant le premier token : 13,3 s → 6,1 s.

Il s'agit de deux exécutions d'un même benchmark sur une même machine, avec une seule variable d'environnement modifiée.

Limites et marche à suivre

D'abord, les réserves. Tous les chiffres proviennent d'une seule configuration et d'un seul scénario à deux clients, et le gain de l'auto-préfixe dépend de la part de début commun dans vos requêtes. Le patch se trouve dans une branche du fork et n'a pas été accepté en amont. L'auteur a ouvert une issue plutôt qu'une PR, car CONTRIBUTING.md exige de valider d'abord le périmètre. Les pins se disputent la VRAM avec le cache d'experts, il faudra donc ajuster le budget.

L'ordre pratique est le suivant. Si vous avez un MoE sur une carte modeste, commencez par --kv-resident et --spec/--mtp : c'est le gain le plus rapide, sans écrire une ligne de code. Vérifiez ensuite que l'adaptation des experts est activée. Si vous faites du RAG ou utilisez des agents avec un long prompt système commun, l'auto-préfixe mérite d'être testé sur votre propre trafic. La leçon principale dépasse un seul moteur : avec une VRAM limitée, presque toute optimisation revient à se demander à quoi consacrer chaque gigaoctet. Et cela se vérifie par des mesures, pas par l'intuition.

Dossier

Questions clés sur cet article

Que sait-on sur Quatre astuces déjà présentes dans le moteur ?

Première astuce : le décodage spéculatif (--spec N --mtp <chemin>). Une petite couche de brouillon prédit plusieurs tokens à l'avance, et le grand modèle les vérifie en une seule passe. Si le brouillon a deviné juste, vous obtenez plusieurs tokens au prix d'un seul. Le gain est généralement de 1,3 à 1,6x. Le brouillon devine bien le code et les motifs répétitifs, moins bien la prose libre. Le coût : un peu de VRAM pour la couche de brouillon et les tampons. Deuxième astuce : --kv-resident N.

Que sait-on sur Cinquième astuce : le préfixe commun automatique ?

Strata dispose d'un mécanisme strata_prefix : le client indique explicitement où s'arrête la partie commune du prompt, et le moteur enregistre un point de contrôle à cette frontière. Les requêtes suivantes ayant le même début ne le relisent pas. Le problème, c'est que presque aucun client, ni chatbot ni framework d'agents, ne le fait. L'auteur a ajouté une couche côté serveur (STRATA_AUTO_PREFIX=1, désactivée par défaut).

Que sait-on sur Limites et marche à suivre ?

D'abord, les réserves. Tous les chiffres proviennent d'une seule configuration et d'un seul scénario à deux clients, et le gain de l'auto-préfixe dépend de la part de début commun dans vos requêtes. Le patch se trouve dans une branche du fork et n'a pas été accepté en amont. L'auteur a ouvert une issue plutôt qu'une PR, car CONTRIBUTING.md exige de valider d'abord le périmètre. Les pins se disputent la VRAM avec le cache d'experts, il faudra donc ajuster le budget. L'ordre pratique est le suivant.

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
Qu'en pensez-vous ?
Chargement des commentaires…