Blog

Echos de la recherche #9
Publications

Echos de la recherche #9

Les côtés obscurs des LLM Des pistes pour les optimiser et les expliquer

Des nouvelles du front de la sécurité, de la performance ou de l’interprétabilité des modèles de langage ; et en bonus : l’IA générative en musique, et la guerre entre convolutifs et transformers.

#Sécurité #Interprétabilité #Optimisation #Modèles de langage #Méthodologie

Lien de téléchargement de l’article

  • Si vous n’avez qu’une minute à consacrer à la lecture maintenant, voici le contenu essentiel de cet article en 5 points :
  1. Les modèles de langage (notamment chatGPT) présentent des failles de sécurité graves à prendre en compte absolument.
  2. Un nouveau framework d’optimisation des modèles de langage est sorti en adressant la consommation en mémoire de ces modèles, à prendre en compte absolument.
  3. Un nouveau travail d’interprétabilité des modèles de langage a été publié par Stanford. Il propose de modifier l’architecture fondamentale pour découvrir plus facilement des concepts du modèle, et ensuite les utiliser.
  4. Une nouvelle IA générative en musique donne de nouveaux résultats, avec notamment la création d’un nouveau dataset généré semi automatiquement.
  5. Des chercheurs de Deepmind ont prouvé que, contrairement au consensus actuel, les Vision Transformer ne sont pas “meilleurs” que les réseaux convolutifs pour de larges datasets.
  • Pourquoi lire cet article peut vous être concrètement utile  ?

Concrètement, cet article propose une alerte très forte sur la sécurité des modèles de langage, un nouveau framework d’optimisation de ces modèles permettant une forte économie des coûts matériels, et un nouveau travail prometteur en interprétabilité de ces modèles. Au-delà, un peu de culture générale dans l’ia générative en musique, et une nouvelle étape pour déterminer quelle architecture est la plus intéressante en traitement de l’image.

  • Ce que vous pouvez en dire à un collègue ou à votre boss ?

Le côté obscur des LLM en ce moment c’est la sécurité, car de nombreux cas d’aspiration de contenu remontent, en revanche, les LLM fonctionnent sur leur performances et leur coût d’usage, notamment en cloud, ainsi qu’en interprétabilité pour que ce ne soit plus des boites noires mais que leur comportement deviennent plus explicable.

  • En bref, quels concepts clés vont être abordés ?
  • Sécurité des modèles de langage, notamment ChatGPT / Google Bard
  • Optimisation de l’utilisation des modèles de langage par une optimisation de la mémoire
  • Interprétabilité de modèles de langage par design
  • IA Générative en musique et importance du dataset
  • Que choisir entre modèle convolutif ou Vision Transformer en images.
  • Quels process métier seront probablement modifiés sur la base de ces recherches ?
  • La sécurité d’un service utilisant un modèle de langage
  • Le coût d’utilisation d’un modèle de langage
  • Le choix d’un modèle fondamental pour une tâche en traitement de l’image
  • Les cas d’usage que nous avons développé pour des clients qui touchent au sujet de cet écho de la recherche ?

Nous avons développé un dispositif de classification par LLM qui permet de juger de la toxicité de messages publiés sur une messagerie interne à gros volume de publication.

Nos efforts d’optimisation nous ont permis d’atteindre un facteur 30 de temps de traitement entre la première version et la version actuellement opérationnelle.

Pour la sécurité, nous avons spécialisé un modèle de langage installé sur les serveurs de notre client afin de ne faire circuler aucune donnée sur le web.

C’est parti…

Comme chaque mois, nous proposons de vous présenter les travaux académiques du mois passé qui nous paraissent intéressants et utiles pour un déploiement à court terme.

Au programme :

  • sécurité (faible) des modèles de langage comme chatGPT,
  • optimisation bas niveau de ces modèles avec un nouveau framework très pertinent et un nouveau travail d’interprétabilité de ces modèles de Stanford,
  • Suite à quoi nous laisserons de côté le traitement du langage pour présenter un nouveau modèle génératif en musique,
  • guerre entre réseaux convolutifs et Vision Transformers.

Modèles de langage et cyber-sécurité : une catastrophe annoncée

