Simple Science

La science de pointe expliquée simplement

# Informatique # Génie logiciel # Intelligence artificielle

Le défi d'utiliser des LLM pour l'infrastructure en tant que code

Explorer les limites des LLMs dans la génération d'Infrastructure as Code fiable.

Mayur Amarnath Palavalli, Mark Santolucito

― 8 min lire


Les LLM et les obstacles Les LLM et les obstacles d'infrastructure générer de l'IaC efficacement. Examiner les limites des LLM pour
Table des matières

Dans le monde du développement logiciel, on parle pas mal des outils qui aident les développeurs à bosser mieux et plus vite. Un de ces outils s'appelle les Modèles de Langage Étendus (LLMs), qui peuvent aider à écrire du code pour diverses tâches. Cependant, même si les LLMs peuvent générer du code, ils gèrent pas encore les tâches autour, surtout quand il s’agit de mettre en place l’infrastructure qui soutient ce code. C’est un peu comme avoir un super chef mais pas de cuisine pour cuisiner—pas facile de servir ces plats sans un endroit pour les préparer !

Alors, quel est le souci ? Cet article explore comment les LLMs peuvent créer des infrastructures grâce à ce qu’on appelle l’Infrastructure en tant que code (IaC). Faisons un petit retour en arrière et voyons ce que ça veut dire. L'IaC, c'est une façon de gérer les ressources cloud par le code. Si t’as déjà voulu que mettre en place des serveurs et du stockage soit aussi simple que de taper une recette, c’est exactement ce que fait l'IaC. Ça permet aux développeurs de coder pour configurer automatiquement leurs ressources cloud, s'assurant que tout soit cohérent et facile à gérer.

Le Problème avec la Génération de Code

Maintenant, même si l'IaC a fait des progrès de ouf dans la gestion des infrastructures cloud, écrire le bon code reste un défi. Imagine essayer de monter des meubles IKEA sans le manuel d'instructions—ça va être un gros bazar de bois et de vis. De la même manière, quand les développeurs écrivent du code IaC, ils rencontrent souvent des obstacles à cause des règles complexes qui régissent les ressources cloud.

Ce qui est intéressant, c'est que même si les LLMs ont facilité la vie des codeurs, les aidant avec des tâches complexes et réduisant le temps nécessaire pour écrire du code, ils galèrent encore à générer du bon code IaC. Si les LLMs peuvent aider avec du code normal, pourquoi pas avec l'IaC ? C’est ce qu’on va explorer ici.

Le Système de Boucle de Retour

On a eu une idée : et si on créait une boucle de retour qui permettrait à un LLM d’apprendre de ses erreurs en générant du code IaC ? Ça veut dire qu'à chaque fois que le LLM crée un bout de code, on le vérifie pour des erreurs et on lui donne des retours. Si tu y penses, c’est un peu comme un prof qui corrige les devoirs d’un élève ; l’élève apprend et s’améliore au fil du temps.

Pour notre étude, on s'est concentré sur la génération de code AWS CloudFormation, un type spécifique d'IaC. AWS CloudFormation aide les développeurs à configurer des ressources cloud via du code, un peu comme utiliser une recette pour faire un gâteau.

Pour tester ce système, on a commencé avec une série de prompts décrivant des problèmes IaC courants. On a demandé au LLM de générer des solutions, puis on a passé ces solutions à un outil appelé cfn-lint. Cet outil vérifie le code pour des erreurs, un peu comme un correcteur d’orthographe pour l'écriture. Après avoir vérifié le code, on a donné le feedback au LLM pour qu'il puisse s'ajuster et essayer à nouveau.

Résultats de la Boucle de Retour

Les résultats étaient fascinants. On a découvert que même si la boucle de retour aidait, le LLM a fini par atteindre un mur après quelques cycles. Imagine un athlète qui répète le même mouvement mais n’arrive pas à le maîtriser—à un moment donné, il stagne. C’est ce qu’on a observé ici : l’efficacité du LLM à corriger les erreurs a diminué après un certain temps et s’est stabilisée.

Nos essais ont montré qu'après environ cinq itérations, le LLM ne faisait plus vraiment d'améliorations significatives. À ce stade, c’était comme essayer d’apprendre à un chat à rapporter—mignon, mais pas très productif. Le LLM avait du mal à comprendre certains messages d’erreur, ce qui lui faisait créer de nouvelles erreurs tout en corrigeant les anciennes.

