Introduction
À mesure que les entreprises passent de l’étape exploratoire des applications GenAI à des applications à grande échelle de niveau production, elles font face à plusieurs défis. L’un des principaux défis est le coût et le temps de réponse des grands modèles de langage (LLM), en particulier lorsque plusieurs utilisateurs simultanés interagissent avec l’application GenAI.
Comme tout autre mécanisme de mise en cache, le LLM peut aider à répondre à ces préoccupations concernant les applications GenAI. En introduisant et en mettant en place une couche de mise en cache LLM lors des échanges de requêtes/réponses, la performance de l’application peut être considérablement améliorée. Les accès en cache évitent le traitement basé sur les LLM, et les résultats sont récupérés directement des entrées persistantes du cache, ce qui se traduit par un gain de performance.
Ce blogue détaillera le fonctionnement de la mise en cache LLM et explorera la conception d’une application GenAI basée sur la génération augmentée par récupération (RAG), avec et sans mise en cache LLM. Il abordera également les considérations et défis uniques entourant la mise en cache des réponses des modèles de langage, explorera différentes approches de cache et fournira une étude comparative de la performance des applications intégrant la mise en cache LLM.
Cache LLM
En informatique, un cache est un composant matériel ou logiciel qui stocke des données pour permettre une récupération plus rapide lors des futures requêtes. Les données stockées peuvent provenir d’un calcul précédent ou d’une copie d’informations se trouvant ailleurs. Un accès en cache se produit lorsque les données demandées se trouvent déjà dans le cache, tandis qu’un raté de cache signifie que les données ne sont pas disponibles. Les accès en cache sont servis en lisant directement les données dans le cache, ce qui est plus rapide que de recalculer le résultat ou de les extraire d’un entrepôt de données plus lent. Par conséquent, plus on peut satisfaire de requêtes à partir du cache, meilleure est la performance globale du système.
Le concept de cache LLM suit ces mêmes principes fondamentaux de conception. Dans le contexte des applications GenAI alimentées par un LLM, les paires de requête-réponse servent d’entrées principales pour l’implémentation du cache LLM. Le cache LLM est interrogé chaque fois qu’une nouvelle requête est soumise afin de trouver une entrée similaire. Si une réponse correspondante est trouvée dans le cache, elle est retournée directement à l’utilisateur, ce qui correspond à un accès au cache LLM. À l’inverse, si aucune entrée correspondante n’est trouvée dans le cache LLM, l’appel réel au LLM génère la réponse, constituant un raté du cache LLM.
Considérations pour la conception du cache LLM
Entrées de données du cache LLM — Les paires requête/réponse générées par les appels au LLM sont stockées de façon persistante à titre d’entrées du cache. Les requêtes/demandes sont aussi stockées sous forme d’embeddings vectoriels pour permettre la recherche sémantique.
Initialisation du cache LLM — Le mécanisme/processus/horaire pour maintenir la persistance du cache. Idéalement, chaque accès réussi au LLM serait stocké dans le cache pour permettre de desservir une requête similaire ultérieure.
Purge du cache LLM — Les entrées du cache peuvent devenir obsolètes à la suite de modifications dans les sources de connaissances correspondantes. Les entrées du cache doivent être rafraîchies selon un calendrier ou déclenchées dynamiquement dès que les sources de données sous-jacentes sont mises à jour afin d’éviter des réponses non pertinentes ou désuètes.
Implémentation basée sur RAG avec cache LLM
Dans une conception d’application GenAI basée sur RAG, les questions des utilisateurs sont résolues à partir des sources de connaissances vectorisées définies par l’organisation. Voici comment l’intégration du cache LLM à l’application basée sur RAG peut améliorer la performance globale :
- L’utilisateur interagit avec l’application et soumet une requête spécifique
- La requête de l’utilisateur est convertie en embedding vectoriel et des techniques de recherche sémantique sont utilisées pour trouver une correspondance pertinente parmi les entrées en cache
- La recherche sémantique est effectuée sur les entrées du cache pour trouver des réponses correspondantes :
- Si une correspondance étroite est trouvée selon le seuil de similarité défini, il s’agit d’un accès en cache et la réponse correspondante est retenue depuis les entrées du cache appariées
- Si aucune correspondance étroite n’est trouvée selon le seuil de similarité, il s’agit d’un raté de cache et la requête est transmise pour être récupérée à partir de la couche RAG/LLM sous-jacente
- En cas d’accès en cache, la réponse correspondante est renvoyée à l’utilisateur (aucun appel LLM réel n’est requis pour une réponse du cache)
- En cas de raté du cache, lorsqu’aucune donnée similaire n’est disponible dans le cache, la requête de l’utilisateur est transmise à la source de connaissance réelle pour une recherche de similarité
- Les K meilleurs éléments pertinents sont extraits de la banque de connaissances et, avec la requête originale de l’utilisateur, sont envoyés au LLM pour générer une réponse
- La réponse finale générée par le LLM est retournée à l’utilisateur et, en même temps, le cache est mis à jour avec cette réponse afin de favoriser de futurs accès en cache pour des requêtes similaires