Les modèles de langage ne cessent de faire les gros titres depuis la sortie de ChatGPT et autres travaux liés (Llams, Falcon, Mistral, etc.). De plus en plus de projets chez nos clients visent à exploiter ces outils pour créer de nouveaux services exploitant le langage naturel. Et si, en effet, ces modèles sont une petite révolution en termes d’applications potentielles, force est de reconnaître qu’ils sont un peu trop récents pour pouvoir être déployés sereinement dans un système d’information, voire même pour être utilisés correctement. Nous avons déjà extensivement parlé des difficultés à industrialiser un modèle Deep Learning, un de nos combats journaliers. Nous proposons ici de nous attarder sur les problèmes de cyber-sécurité de ces modèles.

En effet, la sécurité informatique ne fait pas très bon ménage avec le Deep Learning. Entre inversion de modèle, dataset empoisonné ou adversarial attacks, les vecteurs de faiblesse de ces modèles sont légion, et encore mal maîtrisés par les acteurs de ce domaine. Mais au-delà, les larges modèles de langage permettent d’ouvrir tout un nouveau champ de risques que nous ne soupçonnions même pas… À la racine du problème, encore une fois, se trouve nos limites de compréhension théorique de ces modèles qui sont juste, bêtement, “beaucoup trop gros” pour être maîtrisés correctement.

