Des chercheurs développent une méthode de vérification automatique basée sur l'IA pour vérifier le code logiciel

Rendre le code généré par AI plus précis dans n’importe quelle langue

Les programmeurs peuvent désormais utiliser des modèles de grandes langues (LLM) pour générer du code informatique plus rapidement. Cependant, cela ne facilite la vie des programmeurs que si ce code suit les règles du langage de programmation et ne provoque pas un ordinateur.

Certaines méthodes existent pour s’assurer que les LLM sont conformes aux règles de la langue dans laquelle ils génèrent du texte, mais beaucoup de ces méthodes déforment la signification voulue du modèle ou sont trop longues pour être possibles pour des tâches complexes.

Une nouvelle approche développée par des chercheurs du MIT et ailleurs guide automatiquement un LLM pour générer du texte qui adhère aux règles du langage pertinent, comme un langage de programmation particulier, et est également sans erreur. La recherche est publiée sur le arxiv serveur de préimprimée.

Leur méthode permet à un LLM d’allouer des efforts aux sorties qui sont les plus susceptibles d’être valides et précises, tout en rejetant les sorties non prometteuses au début du processus. Cette approche probabiliste augmente l’efficacité de calcul.

En raison de ces gains d’efficacité, l’architecture des chercheurs a permis aux petits LLM de surpasser des modèles beaucoup plus importants en générant des sorties précises et correctement structurées pour plusieurs cas d’utilisation du monde réel, notamment la biologie moléculaire et la robotique.

À long terme, cette nouvelle architecture pourrait aider les non-experts à contrôler le contenu généré par l’IA. Par exemple, il pourrait permettre aux affaires d’écriture de requêtes complexes dans SQL, un langage pour la manipulation de la base de données, en utilisant uniquement des invites en langage naturel.

« Ce travail a des implications au-delà de la recherche. Il pourrait améliorer les assistants de programmation, l’analyse des données alimentés par l’IA et les outils de découverte scientifique en veillant à ce que les résultats générés par l’AI restent à la fois utiles et corrects », explique João Loula, étudiant diplômé du MIT et co-auteur d’un article sur ce cadre.

Appliquer la structure et le sens

Une approche courante pour contrôler le texte structuré généré par LLMS consiste à vérifier une sortie entière, comme un bloc de code informatique, pour s’assurer qu’elle est valide et s’exécutera sans erreur. Sinon, l’utilisateur doit recommencer, accumulant les ressources informatiques.

D’un autre côté, un programmeur a pu s’arrêter pour vérifier la sortie en cours de route. Bien que cela puisse garantir que le code adhère au langage de programmation et est structurellement valide, la correction incrémentielle du code peut le faire dériver de la signification que l’utilisateur voulait, nuisant à sa précision à long terme.

« Il est beaucoup plus facile d’appliquer la structure que le sens. Nous pouvons rapidement vérifier si quelque chose se trouve dans le bon langage de programmation, mais pour vérifier sa signification, vous devez exécuter le code. Notre travail consiste également à traiter ces différents types d’informations », explique Loula.

L’approche des chercheurs implique des connaissances en ingénierie dans le LLM pour la diriger vers les sorties les plus prometteuses. Ces sorties sont plus susceptibles de suivre les contraintes structurelles définies par un utilisateur et d’avoir la signification que l’utilisateur entend.

« Nous n’essayons pas de former un LLM pour le faire. Au lieu de cela, nous gérons des connaissances qu’un expert aurait et le combinant avec les connaissances du LLM, qui offre une approche très différente de la mise à l’échelle que vous ne voyez en Deep Learning », ajoute l’auteur co-ennior Vikash Mansinghka.

Ils accomplissent cela en utilisant une technique appelée Monte Carlo séquentielle, qui permet à une génération parallèle d’un LLM de rivaliser les uns avec les autres. Le modèle alloue dynamiquement les ressources à différents threads de calcul parallèle en fonction de la promesse de leur sortie.

Chaque sortie reçoit un poids qui représente sa probabilité d’être structurellement valide et sémantiquement précis. À chaque étape du calcul, le modèle se concentre sur ceux avec des poids plus élevés et jette le reste.

Dans un sens, c’est comme si le LLM avait un expert en regardant par-dessus son épaule pour s’assurer qu’il fait les bons choix à chaque étape, tout en le gardant concentré sur l’objectif global. L’utilisateur spécifie la structure et le sens souhaités, ainsi que la façon de vérifier la sortie, puis l’architecture des chercheurs guide le LLM pour faire le reste.

« Nous avons élaboré les mathématiques dures afin que, pour toutes sortes de contraintes que vous souhaitez intégrer, vous allez obtenir les poids appropriés. En fin de compte, vous obtenez la bonne réponse », explique Loula.

Boosting de petits modèles

Pour tester leur approche, ils ont appliqué le cadre à LLMS chargé de générer quatre types de sorties: code Python, requêtes de base de données SQL, structures moléculaires et plans pour un robot à suivre.

Par rapport aux approches existantes, la méthode des chercheurs a fonctionné plus précisément tout en nécessitant moins de calcul.

Dans la génération de code Python, par exemple, l’architecture des chercheurs a permis un petit modèle open source pour surpasser un modèle spécialisé et commercial de source fermée qui est plus que double de sa taille.

« Nous sommes très ravis que nous puissions permettre à ces petits modèles de frapper bien au-dessus de leur poids », explique Loula.

À l’avenir, les chercheurs veulent utiliser leur technique pour contrôler des morceaux plus grands de texte généré, plutôt que de travailler une petite pièce à la fois. Ils veulent également combiner leur méthode avec l’apprentissage, de sorte que lorsqu’ils contrôlent les sorties qu’un modèle génère, il apprend à être plus précis.

À long terme, ce projet pourrait avoir des applications plus larges pour les utilisateurs non techniques. Par exemple, il pourrait être combiné avec des systèmes de modélisation automatisée de données et interroger des modèles génératifs de bases de données.

L’approche pourrait également permettre des systèmes d’analyse de données assistés par machine, où l’utilisateur peut converser avec un logiciel qui modélise avec précision la signification des données et les questions posées par l’utilisateur, ajoute Mansinghka.

« L’une des questions fondamentales de la linguistique est de savoir comment la signification des mots, des phrases et des phrases peut être ancrée dans les modèles du monde, tenant compte de l’incertitude et de l’imprécision dans le sens et la référence », explique Timothy J. O’Donnell, professeur agrégé à l’Université McGill et un président du Canada Cifar AI à Mila, qui a dirigé l’équipe internationale.

« Les LLM, prédisant les séquences token probables, ne résolvent pas ce problème. Notre article montre que, dans des domaines symboliques étroits, il est techniquement possible de mapper des mots aux distributions sur les significations fondées. C’est un petit pas vers des questions plus profondes dans les sciences cognitives, la linguistique et l’intelligence artificielle nécessaire pour comprendre comment les machines peuvent communiquer sur le monde comme nous le faisons. »