MemGPT : l’esquisse de LLM inspirés des systèmes d’exploitation

L’expérience MemGPT propose d’élargir la fenêtre de contexte des LLM en les dotant d’une gestion mémoire et d’un contrôle de flux inspiré des OS.

Une gestion mémoire et un contrôle de flux inspirés des systèmes d’exploitation peuvent-ils pallier les limites des fenêtres de contexte des LLM ? L’expérience MemGPT (Memory-GPT) s’est inscrite dans cette réflexion.

Les « limites » en question, c’est d’abord la taille de ces fenêtres. Mais c’est aussi celles qu’on rencontre quand on veut les élargir. D’une part, en matière de ressources : le mécanisme d’attention des transformeurs induit une augmentation quadratique du temps de calcul et du coût mémoire. D’autre part, en termes de performances : les modèles ont du mal à exploiter les contextes étendus, ayant tendance à mieux utiliser l’information se trouvant au début et à la fin de la fenêtre.

En reprenant le principe de la mémoire virtuelle, MemGPT étend de façon indirecte cette fenêtre, assimilable à de la RAM. Par appels de fonctions, le LLM peut gérer les entrées/sorties à partir de l’équivalent d’un stockage disque. Des instructions d’usage lui sont données au niveau du message système.

architecture MemGPT

Le contexte principal se divise entre les instructions système, l’historique de conversation et une mémoire de travail fonctionnant tel un bloc-notes.

Le contexte dit externe se divise, pour la présente expérimentation, en deux environnements. D’une part, des « souvenirs » (recall memory, historique des événements traités) permettant au LLM de retrouver des interactions en fonction d’une requête ou d’un horodatage spécifique. De l’autre, une « archive », magasin de données contenant des faits, des expériences, des préférences, etc. relatifs à l’agent ou à l’utilisateur.

MemGPT peut exécuter plusieurs fonctions à la suite avant de rendre le contrôle à l’utilisateur. L’inférence se déclenche en réaction à des événements qui vont d’un login à une alerte de capacité (le système peut alerter le LLM afin qu’il ajuste son comportement pour ne pas dépasser les limites de contexte).

MemGPT, mieux disposé à « ouvrir » la discussion

La mise à l’épreuve de MemGPT s’est faite sur deux usages : la conversation et l’analyse de documents. Pour le premier, les chercheurs se sont appuyés sur le dataset MSC (Multi-Session Chat), modifié pour y introduire deux tâches de dialogue. Le seconde tâche a impliqué des questions-réponses à partir du dataset NaturalQuestions-Open, ainsi qu’un exercice de récupération de paires clé-valeur.

Sur la partie conversation, on a évalué deux aspects. En l’occurrence, la capacité de MemGPT à utiliser cette mémoire étendue pour, d’un côté, améliorer la cohérence de ses réponses, et de l’autre, « ouvrir » la discussion.

Le jeu de données MSC se structure en discussions à sessions multiples (cinq chacune, chaque session contenant une douzaine de messages).
Le test comparatif destiné à évaluer la cohérence a consisté à poser aux LLM des questions se référant explicitement à des conversations précédentes. L’évaluation de performance se fait sur deux plans : un « LLM juge » et les scores ROUGE-L. Ces derniers offrent une certaine robustesse face aux variations sémantiques. Ce n’est pas de trop avec les LLM testés, qui ont tendance à être verbeux.

La section inférieure du tableau suivant présente les performances de modèles GPT-3.5 et GPT-4 en ayant accès soit au résumé des cinq sessions (summary1:5), soit au résumé des quatre plus anciennes et à l’intégralité de la plus récente (summary1:4 + dialogue5). MemeGPT, avec ses « souvenirs », peut accéder à l’ensemble des sessions dans leur intégralité.
La section supérieure ajoute un oracle, en l’objet du gold persona (résumé des informations relatives à chaque participant). Lequel a des chances de contenir la réponse à la question.

Un « bloc-notes » qui fait la différence

Hors oracle, GPT-4 dépasse nettement GPT-3.5. MemGPT fait encore mieux, peu importe la méthode de scoring.

benchmark MemGPT

Pour évaluer les possibilités de MemGPT lorsqu’il s’agit d’élargir la discussion, on évalue sa capacité à « coller » aux personas étiquetés dans le dataset MSC. Ce dans trois configurations :

– Uniquement avec les souvenirs
– Seulement avec le contexte de travail
– Avec les deux

L’absence du contexte de travail influe bien plus nettement sur les performances que l’absence des souvenirs. Cela s’explique par le fait que MemGPT ne recherche généralement pas dans l’historique de conversation avant de générer son ouverture.

ouverture

MemGPT et l’imbrication des tâches

Pour ce qui est de l’analyse de documents, le premier test a consisté à :

– Sélectionner des questions dans le dataset NaturalQuestions-Open
– Confier à un modèle spécifique la recherche de documents pertinents en rapport avec ces questions (recherche vectorielle fondée sur Faiss ; embedding préalable avec le modèle Ada d’OpenAI)
– Fournir le tout au LLM, chargé de répondre aux questions

Sur cet exercice, la capacité de MemGPT à chaîner les fonctions fait la différence. Le nombre de documents accessibles n’est effectivement plus limité par la fenêtre de contexte. Les autres LLM dépendent quant à eux de la capacité du modèle de recherche de documents à trouver l’information-clé. Et c’est loin d’être toujours le cas.
Le taux d’échec de MemGPT reste toutefois élevé. Raison avancée : après avoir parcouru trop de résultats non pertinents, il a tendance à demander à l’utilisateur de préciser sa demande. Cela compte comme un échec, l’expérimentation étant automatisée.
MemGPT a une autre limite : à fenêtre de contexte égale, il lui en reste, au final, moins que les autres modèles, les instructions système en consommat une partie.

Le deuxième exercice d’analyse documentaire a consisté à :

– Générer un dataset de clés et de valeurs associées en paires et ayant chacune un identifiant unique
– Donner une clé au modèle et lui demander de retrouver la valeur associé

La différence se fait lorsque les valeurs peuvent aussi être des clés. Cette forme d’imbrication implique une recherche à plusieurs tours. Dès le premier niveau d’imbrication, GPT-3.5 tombe à 0 % de précision. GPT-4 arrive au même score à partir du quatrième niveau d’imbrication.