Parallèlement à son modèle d'IA générative Gemini, Google a présenté AlphaCode 2, une version améliorée de son IA génératrice de code AlphaCode présentée par le laboratoire DeepMind de Google il y a environ un an.
Alphabet a indiqué que Gemini possède des « capacités de raisonnement » avancées pour « réfléchir plus attentivement » lorsqu'il répond à des questions difficiles, selon l'entreprise. Son modèle d'IA se décline en trois formats :
- Gemini Ultra — notre modèle le plus grand et le plus performant pour les tâches très complexes.
- Gemini Pro : notre meilleur modèle pour évoluer vers un large éventail de tâches.
- Gemini Nano — notre modèle le plus efficace pour les tâches sur appareil.
Alphabet a assuré qu'Ultra avait surpassé les modèles d'IA « de pointe », y compris le modèle le plus puissant de ChatGPT, GPT-4, dans 30 des 32 tests de référence, y compris en matière de raisonnement et de compréhension des images. Le modèle Pro a surpassé GPT-3.5, la technologie qui sous-tend la version en accès gratuit de ChatGPT, dans six tests sur huit.
AlphaCode 2 alimenté par Gemini
AlphaCode 2 est en fait alimenté par Gemini, ou du moins une variante de celui-ci (Gemini Pro) affinée sur les données des concours de codage. Et il est bien plus performant que son prédécesseur, affirme Google (au moins sur un point de référence).
Dans un sous-ensemble de concours de programmation hébergés sur Codeforces, une plateforme de concours de programmation, AlphaCode 2 (qui a écrit des codes dans des langages couvrant Python, Java, C++ et Go) a obtenu de meilleurs résultats qu'environ 85 % des concurrents en moyenne, selon Google. Cela peut être mis en perspective avec les 50 % de concurrents que son prédécesseur a réussi à battre sur le même sous-ensemble.
« Nous avons sélectionné 12 concours récents avec plus de 8 000 participants, soit de la division 2, soit de la division la plus difficile '1+2'. Cela fait un total de 77 problèmes », lit-on dans un livre blanc technique sur AlphaCode 2. « AlphaCode 2 résout 43 % des problèmes en 10 tentatives, soit près de deux fois plus de problèmes que l'AlphaCode original (25 %). »
AlphaCode 2 peut comprendre les défis de programmation impliquant des mathématiques « complexes » et de l’informatique théorique. Et, entre autres techniques raisonnablement sophistiquées, AlphaCode 2 est capable de programmation dynamique, explique Rémi Leblond, chercheur chez DeepMind, dans une vidéo préenregistrée.
La programmation dynamique implique de simplifier un problème complexe en le décomposant encore et encore en sous-problèmes plus simples; Leblond affirme qu'AlphaCode 2 sait non seulement quand mettre en œuvre correctement cette stratégie, mais aussi où l'utiliser. Cela est remarquable, étant donné que les problèmes de programmation nécessitant une programmation dynamique ont constitué un problème majeur pour l’AlphaCode original.
« [AlphaCode 2] doit faire preuve d'un certain niveau de compréhension, d'un certain niveau de raisonnement et de conception de solutions de code avant de pouvoir passer à la mise en œuvre réelle pour résoudre [un] problème de codage », a déclaré Leblond. « Et il fait tout cela sur des problèmes jamais vus auparavant ».
Vos emplois sont en sécurité… pour l’instant
Dans deux des douze concours auxquels il a participé, AlphaCode 2 a surpassé 99,5 % des participants. Bien qu’impressionnantes, les conditions de compétition étaient différentes pour la machine et pour les humains.
AlphaCode 2 peut proposer jusqu'à dix solutions différentes pour chaque problème et marquer des points si l'une d'entre elles est correcte – contrairement aux candidats humains, qui n'ont qu'une seule tentative pour relever le défi.
AlphaCode 2 fonctionne également très différemment des développeurs humains. En cas de problème, il génère environ un million d'échantillons de code différents, qui sont ensuite filtrés. Les scripts aléatoires qui ne sont pas pertinents et ne correspondent pas à la description du problème – ou ceux qui génèrent des exemples de réponses de test incorrects, ou qui ne se compilent pas du tout – sont supprimés.
« Chaque problème de programmation compétitif contient au moins un test d'entrée/sortie public indiquant comment les échantillons de code doivent se comporter. Nous exécutons chaque échantillon de code sur l'entrée de test correspondante et filtrons tous ceux qui ne produisent pas le résultat attendu et qui n'auraient donc pas pu être corrects », ont expliqué les chercheurs.
Le filtrage élimine 95 % des échantillons de code générés par AlphaCode 2. Ensuite, un algorithme de clustering collecte et classe les 50 000 programmes restants par similarité et les trie en différents groupes. Les dix plus grands clusters sont ensuite notés par un modèle Gemini Pro distinct, entraîné pour prédire leur précision. Les échantillons des dix groupes différents sont ensuite classés du meilleur au dernier, et le premier de chaque groupe est soumis.
Les codeurs humains réfléchissent généralement à différentes stratégies pour résoudre un problème, puis se concentrent sur l'idée la plus prometteuse et la rédigent, au lieu d'essayer des millions de solutions différentes. Le succès dépend de la compréhension des problèmes et de la découverte d’astuces mathématiques intelligentes pour les résoudre.
L'approche par force brute d'AlphaCode 2 – filtrer tout son code et exécuter les différents modèles pour noter et classer les meilleurs – nécessite beaucoup de calculs, il est donc probablement trop coûteux de le publier jusqu'à ce qu'il soit plus efficace.
« Malgré les résultats impressionnants d'AlphaCode 2, il reste encore beaucoup à faire avant de voir des systèmes capables d'atteindre de manière fiable les performances des meilleurs codeurs humains. Notre système nécessite de nombreux essais et erreurs et reste trop coûteux à exploiter à grande échelle, cela repose en grande partie sur la capacité de filtrer les échantillons de code manifestement mauvais », ont admis les chercheurs.
Néanmoins, AlphaCode 2 constitue une grande amélioration par rapport à l'ancien AlphaCode et est plus de 10 000 fois plus efficace en matière d'échantillonnage, affirme Google. Il ne nécessite que 100 échantillons générés pour atteindre les mêmes performances qu’AlphaCode, qui en nécessitait un million.
Google DeepMind estime qu'il pourrait créer un modèle d'écriture de code encore meilleur en utilisant Gemini Ultra – un modèle de langage plus grand et plus puissant que Gemini Pro – et a déclaré qu'il s'efforçait de mettre ses capacités à la disposition des développeurs.
« Nous espérons que ce type de codage interactif sera l'avenir de la programmation, où les programmeurs utiliseront des modèles d'IA hautement performants comme outils collaboratifs qui pourront les aider à réfléchir sur les problèmes, à proposer des conceptions de code et à les aider à la mise en œuvre », a conclu l'équipe. « Nous travaillons à intégrer les capacités uniques d'AlphaCode 2 à nos modèles Gemini de base comme première étape pour rendre ce nouveau paradigme de programmation accessible à tous ».
Des conséquences potentielles
Voici quelques conséquences possibles :
- Productivité et efficacité améliorées : en automatisant les processus de codage répétitifs, AlphaCode 2 permet aux développeurs de se concentrer sur des domaines plus stratégiques et créatifs du développement logiciel.
- Meilleure qualité de code : les produits logiciels plus fiables et plus entretenus peuvent bénéficier de la capacité d'AlphaCode 2 à produire un code précis et efficace.
- Démocratisation du développement logiciel : AlphaCode 2 a le potentiel de permettre aux personnes sans connaissances formelles en programmation de participer à la création d'applications logicielles en rendant le codage plus simple et plus accessible.
- Obstacles et perspectives d'avenir : AlphaCode 2 est actuellement en développement et présente un certain nombre d'obstacles malgré son potentiel.
- Problèmes éthiques potentiels : Il existe des problèmes éthiques qui doivent être résolus lorsque l’on envisage la possibilité que l’IA remplace les travailleurs humains.
- Sûreté et sécurité : pour les applications du monde réel, il est essentiel de garantir la sûreté et la sécurité du code généré par l’IA.
- Transparence et explicabilité : pour avoir confiance dans les compétences des modèles d'IA tels qu'AlphaCode 2, il faut comprendre comment ils portent des jugements.
Même si ces problèmes doivent être résolus, AlphaCode 2 offre une pléthore d'options fascinantes. Nous pouvons nous attendre à ce que la technologie continue de façonner le développement de logiciels de manière significative à mesure qu’elle progresse.
Conclusion
Quant à savoir si nous pouvons nous attendre à voir AlphaCode 2 être proposé en tant que produit à un moment donné (AlphaCode n'a jamais été publié en tant que tel), lors d'un briefing, Eli Collins, vice-président des produits chez DeepMind, a fait allusion à cette possibilité.
« L'une des choses qui m'a le plus enthousiasmé dans les derniers résultats est que lorsque les programmeurs collaborent avec [AlphaCode 2 propulsé par] Gemini, en définissant certaines propriétés que le code doit suivre, les performances [du modèle] s'améliorent encore », a déclaré Collins. « À l'avenir, nous voyons des programmeurs utiliser des modèles d'IA hautement performants comme outils collaboratifs qui facilitent l'ensemble du processus de développement logiciel, depuis le raisonnement sur les problèmes jusqu'à l'aide à la mise en œuvre. »
Source : rapport technique AlphaCode 2
Et vous ?
Quel impact pensez-vous qu’AlphaCode 2 aura sur le rôle des développeurs dans l’avenir de la programmation?
Comment l’intégration de Gemini pourrait-elle changer la manière dont nous interagissons avec les outils de développement de logiciels?
Quels sont les avantages et les inconvénients potentiels de l’automatisation de la génération de code grâce à des IA comme AlphaCode 2?
En quoi la capacité d’AlphaCode 2 à comprendre et générer du code dans plusieurs langages de programmation pourrait-elle influencer la collaboration entre les communautés de développeurs?
Quelles mesures de sécurité devraient être prises en compte lors de l’utilisation d’outils d’IA pour le développement de logiciels?
Comment Google devrait-il aborder les questions éthiques liées à l’utilisation de l’IA dans la programmation?