cursus
Mise en cache de l'invite : Un guide avec code de mise en œuvre
Mise en cache des messages stocke les réponses aux messages les plus fréquents. Cela permet aux modèles linguistiques d'éviter les traitements redondants et d'extraire des réponses pré-générées. Elle permet non seulement d'économiser des coûts et de réduire la latence, mais aussi de rendre les interactions basées sur l'IA plus rapides et plus efficaces.
Dans ce blog, nous allons explorer ce qu'est la mise en cache rapide, comment elle fonctionne, ses avantages et ses défis. Nous explorerons également les applications du monde réel et proposerons les meilleures pratiques pour des stratégies de mise en cache efficaces.
Qu'est-ce que la mise en cache des messages ?
Dans cette section, nous verrons le mécanisme de fonctionnement de la mise en cache rapide, ainsi que certains avantages et considérations clés qui rendent cette technique si utile.
Développer des applications d'IA
Le mécanisme de base de la mise en cache rapide
Le principe de la mise en cache des invites consiste à stocker les invites et les réponses correspondantes dans un cache. Lorsque la même demande ou une demande similaire est à nouveau soumise, le système récupère la réponse mise en cache plutôt que d'en générer une nouvelle. Cela permet d'éviter les calculs répétitifs, d'accélérer les temps de réponse et de réduire les coûts.
Avantages de la mise en cache rapide
La mise en cache rapide présente plusieurs avantages :
- Réduction des coûts: Les LLM facturent généralement sur la base de l'utilisation des jetons, ce qui signifie qu'à chaque fois qu'une invite est traitée, les jetons de l'entrée (l'invite elle-même) et de la sortie (la réponse) s'ajoutent au total de l'utilisation. En réutilisant les réponses mises en cache, les développeurs peuvent éviter de payer pour la génération redondante de jetons, réduisant ainsi les coûts de l'API.
- Réduction du temps de latence: La mise en cache dans les modèles d'IA accélère les temps de réponse, améliore les performances du système et libère des ressources.
- Amélioration de l'expérience utilisateur: Dans les applications sensibles au facteur temps, telles que les robots de service à la clientèle en temps réel ou les plateformes d'apprentissage interactives, chaque milliseconde de retard peut avoir un impact sur l'expérience de l'utilisateur. La mise en cache rend le système plus efficace avec des réponses mises en cache, car il peut gérer un trafic plus important sans sacrifier les performances, ce qui contribue à un service plus évolutif et plus fiable.
Mises en garde avant de mettre en œuvre la mise en cache des invites
Avant de nous plonger plus avant dans la mise en œuvre de la mise en cache rapide, nous devons garder à l'esprit quelques considérations.
Durée de vie du cache (TTL)
Pour garantir la fraîcheur des données, chaque réponse mise en cache doit avoir une durée de vie (TTL) dans la mémoire. Le TTL détermine la durée pendant laquelle une réponse mise en cache sera considérée comme valide. Une fois que le TTL a expiré, l'entrée du cache est soit supprimée, soit mise à jour, et l'invite correspondante est recalculée lors de la prochaine demande.
Ce mécanisme garantit que le cache ne stocke pas d'informations obsolètes. Dans le cas d'un contenu statique ou moins fréquemment mis à jour, tel que des documents juridiques ou des manuels de produits, un TTL plus long peut contribuer à réduire les recalculs sans risquer de rendre les données obsolètes. Il est donc essentiel de régler correctement les valeurs TTL pour maintenir un équilibre entre la fraîcheur des données et l'efficacité des calculs.
Prompte similitude
Il arrive que deux messages soient similaires mais pas identiques. Pour que la mise en cache soit efficace, il est essentiel de déterminer à quel point une nouvelle invite est proche d'une invite déjà mise en cache. La mise en œuvre de la similarité des invites nécessite des techniques telles que la correspondance floue ou la recherche sémantique, où le système utilise des vecteurs intégrés pour représenter les invites et comparer leur similarité.
En mettant en cache les réponses à des questions similaires, les systèmes peuvent réduire le nombre de calculs tout en conservant une grande précision de réponse. Cependant, un seuil de similarité trop lâche peut entraîner des disparités, tandis qu'un seuil trop strict peut faire rater des opportunités de mise en cache.
Stratégies de mise à jour du cache
Des stratégies telles que la méthode LRU (Least Recently Used) permettent de gérer la taille de la mémoire cache. La méthode LRU supprime les données les moins consultées lorsque le cache atteint sa capacité. Cette stratégie fonctionne bien dans les scénarios où certaines invites sont plus populaires et doivent rester en cache, tandis que les requêtes moins courantes peuvent être supprimées pour faire de la place aux requêtes plus récentes.
Mise en œuvre de la mise en cache des invites
La mise en place d'une mise en cache rapide se fait en deux étapes.
Étape 1 : Identifier les messages répétés
La première étape de la mise en cache des invites consiste à identifier les invites répétitives fréquentes dans le système. Qu'il s'agisse d'un chatbot, d'un assistant de codage ou d'un processeur de documents, nous devons surveiller les invites qui sont répétées. Une fois identifiés, ils peuvent être mis en cache pour éviter les calculs redondants.
Étape 2 : Stockage de l'invite
Une fois l'invite identifiée, sa réponse est stockée dans le cache avec des métadonnées telles que le temps de vie (TTL), les taux de réussite et d'échec du cache, etc. Chaque fois qu'un utilisateur soumet à nouveau la même demande, le système récupère la réponse mise en cache, ce qui permet d'éviter le processus de génération coûteux.
Mise en œuvre du code : La mise en cache ou l'absence de mise en cache
Avec toutes ces connaissances théoriques, plongeons dans un exemple pratique utilisant Ollama pour explorer l'impact de la mise en cache par rapport à l'absence de mise en cache dans un environnement local. Ici, nous utilisons les données d'un livre de deep learning hébergé sur le web et des modèles locaux pour résumer les premières pages du livre. Nous expérimenterons plusieurs LLM, dont Gemma2, Llama2 et Llama3afin de comparer leurs performances.
Conditions préalables
Pour cet exemple pratique, nous utiliserons BeautifulSoupun paquetage Python qui analyse les documents HTML et XML, y compris ceux dont le balisage est malformé. Pour installer BeautifulSoup, exécutez ce qui suit :
!pip install BeautifulSoup
Un autre outil que nous utiliserons est Ollama. Il simplifie l'installation et la gestion de grands modèles linguistiques sur les systèmes locaux.
Pour commencer, téléchargez Ollama et installez Ollama sur votre bureau. Nous pouvons modifier le nom du modèle en fonction de nos besoins. Consultez le modèle bibliothèque de modèles sur le site officiel d'Ollama pour découvrir les différents modèles pris en charge par Ollama. Exécutez le code suivant dans le terminal :
ollama run llama3.1
Nous sommes prêts. Commençons !
Étape 1 : Importer les bibliothèques nécessaires
Nous commençons par les importations suivantes :
time
pour curer le temps d'inférence pour le code de mise en cache et le code sans mise en cacherequests
pour effectuer des requêtes HTTP et extraire des données de pages webBeautifulSoup
pour l'analyse et le nettoyage du contenu HTMLOllama
pour l'utilisation des MLD au niveau local
import time
import requests
from bs4 import BeautifulSoup
import ollama
Étape 2 : Récupérer et nettoyer le contenu
Dans le code ci-dessous, nous définissons une fonction fetch_article_content
qui récupère et nettoie le contenu textuel d'une URL donnée. Il tente de récupérer le contenu de la page web à l'aide de la bibliothèque requests
, avec jusqu'à trois tentatives en cas d'échecs tels que des erreurs de réseau ou des problèmes de serveur.
La fonction utilise BeautifulSoup
pour analyser le contenu HTML et supprime les balises inutiles
Obtenez une certification de haut niveau en matière d'IA
Je suis un expert Google Developers en ML (Gen AI), un expert Kaggle 3x, et un ambassadeur Women Techmakers avec plus de 3 ans d'expérience dans la technologie. J'ai cofondé une startup dans le domaine de la santé en 2020 et je poursuis un master en informatique à Georgia Tech, avec une spécialisation dans l'apprentissage automatique.
Apprenez l'IA avec ces cours !
cours
Travailler avec le lama 3
cours