L’IA apprend à écrire du code informatique avec une avance époustouflante
Le logiciel dirige le monde. Il contrôle les smartphones, les armes nucléaires et les moteurs de voiture. Mais il y a une pénurie mondiale de programmeurs. Ne serait-il pas agréable que quelqu’un puisse expliquer ce qu’il veut qu’un programme fasse, et qu’un ordinateur puisse traduire cela en lignes de code ?
Selon une nouvelle étude, un nouveau système d’intelligence artificielle (IA) appelé AlphaCode rapproche l’humanité de cette vision. Les chercheurs disent que le système – du laboratoire de recherche DeepMind, une filiale d’Alphabet (la société mère de Google) – pourrait un jour aider les codeurs expérimentés, mais ne pourra probablement pas les remplacer.
« C’est très impressionnant, les performances qu’ils sont capables d’atteindre sur des problèmes assez difficiles », déclare Armando Solar-Lezama, responsable du groupe de programmation assistée par ordinateur au Massachusetts Institute of Technology.
AlphaCode va au-delà du précédent porte-étendard de l’écriture de code d’IA : Codex, un système publié en 2021 par le laboratoire de recherche à but non lucratif OpenAI. Le laboratoire avait déjà développé GPT-3, un « grand modèle de langage » capable d’imiter et d’interpréter le texte humain après avoir été formé sur des milliards de mots provenant de livres numériques, d’articles de Wikipédia et d’autres pages de texte Internet. En affinant GPT-3 sur plus de 100 gigaoctets de code de Github, un référentiel de logiciels en ligne, OpenAI a créé Codex. Le logiciel peut écrire du code lorsqu’il y est invité avec une description quotidienne de ce qu’il est censé faire, par exemple compter les voyelles dans une chaîne de texte. Mais il fonctionne mal lorsqu’il est chargé de problèmes délicats.
Les créateurs d’AlphaCode se sont concentrés sur la résolution de ces problèmes difficiles. Comme les chercheurs du Codex, ils ont commencé par alimenter un grand modèle de langage de plusieurs gigaoctets de code de GitHub, juste pour le familiariser avec la syntaxe et les conventions de codage. Ensuite, ils l’ont formé pour traduire les descriptions de problèmes en code, en utilisant des milliers de problèmes collectés lors de concours de programmation. Par exemple, un problème peut demander à un programme de déterminer le nombre de chaînes binaires (séquences de zéros et de uns) de longueur n qui n’ont pas de zéros consécutifs.
Lorsqu’il est confronté à un nouveau problème, AlphaCode génère des solutions de code candidats (en Python ou C++) et filtre les mauvaises. Mais alors que les chercheurs avaient auparavant utilisé des modèles comme Codex pour générer des dizaines ou des centaines de candidats, DeepMind a fait générer AlphaCode jusqu’à plus d’un million.
Pour les filtrer, AlphaCode ne conserve d’abord que le 1% des programmes qui réussissent les cas de test qui accompagnent les problèmes. Pour réduire davantage le champ, il regroupe les détenteurs en fonction de la similitude de leurs sorties avec les entrées inventées. Ensuite, il soumet les programmes de chaque cluster, un par un, en commençant par le plus grand cluster, jusqu’à ce qu’il tombe sur un cluster réussi ou atteigne 10 soumissions (environ le maximum que les humains soumettent aux compétitions). La soumission de différents clusters lui permet de tester un large éventail de tactiques de programmation. C’est l’étape la plus innovante du processus d’AlphaCode, déclare Kevin Ellis, informaticien à l’Université Cornell qui travaille sur le codage de l’IA.
Après la formation, AlphaCode a résolu environ 34% des problèmes assignés, rapporte DeepMind cette semaine dans Science. (Sur des critères similaires, Codex a obtenu un pourcentage de réussite à un chiffre.)
Pour tester davantage ses prouesses, DeepMind a inscrit AlphaCode dans des compétitions de codage en ligne. Dans les concours avec au moins 5000 participants, le système a surpassé 45,7% des programmeurs. Les chercheurs ont également comparé ses programmes avec ceux de sa base de données de formation et ont constaté qu’il ne dupliquait pas de grandes sections de code ou de logique. Cela a généré quelque chose de nouveau, une créativité qui a surpris Ellis.
« Il continue d’être impressionnant de voir à quel point les méthodes d’apprentissage automatique fonctionnent lorsque vous les mettez à l’échelle », dit-il. Les résultats sont « époustouflants », ajoute Wojciech Zaremba, co-fondateur d’OpenAI et co-auteur de leur article sur le Codex.
Le codage de l’IA pourrait avoir des applications au-delà des compétitions gagnantes, déclare Yujia Li, informaticien chez DeepMind et co-auteur de l’article. Cela pourrait faire un gros travail de logiciel, libérant les développeurs pour qu’ils travaillent à un niveau supérieur ou plus abstrait, ou cela pourrait aider les non-codeurs à créer des programmes simples.
David Choi, un autre auteur de l’étude chez DeepMind, imagine d’exécuter le modèle à l’envers : traduire le code en explications de ce qu’il fait, ce qui pourrait profiter aux programmeurs essayant de comprendre le code des autres. « Il y a beaucoup plus de choses que vous pouvez faire avec des modèles qui comprennent le code en général », dit-il.
Pour l’instant, DeepMind veut réduire les erreurs du système. Li dit que même si AlphaCode génère un programme fonctionnel, il fait parfois des erreurs simples, comme créer une variable et ne pas l’utiliser.
Il y a d’autres problèmes. AlphaCode nécessite des dizaines de milliards de billions d’opérations par problème, une puissance de calcul dont seules les plus grandes entreprises technologiques disposent. Et les problèmes qu’il a résolus à partir des concours de programmation en ligne étaient limités et autonomes. Mais la programmation dans le monde réel nécessite souvent de gérer de gros packages de code à plusieurs endroits, ce qui nécessite une compréhension plus globale du logiciel, explique Solar-Lezama.
L’étude note également le risque à long terme des logiciels qui s’améliorent de manière récursive. Certains experts disent qu’une telle amélioration personnelle pourrait conduire à une IA super intelligente qui conquiert le monde. Bien que ce scénario puisse sembler lointain, les chercheurs souhaitent toujours que le domaine du codage de l’IA institue des garde-fous, des freins et contrepoids intégrés.
« Même si ce type de technologie rencontre un grand succès, vous voudriez le traiter de la même manière que vous traitez un programmeur au sein d’une organisation », déclare Solar-Lezama. « Vous ne voulez jamais d’une organisation où un seul programmeur pourrait faire tomber toute l’organisation. »