Hors, un blog est récemment apparu dans notre viseur, qui se spécialise dans ces failles des modèles de langage et leurs conséquences. Si nous vous recommandons l’intégralité de ce blog (https://embracethered.com/blog/posts/), les deux derniers articles sont édifiants.

Typiquement : https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/

Dans cet article, l’auteur montre que l’automatisation permettant à Bard (LLM Google) d’aller chercher de l’information dans les Google Documents de l’utilisateur permet d’une manière assez simple d’effectuer une injection, notamment en partageant un document avec un utilisateur (une action qui ne demande pas de validation de la part de la victime!). Ce document contient une ré-écriture du prompt du LLM qui permettra d’exfiltrer des informations vers un serveur malveillant…  Ci-dessous (issu du blog) le document en question :

On notera avec un peu d’humour que les requêtes du “département juridique” sont très importantes 🙂. Au-delà, on retrouve le fait que le contrôle d’un modèle par prompt est un contrôle très faible et limité, pouvant facilement être détourné. Si vous combinez cette approche avec les techniques de dissimulation d’un prompt (typiquement, le cypher présenté dans une récente revue de la recherche), il deviendra quasi impossible de détecter ce type d’attaque. Ceci dit, rendons hommage à Google pour avoir adressé cette faille (uniquement sous cette forme spécifique…)

Et remarquons que l’auteur a relevé des problèmes similaires sur ChatGPT qui, eux, ne seront de l’aveu même d’OpenAI pas résolus :

https://embracethered.com/blog/posts/2023/advanced-plugin-data-exfiltration-trickery/

L’optimisation des modèles de langage a un nouveau framework !

Deuxième travail (cette fois ci académique) que nous voulons vous présenter aujourd’hui : l’optimisation des modèles de langage, en apprentissage ou en inférence.

C’est maintenant un problème bien connu de tous ceux qui ont voulu manipuler ces modèles : leur extrême lourdeur rend leur utilisation très coûteuse. Naïvement, nous parlons (pour entraîner ces modèles) de plusieurs GPUs A100 particulièrement onéreux, et même leur simple utilisation (inférence) induit des coûts et des lourdeurs assez insupportables.

Dans Efficient Memory Management for Large Language Model Serving with PagedAttention de Kwon et al (Berkeley), les auteurs proposent une approche rafraîchissante sur ce problème, et proposent même un framework d’application :

https://arxiv.org/abs/2309.06180

L’idée fondamentale de vLLM est de sortir un peu de l’approche académique pour replonger dans les principes informatiques et, notamment, l’optimisation de l’utilisation de la mémoire vive des GPUs qui, à date, reste trop simpliste. Entre autres problèmes remontés par les auteurs, le fait qu’un LLM allouera pour toute prédiction un bloc mémoire contigu ayant la taille maximale nécessaire pour générer la plus longue phrase possible. Hors, dans une majorité des cas, cet espace mémoire ne sera absolument pas utilisé. Nous sommes face à un problème classique de fragmentation de la mémoire ou une partie importante de cette mémoire est allouée (donc bloquée), mais non utilisée… Les auteurs s’intéressent particulièrement au KV Cache qui est un élément central d’optimisation des modèles de type Transformer. Le schéma ci-dessous présente les différentes répartitions de la mémoire, notamment entre Orca (une approche précédente, ici (attention) ré-implémentée par les auteurs) et leur approche :

Le schéma ci-dessous, lui, illustre ce problème de fragmentation sur des phrases en cours de prédiction :

Sans rentrer trop dans la technique, les auteurs proposent d’implémenter un gestionnaire de mémoire virtuelle par blocs, avec d’un côté des blocs virtuels (logiques) correspondant au fonctionnement du LLM, et de l’autre des blocs physiques optimisant la mémoire disponible :

Ils développent ensuite cette approche pour montrer comment gérer plusieurs requêtes en parallèle, générer plusieurs prédictions pour la phrase en cours, ou partager des blocs à prompt égal pour un même problème (ce qui est particulièrement pertinent, car l’utilisation d’un LLM est dans la majorité des cas basée sur un prompt constant qui se répète à chaque fois, notamment en implémentant du Chain of Thought) :

Ce type de travail est salutaire en ceci qu’il sort du paradigme “Deep Learning” pour appliquer un certain “bon sens” de développement et d’optimisation informatique.

Un peu plus d’interprétabilité pour les LLMs

L’interprétabilité du Deep Learning est toujours un serpent de mer qui nous fascine, et nous nous devons de suivre les travaux pertinents dans ce domaine si nous voulons pouvoir industrialiser correctement des réseaux de neurones. Notre dernière revue de la recherche abordait ainsi deux nouveaux travaux intéressants centrés sur les modèles de langage. Stanford a récemment publié un autre travail qui mérite que l’on s’y intéresse correctement, malgré (comme à chaque fois :/) de nombreuses limites.

Dans Codebook Features: Sparse and Discrete Interpretability for Neural Networks de Tamkin et al [https://arxiv.org/abs/2310.17230], les auteurs repartent de la volonté d’interpréter les valeurs intermédiaires des “neurones” du réseau (sans wording : les valeurs issues du mécanismes d’activation). Hors, les problèmes fondamentaux n’ont pas changé : il y a déjà trop de valeurs, et nous savons que c’est la combinaison de certaines activations qui devront être prises en compte, aggravant d’autant la difficulté (voir l’impossibilité) de ce travail…

Ici, les auteurs proposent une approche différente en contraignant fortement la structure du réseau de neurones. En effet, l’enjeu est de remplacer les états intermédiaires contenant des valeurs numériques “libres” par une combinaison (par somme) d’un nombre fini de codes statiques. L’enjeu est donc, via une optimisation, de remplacer les couches classiques par des couches de Codebook Feature, contenant ces codes statiques et renvoyant les éléments dont la somme est la plus proche possible de l’activation réelle :

C’est intéressant pour plusieurs raisons :

  • Déjà, nous nous rappelons le travail dans la dernière revue de la recherche où les auteurs apprenaient un sparse encoding des activations avec des résultats intéressants. On peut voir ce nouveau travail comme une évolution forte. Là où avant, on partait de ces activations pour découvrir des combinaisons les plus simples possibles, ici, la simplification est appliquée directement au modèle.
  • Ce travail se rapproche des travaux sur le VQ VAE (Vector Quantized Variational Autoencoder) qui a donné d’excellents résultats depuis 2017, par exemple en modèle génératif (Stable DIffusion) pour apprendre un espace latent exploitable sur des images.

L’enjeu ici est ensuite de découvrir quels concepts sont modélisés par quels codes. Les auteurs travaillent dans un premier temps sur un cas trivial, pour ensuite étudier un modèle de langage relativement simple. Et ils arrivent à identifier des concepts liés à des codes, mais aussi à manipuler ensuite ces codes pour forcer l’apparition du concept en question dans une prédiction en cours (schéma ci-dessous ou le code identifiant les dragons est rajouté à toute la prédiction)

Ce qui est intéressant ici est que le modèle est naturellement beaucoup plus simple à étudier du fait de sa “quantification”, mais surtout que cette application n’empêche pas le modèle d’être un modèle de langage efficace au sens général du terme. Cette approche est donc particulièrement pertinente, même si les modèles étudiés restent quand même très simples au regard des très gros modèles que nous manipulons usuellement…

Un peu de musique dans ce monde de brutes

L’IA générative a définitivement pris son envol dans le monde de l’image (et la vidéo arrive très vite, avec la sortie très récente du Video Diffusion Model), mais l’application à la musique reste plus complexe et beaucoup moins satisfaisante. Aussi, tout nouveau travail ayant des résultats pertinents mérite d’être suivi.

C’est le cas du très récent MusTango [https://arxiv.org/abs/2311.08355] de Melechovsky et al. Nous n’allons pas trop nous étendre sur le modèle en tant que tel, qui reprend les classiques du Stable DIffusion : un VAE pour transférer la musique dans un espace latent plus simple, un modèle de diffusion qui est conditionné par du texte, et le bon vieux Hi-Fi GAN pour améliorer la qualité. Non, le plus intéressant ici est probablement la gestion de la donnée qui a probablement permis d’avoir de bien meilleurs résultats que les travaux précédents.

En effet, une problématique fondamentale ici est d’avoir un large dataset de musiques couplées à des textes descriptifs riches et variés. Si un tel dataset existe “facilement” pour l’image, il est en revanche beaucoup plus complexe, voire impossible à créer dans le monde de la musique. En effet, Internet contient beaucoup moins de musiques annotées que d’images annotées, mais la qualité des descriptions textuelles est aussi beaucoup plus faible en musique qu’en image.

Les auteurs ici ont donc décidé de créer un nouveau dataset accessible librement, dans une approche similaire à ce que nous faisons souvent pour nos clients. Ici, partant de MusicCaps (un dataset original), les auteurs ont généré des textes descriptifs basées sur des détections : grille d’accords, instruments, bpm. Ils ont aussi “augmenté” le dataset en modifiant des musiques (variation de tempo, de pitch, etc.) ChatGPT a enfin été utilisé pour créer des variances de descriptions en langage naturel à partir des valeurs détectées…

La guerre CNN/ViT continue ! (ou méfions-nous de l’académie, chapitre 289)

Depuis 2020, une nouvelle architecture de modèles est apparue pour gérer les images, le maintenant célèbre Vision Transformer, reprenant l’architecture fondamentale qui a fait ses preuves en traitement naturel du langage. Et depuis, l’immense majorité des chercheurs a basculé sur ces nouveaux modèles, en abandonnant les bons vieux modèles convolutifs que nous utilisions depuis 2012.

L’argument pour changer de modèles a longtemps été que le Visio Transformer était beaucoup plus efficace. Et encore, le ViT était certes considéré plus efficace, mais uniquement sur de très gros datasets comme le JFT-210M de Google contenant 210 millions d’images annotées. Déjà, rappelons que ce paradigme est très éloigné de la réalité de nos projets où les datasets de nos clients dépassent rarement le million d’éléments. Rappelons aussi que depuis 2020, plusieurs travaux (notament https://arxiv.org/abs/2201.09792 ou https://arxiv.org/abs/2201.03545) ont critiqué cette compréhension en proposant des architectures convolutives qui faisaient jeu égal avec les Vision Transformer).

Le consensus académique a ainsi longtemps été que les Vision Transformer étaient bien meilleurs pour du scaling, soit gérer de plus gros datasets, mais que en revanche, sur un problème plus classique, les réseaux convolutifs étaient à peu près équivalents. De là est venue la mouvance d’avoir des modèles ViT pré-entraînés sur des datasets massifs pour ensuite les adapter à des cas plus appliqués avec moins de données…

Notons enfin que nous continuons, quand cela est opportun, d’utiliser des architectures convolutives pour nos clients. En effet, ces architectures ont un historique beaucoup plus solide qui rend leur manipulation, leur contrôle et leur analyse (interprétabilité?) beaucoup plus efficaces. Et mieux vaut perdre quelques pourcents de qualité en échange d’un modèle plus léger et mieux cadré, dès lors que l’on sort du paradigme académique (où la recherche d’états de l’art fait foi) pour vouloir développer des outils utiles.

Et bien, cette guerre vient de compter un nouvel affrontement, et pas des moindres, car il provient directement de Deepmind, acteur incontournable et prescripteur du domaine. Dans le court travail ConvNets Match Vision Transformers at Scale, de Smith et al [https://arxiv.org/abs/2310.16764], les auteurs enfoncent cette croyance et montrent que les réseaux convolutifs peuvent être parfaitement concurrents des Vision Transformers sur de larges datasets. Si ces travaux ne sont pas destinés à être directement appliqués (à moins qu’un de nos client débloquent un budget de plusieurs centaines de milliers d’euros en entraînement), c’est un nouveau rappel sur la démarche à avoir en Deep Learning : nous voulons suivre la recherche, mais toujours garder suffisamment de recul pour ne pas nous engouffrer dans des “modes” dont le coût n’est pas justifié par la qualité des outils générés.