L'Importance d'un Code Correct

Quand il s'agit de générer de l'IaC, il ne suffit pas d'avoir un code qui a l'air bon ; il faut qu'il fonctionne aussi. C’est là que réside le défi. Même si le code passe le contrôle cfn-lint, il se peut qu'il ne fasse pas vraiment ce que l’utilisateur veut. C’est comme construire une voiture fancy qui ne peut pas vraiment rouler—peu importe à quel point elle est bien faite si elle ne remplit pas son but.

Cela nous amène au concept de Validité sémantique. En gros, ça veut dire que le code doit non seulement être exempt d'erreurs, mais aussi faire ce que l'utilisateur souhaite. Par exemple, une configuration de ressource cloud parfaitement structurée mais vide ne serait pas du tout utile. Les développeurs doivent s’assurer que le code généré répond à leurs besoins spécifiques, pas juste aux exigences techniques.

Apprendre des Autres Études

Il y a eu d'autres études dans ce domaine, explorant comment les LLMs peuvent aider à générer un IaC efficace. Un projet intéressant s'est concentré sur l'utilisation de règles grammaticales pour améliorer les sorties des LLMs et réduire les Erreurs de syntaxe. Pense à ça comme à donner au LLM un ensemble de règles à suivre—un peu comme donner à un gamin des instructions pour construire un set de Lego.

Une autre approche a examiné comment corriger les erreurs de syntaxe dans le code. Un cadre a atteint un taux de succès significatif pour corriger les erreurs trouvées dans le code généré—un peu comme avoir un super-héros pour sauver la mise quand ça tourne mal. Le défi reste, cependant, car même avec ces outils, les LLMs ont encore du chemin à parcourir pour être fiables pour les développeurs.

Les Limitations des LLMs

Malgré leurs capacités, les LLMs font face à de sérieuses limitations quand il s'agit de générer de l'IaC de manière fiable. Le premier souci est que tous les LLMs ne fonctionnent pas de la même manière. Certains peuvent être meilleurs que d'autres pour comprendre l'infrastructure cloud, mais aucun n'est encore parfait. C'est comme vouloir une pizza d'un different restaurant ; parfois tu obtiens une super part, et d'autres fois, c'est une bouillie.

Un autre souci est que le type d'outil d'infrastructure utilisé peut impacter la performance du LLM. Par exemple, AWS CloudFormation est bien documenté, ce qui facilite l’apprentissage des LLM à partir de données existantes. Cependant, si on testait un autre outil moins connu, on verrait probablement une chute de performance à cause du manque de données d’entraînement disponibles.

Directions Futures

Alors, quelles sont les prochaines étapes pour nous dans ce voyage des LLMs et de l'IaC ? Une piste potentielle serait de redessiner les messages d’erreur pour les rendre plus clairs pour les LLMs. Si on peut adapter le feedback pour que les modèles puissent mieux le comprendre, cela pourrait conduire à des corrections plus précises et rendre tout le processus plus fluide.

On voit aussi un potentiel dans le développement de nouveaux outils qui vérifient non seulement la validité du schéma, mais aussi la validité sémantique. Avoir un outil comme cfn-lint qui évalue à quel point l'infrastructure générée répond aux besoins des utilisateurs serait une grande avancée.

Et n’oublions pas les autres outils IaC comme Pulumi, qui permettent aux développeurs d’utiliser leurs langages de programmation préférés. On pourrait explorer comment utiliser ces outils avec les LLMs et intégrer des boucles de retour dans le mix.

Conclusion

En résumé, même si les LLMs ont le potentiel d'aider à générer de l'IaC, ils ont encore besoin d'améliorations. Notre expérience a montré que même si les boucles de retour peuvent apporter des bénéfices, elles peuvent aussi rencontrer des limites qui les empêchent d'être complètement efficaces. C'est un travail en cours, un peu comme essayer d'éduquer un chiot—amusant, mignon et un peu en désordre parfois.

Avec quelques ajustements dans les messages d'erreur et de meilleurs outils pour garantir la correction, on pourrait voir un futur où les LLMs jouent un rôle crucial dans l'automatisation de la configuration des infrastructures. D'ici là, les développeurs vont probablement continuer à se battre avec ce domaine complexe, cherchant de meilleures façons d'optimiser leur travail et de bien tout mettre en place.

Articles similaires