Mauvaise nouvelle pour les développeurs ? Cette IA devient très douée pour écrire du code
DeepMind affirme que ses recherches pourraient éventuellement aider les programmeurs à coder plus efficacement et ouvrir le domaine aux personnes qui ne codent pas.
Décider quel langage de programmation apprendre est une grande question pour les développeurs aujourd’hui en raison de l’énorme investissement en temps que cela prend. Mais cette question pourrait être rendue redondante à l'ère où les modèles d'intelligence artificielle (IA) font tout le gros du travail en comprenant la description d'un problème et en codant une solution.
Les chercheurs de l'unité DeepMind de Google, axée sur l'IA, affirment que son système AlphaCode peut exprimer des solutions à des problèmes dans un code qui atteint un score médian dans les concours de programmation organisés par de nouveaux programmeurs. Ces compétitions exigent que les humains comprennent un problème décrit en langage naturel, puis codent efficacement un algorithme.
Dans un nouvel article non évalué par des pairs, les chercheurs de DeepMind détaillent comment AlphaCode a atteint un classement moyen des 54,3 % des meilleurs participants dans 10 compétitions de programmation précédemment organisées avec plus de 5 000 participants. Les compétitions ont été organisées sur la plateforme de compétition de code Codeforces.
VOIR : Les employeurs recherchent désespérément des data scientists alors que la demande explose
DeepMind affirme qu’AlphaCode est le premier système de génération de code d’IA qui fonctionne à un niveau compétitif dans des compétitions de code pour les développeurs humains. La recherche pourrait améliorer la productivité des programmeurs et pourrait aider les non-programmeurs à exprimer une solution sans savoir comment écrire du code.
Les concurrents humains et, par conséquent, AlphaCode devaient analyser une description d’un défi ou d’une énigme et écrire rapidement un programme pour les résoudre. C’est plus difficile que d’entraîner un modèle à l’aide de données GitHub pour résoudre un simple problème de codage.
À l’instar des humains, AlphaCode devait comprendre une description en langage naturel du problème en plusieurs paragraphes, des détails narratifs de base et une description de la solution souhaitée en termes d’entrée et de sortie.
Pour résoudre le problème, le concurrent devrait créer un algorithme, puis l’implémenter efficacement, ce qui pourrait l’obliger à choisir, par exemple, un langage de programmation plus rapide comme C++ sur Python pour surmonter ces contraintes.
L'ensemble de données de pré-entraînement d'AlphaCode comprenait 715 Go de code provenant de fichiers extraits de référentiels GitHub écrits en C++, C#, Go, Java, JavaScript/TypeScript, Lua, Python, PHP, Ruby, Rust et Scala. L’équipe a affiné le modèle à l’aide d’ensembles de données de problèmes de programmation concurrentiels extraits de Codeforces et d’ensembles de données similaires.
Le coup de pouce que DeepMind a donné à AlphaCode a été obtenu en combinant des modèles de transformateurs à grande échelle. Parmi ceux-ci, citons GPT-3 d'OpenAI et le modèle de langage BERT de Google. DeepMind a utilisé des modèles de langage basés sur des transformateurs pour générer du code, puis filtrer la sortie en un petit ensemble de « programmes prometteurs » qui ont été soumis à l’évaluation.
« Au moment de l'évaluation, nous créons une quantité massive de programmes C++ et Python pour chaque problème, des ordres de grandeur plus importants que les travaux précédents », explique l'équipe AlphaCode de DeepMind dans un article de blog.
« Ensuite, nous filtrons, regroupons et reclassons ces solutions dans un petit ensemble de 10 programmes candidats que nous soumettons à une évaluation externe. Ce système automatisé remplace le processus d'essais et d'erreurs des concurrents : débogage, compilation, réussite des tests et finalement soumission.
DeepMind démontre ici comment AlphaCode code une solution à un problème donné.
DeepMind considère quelques inconvénients potentiels à ce qu'il essaie d'accomplir. Par exemple, les modèles peuvent générer du code avec des faiblesses exploitables, y compris « des vulnérabilités involontaires provenant d’un code obsolète ou intentionnellement injectées par des acteurs malveillants dans l’ensemble d’entraînement ».
VOIR : Développeur Web ou CTO, quels emplois technologiques ont les salaires qui augmentent le plus rapidement ?
De plus, il y a des coûts environnementaux. L'entraînement du modèle a nécessité des « centaines de pétaFLOPS » dans les centres de données de Google. Mais la génération de code d’IA à plus long terme « pourrait conduire à des systèmes capables d’écrire et de s’améliorer de manière récursive, conduisant rapidement à des systèmes de plus en plus avancés ».
Il y a un risque que l'automatisation réduise la demande de développeurs, mais DeepMind souligne les limites des outils de complétion de code d'aujourd'hui qui améliorent considérablement la productivité de la programmation, mais qui, jusqu'à récemment, étaient limités à des suggestions d'une seule ligne et limités à certains langages ou extraits de code courts.
Cependant, DeepMind souligne que son travail est loin d’être une menace pour les programmeurs humains, mais que ses systèmes doivent être capables de développer des capacités de résolution de problèmes pour aider l’humanité.
« Notre exploration de la génération de code laisse une vaste marge d’amélioration et laisse entrevoir des idées encore plus passionnantes qui pourraient aider les programmeurs à améliorer leur productivité et ouvrir le domaine à des personnes qui n’écrivent pas actuellement de code », expliquent les chercheurs de DeepMind.