Figure : Implémentation RAG avec cache LLM
Comme on l’a vu, les accès au cache LLM évitent les appels réels au LLM. Voici comment les pourcentages d’accès en cache influent sur la performance globale de génération de réponses et les coûts liés au LLM.
Évaluation des performances
Dans cette expérience, nous avons utilisé ChromaDB comme banque de connaissances (BD vectorielle) et le modèle Claude v2 d’Anthropic, accessible via Amazon Bedrock, comme grand modèle de langage (LLM) pour la génération de réponses. Nous avons effectué quatre itérations, chacune composée de dix requêtes, avec des pourcentages variables d’accès au cache LLM. Les observations de performance sont les suivantes :
En faisant varier le pourcentage d’accès au cache LLM, nous avons pu évaluer l’incidence des réponses mise en cache sur la performance générale du système. Les observations à travers les quatre itérations ont révélé des tendances de performance intéressantes. Le temps de réponse moyen pour dix requêtes sans cache est d’environ 2,8 secondes, temps qui est réduit linéairement avec l’augmentation du ratio d’accès au cache.
Facteur de durabilité
Les préoccupations augmentent concernant la consommation significative d’énergie et d’eau associée à l’exploitation des grands modèles de langage (LLM), souvent surnommés « géants assoiffés » en raison de leur forte demande de ressources. Cette problématique constitue un défi majeur à mesure que l’adoption et l’intégration des LLM continuent de croître dans divers secteurs et applications.
L’implémentation d’un cache LLM joue un rôle important dans la réduction de ce risque et favorise une utilisation plus durable des LLM. Grâce aux mécanismes de cache, la récupération et le traitement répétitifs des informations peuvent être minimisés, réduisant ainsi l’empreinte énergétique et hydrique globale des systèmes utilisant des LLM.
Conclusion
L’implémentation d’un cache LLM dans les applications d’IA générative peut considérablement améliorer la performance et réduire les coûts en évitant les appels coûteux au LLM lors de requêtes répétées. Le cache LLM peut rapidement récupérer les réponses pertinentes en stockant les paires requête-réponse et leurs embeddings vectoriels, procurant ainsi des temps de réponse plus rapides et une charge de calcul moindre. Les considérations liées à la conception des entrées du cache, à l’amorçage et à la purge sont essentielles pour garantir que le cache LLM demeure à jour et efficace. L’architecture basée sur RAG mettant en œuvre le cache LLM montre comment le cache peut être intégré de façon transparente, procurant un avantage tangible en matière de performance.
À mesure que les organisations font évoluer leurs applications GenAI, l’utilisation du cache LLM devient une stratégie essentielle pour libérer tout le potentiel des grands modèles de langage tout en relevant les défis du coût et du temps de réponse.
Pour une compréhension détaillée, une démonstration ou une mise en œuvre de cette solution, veuillez nous contacter : awsecosystembu@hcltech.com.
Références :



