{"id":3047,"date":"2026-07-01T15:50:41","date_gmt":"2026-07-01T12:50:41","guid":{"rendered":"https:\/\/shareai.now\/?p=3047"},"modified":"2026-07-01T15:50:42","modified_gmt":"2026-07-01T12:50:42","slug":"routage-du-cache-kv-preremplissage-llm","status":"publish","type":"post","link":"https:\/\/shareai.now\/fr\/blog\/developpeurs\/routage-du-cache-kv-preremplissage-llm\/","title":{"rendered":"Routage du cache KV : R\u00e9duire le travail redondant de pr\u00e9-remplissage des LLM"},"content":{"rendered":"<p>Le routage du cache KV est important lorsque des pr\u00e9fixes de requ\u00eates r\u00e9p\u00e9t\u00e9s apparaissent fr\u00e9quemment dans votre trafic LLM. Si la bonne requ\u00eate arrive sur la bonne r\u00e9plique, le moteur de service peut r\u00e9utiliser l'\u00e9tat d'attention mis en cache au lieu de recalculer les m\u00eames jetons de pr\u00e9-remplissage encore et encore.<\/p>\n\n\n\n<p>Cela peut sembler \u00eatre un d\u00e9tail d'infrastructure, mais cela devient rapidement un probl\u00e8me de produit. Les longues requ\u00eates syst\u00e8me, le contexte RAG, les exemples few-shot et l'historique de chat multi-tours peuvent rendre le travail de pr\u00e9-remplissage co\u00fbteux. Lorsque chaque r\u00e9plique recalcule le m\u00eame pr\u00e9fixe, les \u00e9quipes paient en termes de latence, de temps GPU et de planification de capacit\u00e9.<\/p>\n\n\n\n<p>ShareAI offre aux d\u00e9veloppeurs une API unique pour 150+ mod\u00e8les, une visibilit\u00e9 sur le march\u00e9, le routage et la reprise apr\u00e8s d\u00e9faillance. Le routage du cache KV se situe une couche en dessous, \u00e0 l'int\u00e9rieur de l'infrastructure de service de mod\u00e8les. La le\u00e7on utile pour les lecteurs de ShareAI est simple : les d\u00e9cisions de routage comptent \u00e0 chaque couche de la pile IA, du choix du mod\u00e8le jusqu'\u00e0 la r\u00e9plique GPU qui g\u00e8re une requ\u00eate r\u00e9p\u00e9t\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi le routage du cache KV est important<\/h2>\n\n\n\n<p>Lors de l'inf\u00e9rence LLM, un mod\u00e8le traite d'abord la requ\u00eate d'entr\u00e9e dans la phase de pr\u00e9-remplissage. Il construit un cache cl\u00e9-valeur, g\u00e9n\u00e9ralement appel\u00e9 cache KV, afin que les jetons g\u00e9n\u00e9r\u00e9s ult\u00e9rieurement puissent se r\u00e9f\u00e9rer au contexte d\u00e9j\u00e0 trait\u00e9.<\/p>\n\n\n\n<p>La mise en cache des pr\u00e9fixes permet aux moteurs de service de r\u00e9utiliser ce cache lorsqu'une requ\u00eate ult\u00e9rieure partage le m\u00eame d\u00e9but de requ\u00eate. <a href=\"https:\/\/docs.vllm.ai\/en\/v0.18.1\/features\/automatic_prefix_caching\/?utm_source=shareai.now&#038;utm_medium=content&#038;utm_campaign=kv-cache-routing-llm-prefill\">La documentation sur la mise en cache automatique des pr\u00e9fixes de vLLM<\/a> d\u00e9crit cela comme la r\u00e9utilisation du cache KV pour les pr\u00e9fixes partag\u00e9s afin que la nouvelle requ\u00eate puisse \u00e9viter le calcul pour la partie partag\u00e9e. <a href=\"https:\/\/sgl-project-sglang-93.mintlify.app\/concepts\/prefix-caching?utm_source=shareai.now&#038;utm_medium=content&#038;utm_campaign=kv-cache-routing-llm-prefill\">La mise en cache des pr\u00e9fixes de SGLang<\/a> utilise une id\u00e9e similaire pour partager le cache KV pour des s\u00e9quences de jetons communes.<\/p>\n\n\n\n<p>Cela est particuli\u00e8rement important pour les charges de travail o\u00f9 de nombreuses requ\u00eates commencent de la m\u00eame mani\u00e8re : agents de support avec une longue requ\u00eate syst\u00e8me, applications RAG utilisant des morceaux de documentation r\u00e9p\u00e9t\u00e9s, agents de codage avec des instructions de d\u00e9p\u00f4t ou produits de chat qui conservent l'historique des conversations entre les tours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O\u00f9 le Round-Robin \u00e9choue<\/h2>\n\n\n\n<p>La mise en cache des pr\u00e9fixes est plus simple sur une seule r\u00e9plique. Le m\u00eame processus voit le pr\u00e9fixe r\u00e9p\u00e9t\u00e9 et peut r\u00e9utiliser son cache si la m\u00e9moire est disponible. Le probl\u00e8me appara\u00eet lorsque le service s'\u00e9tend horizontalement.<\/p>\n\n\n\n<p>Avec un r\u00e9partiteur de charge round-robin standard, la premi\u00e8re requ\u00eate peut chauffer le cache sur la r\u00e9plique A, tandis que la deuxi\u00e8me requ\u00eate avec le m\u00eame pr\u00e9fixe arrive sur la r\u00e9plique B. La r\u00e9plique B n'a pas cet \u00e9tat mis en cache, donc elle recalcule le m\u00eame travail de pr\u00e9-remplissage. La troisi\u00e8me requ\u00eate peut aller \u00e0 la r\u00e9plique C et manquer \u00e0 nouveau.<\/p>\n\n\n\n<p>\u00c0 mesure que le nombre de r\u00e9pliques augmente, un \u00e9quilibrage de charge na\u00eff peut r\u00e9partir les requ\u00eates li\u00e9es sur davantage de machines. La flotte de service de mod\u00e8les peut sembler \u00e9quilibr\u00e9e, mais le taux de r\u00e9ussite du cache des pr\u00e9fixes diminue. C'est l'\u00e9cart que le routage du cache KV tente de combler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trois niveaux pratiques de routage<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Affinit\u00e9 de session<\/h3>\n\n\n\n<p>L'affinit\u00e9 de session dirige le trafic provenant du m\u00eame utilisateur, espace de travail, locataire ou conversation vers la m\u00eame r\u00e9plique. C'est l'approche la plus simple pour commencer avec un chat multi-tours, car les invites de suivi partagent souvent le contexte pr\u00e9c\u00e9dent.<\/p>\n\n\n\n<p>Le compromis est que l'identit\u00e9 de l'utilisateur n'est pas toujours la m\u00eame que la similarit\u00e9 des invites. Deux utilisateurs peuvent partager la m\u00eame longue invite syst\u00e8me et \u00eatre tout de m\u00eame dirig\u00e9s vers des r\u00e9pliques diff\u00e9rentes. L'affinit\u00e9 de session peut \u00e9galement \u00eatre perturb\u00e9e lorsque des r\u00e9pliques sont ajout\u00e9es ou supprim\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Routage par hachage de pr\u00e9fixe<\/h3>\n\n\n\n<p>Le routage par hachage de pr\u00e9fixe utilise l'invite elle-m\u00eame comme cl\u00e9 de routage. Le routeur hache le d\u00e9but stable de l'invite et envoie les pr\u00e9fixes correspondants \u00e0 la m\u00eame r\u00e9plique.<\/p>\n\n\n\n<p>Cela fonctionne mieux lorsque des invites syst\u00e8me r\u00e9p\u00e9t\u00e9es, des exemples few-shot ou un contexte r\u00e9cup\u00e9r\u00e9 partag\u00e9 comptent davantage que l'identit\u00e9 de l'utilisateur. La partie difficile est de choisir la limite du pr\u00e9fixe. Si le hachage inclut un horodatage, un ID de requ\u00eate ou un champ sp\u00e9cifique \u00e0 l'utilisateur, la cl\u00e9 de routage se fragmente et la r\u00e9utilisation du cache s'effondre.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Routage conscient des \u00e9v\u00e9nements de cache<\/h3>\n\n\n\n<p>L'approche la plus avanc\u00e9e suit quels blocs de cache sont r\u00e9sidents sur quelle r\u00e9plique, puis dirige chaque requ\u00eate vers la r\u00e9plique avec le meilleur chevauchement de cache tout en tenant compte de la charge. <a href=\"https:\/\/github.com\/llm-d\/llm-d-router?utm_source=shareai.now&#038;utm_medium=content&#038;utm_campaign=kv-cache-routing-llm-prefill\">Le projet de routeur llm-d<\/a> d\u00e9crit un s\u00e9lecteur de point de terminaison qui prend en compte la localit\u00e9 du cache KV, la charge actuelle et la priorit\u00e9 lors du choix de l'endroit o\u00f9 une requ\u00eate doit aller.<\/p>\n\n\n\n<p>C'est plus complexe, mais c'est la bonne direction pour des flottes \u00e0 haut d\u00e9bit o\u00f9 les manques de cache sont mesur\u00e9s, co\u00fbteux et fr\u00e9quents.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quand l'\u00e9viter<\/h2>\n\n\n\n<p>Le routage de cache KV ne vaut pas automatiquement la complexit\u00e9. Il est peu adapt\u00e9 lorsque les invites sont courtes, principalement uniques ou trait\u00e9es par lots avec peu de structure r\u00e9p\u00e9t\u00e9e.<\/p>\n\n\n\n<p>La synth\u00e8se de documents, la g\u00e9n\u00e9ration cr\u00e9ative, l'extraction ponctuelle et de nombreux travaux par lots asynchrones peuvent ne pas avoir suffisamment de chevauchement de pr\u00e9fixe partag\u00e9 pour justifier un routage conscient du cache. Dans ces cas, un \u00e9quilibrage de charge simple peut \u00eatre plus clair.<\/p>\n\n\n\n<p>Le test pratique est la mesure : taux de cache hit, temps jusqu'au premier jeton, d\u00e9bit, profondeur de la file d'attente, pression sur la m\u00e9moire GPU et co\u00fbt par t\u00e2che termin\u00e9e. Si le routage conscient du cache ne modifie pas ces chiffres, corrigez d'abord la structure de l'invite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment cela s'int\u00e8gre avec ShareAI<\/h2>\n\n\n\n<p>ShareAI est un march\u00e9 et une API d'IA, pas le r\u00e9partiteur de charge de service de mod\u00e8les \u00e0 l'int\u00e9rieur de votre cluster GPU. Les d\u00e9veloppeurs utilisent ShareAI pour acc\u00e9der \u00e0 de nombreux mod\u00e8les via une API, comparer les signaux du march\u00e9, router les requ\u00eates, g\u00e9rer l'utilisation et basculer en cas de d\u00e9gradation d'une route.<\/p>\n\n\n\n<p>Cela rend toujours le routage du cache KV pertinent. Si vous g\u00e9rez votre propre pile d'inf\u00e9rence, cela vous aide \u00e0 poser de meilleures questions sur l'infrastructure. Si vous consommez des mod\u00e8les h\u00e9berg\u00e9s, cela vous aide \u00e0 \u00e9valuer pourquoi deux routes avec des noms de mod\u00e8les similaires peuvent se comporter diff\u00e9remment sous des charges de travail r\u00e9elles.<\/p>\n\n\n\n<p>Pour les constructeurs, cela se connecte \u00e9galement \u00e0 la tarification. Une application avec des invites longues, un contexte RAG r\u00e9p\u00e9t\u00e9 ou des boucles d'agents peut cr\u00e9er une utilisation de l'IA tr\u00e8s in\u00e9gale. ShareAI Builder permet aux propri\u00e9taires d'applications de router le trafic d'inf\u00e9rence IA via ShareAI, de d\u00e9finir une marge ou une surtaxe, de faire payer les clients \u00e0 ShareAI pour l'utilisation rout\u00e9e et de recevoir des paiements mensuels bas\u00e9s sur l'utilisation g\u00e9n\u00e9r\u00e9e. L'application elle-m\u00eame reste construite en dehors de ShareAI.<\/p>\n\n\n\n<p>Pour la s\u00e9lection de mod\u00e8les et l'\u00e9valuation des routes, commencez par le <a href=\"https:\/\/shareai.now\/models\/?utm_source=blog&#038;utm_medium=content&#038;utm_campaign=kv-cache-routing-llm-prefill\">march\u00e9 des mod\u00e8les ShareAI<\/a>. Pour les bases de l'impl\u00e9mentation, utilisez le <a href=\"https:\/\/shareai.now\/docs\/api\/using-the-api\/getting-started-with-shareai-api\/?utm_source=blog&#038;utm_medium=content&#038;utm_campaign=kv-cache-routing-llm-prefill\">R\u00e9f\u00e9rence API ShareAI<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Liste de contr\u00f4le pour le routage du cache KV<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Placez d'abord le contenu stable de l'invite : invite syst\u00e8me, r\u00e8gles d'outils, exemples et contexte r\u00e9p\u00e9t\u00e9.<\/li><li>D\u00e9placez les champs dynamiques plus tard : horodatages, identifiants de requ\u00eates, faits sp\u00e9cifiques \u00e0 l'utilisateur et instructions ponctuelles.<\/li><li>Mesurez le taux de cache hit avant et apr\u00e8s les modifications de routage.<\/li><li>Surveillez ensemble le temps jusqu'au premier jeton, le d\u00e9bit, la profondeur de la file d'attente et la pression sur la VRAM.<\/li><li>Commencez par le routage par hachage de pr\u00e9fixe avant de construire un routage conscient des \u00e9v\u00e9nements de cache.<\/li><li>Divisez les r\u00e8gles de routage par charge de travail au lieu d'imposer une politique globale unique.<\/li><li>Gardez les co\u00fbts et la latence visibles au niveau de l'application, et pas seulement \u00e0 l'int\u00e9rieur du cluster d'inf\u00e9rence.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Qu'est-ce que le routage du cache KV ?<\/h3>\n\n\n<p>Le routage du cache KV est une strat\u00e9gie de routage qui envoie les requ\u00eates avec des pr\u00e9fixes de prompt r\u00e9p\u00e9t\u00e9s vers des r\u00e9pliques susceptibles de contenir d\u00e9j\u00e0 le cache KV correspondant. L'objectif est de r\u00e9duire les calculs redondants de pr\u00e9-remplissage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">En quoi le routage du cache KV est-il diff\u00e9rent de la mise en cache des pr\u00e9fixes ?<\/h3>\n\n\n<p>La mise en cache des pr\u00e9fixes est la capacit\u00e9 du moteur de service de mod\u00e8le \u00e0 r\u00e9utiliser l'\u00e9tat mis en cache pour des pr\u00e9fixes de prompt partag\u00e9s. Le routage du cache KV est la strat\u00e9gie de placement du trafic qui aide les requ\u00eates correspondantes \u00e0 arriver l\u00e0 o\u00f9 cet \u00e9tat mis en cache existe d\u00e9j\u00e0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pourquoi le routage en round-robin nuit-il \u00e0 la mise en cache des pr\u00e9fixes ?<\/h3>\n\n\n<p>Le routage en round-robin r\u00e9partit les requ\u00eates entre les r\u00e9pliques sans savoir quelle r\u00e9plique poss\u00e8de quel pr\u00e9fixe mis en cache. Un prompt r\u00e9p\u00e9t\u00e9 peut manquer le cache simplement parce qu'il arrive sur une r\u00e9plique diff\u00e9rente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quels types de charges de travail b\u00e9n\u00e9ficient le plus du routage du cache KV ?<\/h3>\n\n\n<p>Les discussions multi-tours, RAG, agents de codage, agents de support, prompts few-shot et applications avec de longs prompts syst\u00e8me partag\u00e9s sont les meilleurs candidats car ils r\u00e9utilisent des pr\u00e9fixes de prompt substantiels.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quand une \u00e9quipe devrait-elle \u00e9viter le routage du cache KV ?<\/h3>\n\n\n<p>\u00c9vitez-le lorsque les prompts sont courts, principalement uniques ou orient\u00e9s par lots avec peu de structure r\u00e9p\u00e9t\u00e9e. Dans ces cas, la complexit\u00e9 du routage peut apporter peu de valeur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">vLLM et SGLang prennent-ils en charge la mise en cache des pr\u00e9fixes ?<\/h3>\n\n\n<p>Oui. vLLM documente la mise en cache automatique des pr\u00e9fixes, et SGLang documente la mise en cache des pr\u00e9fixes pour un cache KV partag\u00e9 \u00e0 travers des s\u00e9quences de tokens communes. Le moteur de service a encore besoin d'aide pour le routage lorsque plusieurs r\u00e9pliques sont impliqu\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le routage du cache KV est-il identique \u00e0 la mise en cache s\u00e9mantique ?<\/h3>\n\n\n<p>Non. Le routage du cache KV fonctionne avec une r\u00e9utilisation exacte ou quasi-structurale des pr\u00e9fixes dans le service d'inf\u00e9rence. La mise en cache s\u00e9mantique stocke et r\u00e9utilise des r\u00e9ponses ou des r\u00e9sultats interm\u00e9diaires bas\u00e9s sur le sens, g\u00e9n\u00e9ralement avec des embeddings ou des seuils de similarit\u00e9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ShareAI remplace-t-il un r\u00e9partiteur de charge conscient du cache KV ?<\/h3>\n\n\n<p>Non. ShareAI est le march\u00e9 de l'IA et la couche API pour l'acc\u00e8s aux mod\u00e8les, le routage, le basculement, l'utilisation et la facturation. Le routage conscient du KV-cache est une infrastructure de service de mod\u00e8les de niveau inf\u00e9rieur pour les \u00e9quipes exploitant des r\u00e9pliques d'inf\u00e9rence.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comment les Builders doivent-ils envisager le routage du cache KV ?<\/h3>\n\n\n<p>Les Builders doivent consid\u00e9rer le comportement du cache comme un facteur de co\u00fbt dans les applications fortement ax\u00e9es sur l'IA. Si leur application a une utilisation irr\u00e9guli\u00e8re, ShareAI peut aider \u00e0 router et mon\u00e9tiser ce trafic IA tout en laissant l'application construite et d\u00e9tenue en dehors de ShareAI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Que doivent mesurer les \u00e9quipes avant de modifier le routage ?<\/h3>\n\n\n<p>Mesurez le taux de r\u00e9ussite du cache, le temps jusqu'au premier jeton, le d\u00e9bit, la profondeur de la file d'attente, la pression sur la VRAM, le co\u00fbt par t\u00e2che et la qualit\u00e9 de sortie. Les modifications de routage doivent am\u00e9liorer la charge de travail, pas seulement le tableau de bord.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le routage du cache KV peut-il r\u00e9duire les co\u00fbts des API IA ?<\/h3>\n\n\n<p>Il peut r\u00e9duire les co\u00fbts d'infrastructure pour les \u00e9quipes qui servent elles-m\u00eames des mod\u00e8les, car un travail de pr\u00e9-remplissage moins redondant peut am\u00e9liorer l'efficacit\u00e9 du GPU. Pour les API h\u00e9berg\u00e9es, l'effet d\u00e9pend de la mani\u00e8re dont le fournisseur expose ces \u00e9conomies en termes de prix ou de performance.<\/p>","protected":false},"excerpt":{"rendered":"<p>Le routage du cache KV envoie des pr\u00e9fixes de requ\u00eates r\u00e9p\u00e9t\u00e9s aux r\u00e9plicas pouvant r\u00e9utiliser l'\u00e9tat d'attention mis en cache, aidant les \u00e9quipes \u00e0 r\u00e9duire le travail redondant de pr\u00e9-remplissage des LLM.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"cta-title":"Explore AI Models","cta-description":"Compare price, latency, and availability across providers.","cta-button-text":"Browse Models","cta-button-link":"https:\/\/shareai.now\/models\/?utm_source=blog&utm_medium=content&utm_campaign=kv-cache-routing-llm-prefill","rank_math_title":"KV Cache Routing: Cut Redundant LLM Prefill Work","rank_math_description":"KV cache routing sends repeated prompt prefixes to the right replica so LLM teams can reduce redundant prefill work and latency.","rank_math_focus_keyword":"KV cache routing, prefix-aware routing, prefix caching, LLM inference optimization","footnotes":""},"categories":[4,6],"tags":[176,173,175,174,178,177],"class_list":["post-3047","post","type-post","status-publish","format-standard","hentry","category-developers","category-insights","tag-ai-routing","tag-kv-cache-routing","tag-llm-inference","tag-prefix-caching","tag-sglang","tag-vllm"],"_links":{"self":[{"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/posts\/3047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/comments?post=3047"}],"version-history":[{"count":1,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/posts\/3047\/revisions"}],"predecessor-version":[{"id":3089,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/posts\/3047\/revisions\/3089"}],"wp:attachment":[{"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/media?parent=3047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/categories?post=3047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shareai.now\/fr\/api\/wp\/v2\/tags?post=3047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}