Avec LLM Compiler, Meta propulse le développement logiciel dans une nouvelle ère

Avec LLM Compiler, Meta propulse le développement logiciel dans une nouvelle ère Meta lance en open source une famille de LLM spécialisés dans la compréhension de langage bas niveau. De nouveaux modèles qui pourraient rapidement être adoptés par les software engineer.

Après s'être attaqué aux LLM spécialisés en code de haut niveau (C++, C++, Java, C#...), Meta se lance dans les modèles d'IA optimisés pour le code bas niveau. Les chercheurs du laboratoire américains ont développé LLM Compiler, une nouvelle famille de grands modèles de langage spécialisés dans l'optimisation de code grâce à une compréhension fine du processus de compilation et des langages de bas niveau. De nouveaux modèles qui ouvrent la voie à une optimisation plus poussée des programmes développés, permettant de gagner en efficacité et en rapidité à l'exécution.

Une famille de modèle basée sur Code Llama

Les chercheurs de Meta AI sont partis d'un constat : les LLM de code actuellement déployés sur le marché sont assez bons pour la génération et la complétion de code. En revanche leur capacité d'optimisation est encore très réduite. Les principaux LLM parviennent à optimiser de manière partielle le code mais ne comprennent pas assez le processus de compilation et les langages de bas de niveau pour produire des résultats véritablement impactant sur le programme final. Pour combler ces lacunes, les chercheurs de Meta ont décidé de former une nouvelle famille de modèles capables de comprendre les langages intermédiaires (IR) utilisés par les compilateurs ainsi que les langages d'assemblage. Le but étant de simuler le comportement d'un compilateur. Pour rappel, le compilateur est un programme informatique qui traduit le code source (c, c++, java) en un langage de bas niveau comme le langage machine ou l'assembleur, que l'ordinateur peut exécuter directement.

Pour développer LLM Compiler sans repartir de zéro, les chercheurs ont sélectionné plusieurs versions de Code Llama, le LLM de Meta spécialisé en code. Ils l'ont entrainé sur un dataset composé de 546 milliards de tokens de code de bas niveau composé de code LLVM-IR (représentation intermédiaire du code source, située entre le code source original et le code machine final) et de code assembleur (x86_84, ARM et CUDA). Cette étape a permis aux modèles d'acquérir une compréhension approfondie du fonctionnement interne des compilateurs et des optimisations qu'ils appliquent.

Mais les chercheurs ne se sont pas arrêtés là : ils ont ensuite procédé à un fine tuning en entraînant les modèles à prédire les effets des optimisations du compilateur sur le code généré. Enfin, des variantes spécialisées de LLM Compiler, appelées LLM Compiler FTD, ont été créées en affinant encore les modèles sur des tâches spécifiques d'optimisation de code et de désassemblage.

Une image contenant texte, Police, ligne, nombreDescription générée automatiquement
Résume de l'entrainement des modèles (LLM Compiler et LLM Compiler FTD). © Capture d'écran Meta AI / JDN

Quatre modèles publiés

Meta présente en réalité quatre modèles différents. Le modèle de base, simplement appelé LLM Compiler, est disponible en deux tailles : 7 milliards et 13 milliards de paramètres. Ces modèles sont capables de comprendre et d'émuler le fonctionnement des compilateurs. Mais les choses deviennent encore plus intéressantes avec les versions spécialisées baptisées LLM Compiler FTD en 7 et 13 milliards de paramètres.

Ces variantes ont bénéficié d'un fine tuning pour exceller dans le flag tuning, c'est-à-dire pour prédire les meilleurs paramètres de compilation afin de minimiser la taille d'un code généré, et dans le désassemblage. Plus concrètement le modèle est capable d'optimiser les paramètres du compilateur pour un code machine plus efficace et il peut également reconstituer un code de haut niveau (en IR) à partir d'un code assembleur. Deux types de modèles qui ouvrent la voie à une flopée de cas d'usage particulièrement pour les software engineer.

Quelles sont les applications concrètes de ces modèles ?

Avec ses LLM Compiler, Meta offre de nouvelles applications plus poussées des LLM dans le process de développement. Le modèle fine-tuné LLM Compiler peut être utilisé comme un assistant intelligent lors de la compilation de code. Il peut suggérer, à partir du code IR intermédiaire, des séquences d'optimisation (un ensemble d'étapes que le compilateur va suivre pour optimiser le code, comme éliminer le code inutilisé, dérouler les boucles) adaptées au code source. Le tout permettant d'obtenir un exécutable plus performant sans effort manuel (sans avoir à itérer plusieurs fois à la main par exemple).

 De son côté LLM Compiler FTD sera parfaitement adapté pour prédire la meilleure configuration possible dans le code intermédiaire LLVM pour directement réduire la taille du code final d'un programme. Une situation idéale pour les cas où le programme doit s'exécuter dans un environnement contraint en mémoire, comme les systèmes embarqués ou les microcontrôleurs. De même, LLM Compiler FTD peut être utilisé pour du reverse engineering. Grâce à sa capacité à désassembler le code machine (convertir le code machine en une représentation de plus haut niveau), il peut faciliter l'analyse et la maintenance de vieux programmes dont le code source original a été perdu. Il sera ainsi possible de "retrouver" un code exploitable pour l'adapter et éventuellement l'adapter pour une nouvelle architecture.

Toutefois, cette facilité de désassemblage pourrait également être exploitée à des fins malveillantes : des hackers pourraient utiliser LLM Compiler FTD pour analyser plus facilement des programmes propriétaires ou des firmwares, à la recherche de vulnérabilités à exploiter. Comparé aux solutions existantes sur le marché, comme IDA Pro ou Ghidra, LLM Compiler FTD pourrait rendre le désassemblage plus accessible et plus automatisé, ne nécessitant pas un haut niveau d'expertise en rétro-ingénierie. Face à cette menace, il est probable que de nouvelles techniques d'obfuscation de code devront être développées.

Un nouveau gap dans le code

Les quatre modèles présentés par Meta sont publiés sous une licence spéciale, éditée par Meta. Elle permet aux entreprises et aux chercheurs de modifier, redistribuer et même commercialiser des produits basés sur LLM Compiler, à condition de ne pas l'utiliser pour améliorer d'autres grands modèles de langage. La licence inclut une clause particulière pour les très grandes entreprises, exigeant une autorisation spéciale d'utilisation pour celles dépassant les 700 millions d'utilisateurs mensuels actifs. Le but sous-jacent ? Eviter que des laboratoires d'IA ne se servent des modèles pour former les leurs.

LLM Compiler et LLM Compiler FTD offrent des capacités inédites qui pourraient bouleverser les pratiques de développement logiciel. Leur aptitude à comprendre et à optimiser le code à bas niveau promet des gains de performance substantiels, tout en réduisant (encore un peu) la charge de travail des développeurs. Il est fort à parié que les modèles de Meta soient rapidement adoptés par les software ingénieur et intégrés directement dans certains IDE dans les prochains mois.