L’IA de Deepmind apprend l’art du codage

Sur le terrain de l’informatique, il n’y a peut-être pas de tâche plus fondamentale que de trier. Bulle, tas, fusionner—faites votre choix. Les méthodes de réorganisation des données à l’intérieur d’un ordinateur ont été théorisées à mort, ont servi d’exercices pratiques à des millions de novices et ont été optimisées pendant des décennies par des développeurs experts. Tapez une fonction sort() dans n’importe quel langage de programmation, et c’est un code sur lequel vous pouvez compter. Ne le touchez pas. Cela fonctionne déjà très bien.

Mais l’année dernière, un système d’intelligence artificielle développé par les ingénieurs de Deepmind de Google s’est amélioré juste assez pour avoir de l’importance. Le système, que Deepmind appelle AlphaDev, a été chargé de proposer une nouvelle façon de trier les séquences courtes en nombres en C++, le langage de codage populaire. Cela signifiait passer sous le capot et demander à l’IA de créer de nouveaux algorithmes dans le code d’assemblage, les instructions qui comblent le fossé entre les langages de programmation comme C++ et le matériel informatique. Lorsqu’un développeur C++ demande à l’ordinateur de “trier”, ces commandes sont converties en code lisible par machine qui indique exactement à la mémoire et au processeur de l’ordinateur ce qu’il faut faire : où déplacer les données et comment les modifier. C’est là que les morceaux rencontrent le métal.

L’expérience a fonctionné. Depuis avril de l’année dernière, C++ fonctionne légèrement plus rapidement, grâce à un nouvel ensemble d’algorithmes de tri concoctés par l’IA. Mais selon les ingénieurs d’AlphaDev, qui ont décrit le travail aujourd’hui dans Nature, ce n’est que la première étape. “Nous voulons optimiser l’ensemble de la pile informatique”, explique Daniel Mankowitz, chercheur chez Deepmind qui a dirigé le projet de tri. Mankowitz dit qu’AlphaDev a déjà amélioré les algorithmes non seulement pour le tri, mais aussi pour d’autres tâches de base comme le hachage.

“Je pense que ce travail est incroyablement excitant”, déclare Armando Solar-Lezama, un expert en synthèse de programmes au MIT, qui n’a pas participé à la recherche. Il est utile que l’IA propose un nouvel algorithme de tri ; c’est beaucoup plus important de construire une IA capable d’apprendre à écrire du code de pointe pour une variété de tâches, dit-il. Cela signifie qu’AlphaDev a commencé à apprendre quelque chose de plus fondamental sur l’art du codage lui-même.

Cela vient avec des contraintes importantes, bien sûr. “Ce sont de tout petits programmes”, ajoute-t-il, ne totalisant pas plus de quelques dizaines d’instructions en code assembleur. Mais ces petits programmes représentent souvent de gros goulots d’étranglement pour les performances de l’ordinateur, ayant été optimisés autant que les gens peuvent les pousser. Dans l’ensemble, les nouveaux algorithmes de tri C++ d’AlphaDev sont 1,7 % plus efficaces que les méthodes précédentes lors du tri de longues séquences de nombres, et jusqu’à 70 % plus rapides pour les séquences de cinq éléments. À grande échelle, ces améliorations s’additionnent, dit Mankowitz. Depuis que le code écrit par l’IA a été soumis à Libc++, une importante bibliothèque open source pour C++, il estime que les algorithmes ont été utilisés des milliards de fois par jour.

Ces améliorations sont dues à une technique appelée apprentissage par renforcement, qui est la même approche que celle utilisée pour aider l’IA de Deepmind à maîtriser des jeux comme les échecs et le Go. Ce type d’IA apprend en faisant. Cela fonctionne en traitant une tâche donnée – comme écrire un programme d’assemblage – comme un jeu, dans lequel l’IA reçoit des récompenses pour avoir fait des mouvements intelligents qui augmentent l’efficacité du programme. Au fil du temps, le système fonctionne pour maximiser cette récompense, ce qui se traduit par une stratégie Go gagnante ou un programme d’assemblage plus rapide. Cela diffère du type d’IA que l’on trouve dans les grands modèles de langage comme GPT-4, qui s’appuient sur d’énormes quantités de données pour apprendre à écrire des mots ou à coder. C’est idéal pour produire une écriture qui reflète le ton d’Internet ou produire des segments de code communs. Mais ce n’est pas si bon pour produire de nouvelles solutions de pointe aux défis de codage que l’IA n’a jamais vus auparavant.

rewrite this content and keep HTML tags

Sur le terrain de l’informatique, il n’y a peut-être pas de tâche plus fondamentale que de trier. Bulle, tas, fusionner—faites votre choix. Les méthodes de réorganisation des données à l’intérieur d’un ordinateur ont été théorisées à mort, ont servi d’exercices pratiques à des millions de novices et ont été optimisées pendant des décennies par des développeurs experts. Tapez une fonction sort() dans n’importe quel langage de programmation, et c’est un code sur lequel vous pouvez compter. Ne le touchez pas. Cela fonctionne déjà très bien.

Mais l’année dernière, un système d’intelligence artificielle développé par les ingénieurs de Deepmind de Google s’est amélioré juste assez pour avoir de l’importance. Le système, que Deepmind appelle AlphaDev, a été chargé de proposer une nouvelle façon de trier les séquences courtes en nombres en C++, le langage de codage populaire. Cela signifiait passer sous le capot et demander à l’IA de créer de nouveaux algorithmes dans le code d’assemblage, les instructions qui comblent le fossé entre les langages de programmation comme C++ et le matériel informatique. Lorsqu’un développeur C++ demande à l’ordinateur de “trier”, ces commandes sont converties en code lisible par machine qui indique exactement à la mémoire et au processeur de l’ordinateur ce qu’il faut faire : où déplacer les données et comment les modifier. C’est là que les morceaux rencontrent le métal.

L’expérience a fonctionné. Depuis avril de l’année dernière, C++ fonctionne légèrement plus rapidement, grâce à un nouvel ensemble d’algorithmes de tri concoctés par l’IA. Mais selon les ingénieurs d’AlphaDev, qui ont décrit le travail aujourd’hui dans Nature, ce n’est que la première étape. “Nous voulons optimiser l’ensemble de la pile informatique”, explique Daniel Mankowitz, chercheur chez Deepmind qui a dirigé le projet de tri. Mankowitz dit qu’AlphaDev a déjà amélioré les algorithmes non seulement pour le tri, mais aussi pour d’autres tâches de base comme le hachage.

“Je pense que ce travail est incroyablement excitant”, déclare Armando Solar-Lezama, un expert en synthèse de programmes au MIT, qui n’a pas participé à la recherche. Il est utile que l’IA propose un nouvel algorithme de tri ; c’est beaucoup plus important de construire une IA capable d’apprendre à écrire du code de pointe pour une variété de tâches, dit-il. Cela signifie qu’AlphaDev a commencé à apprendre quelque chose de plus fondamental sur l’art du codage lui-même.

Cela vient avec des contraintes importantes, bien sûr. “Ce sont de tout petits programmes”, ajoute-t-il, ne totalisant pas plus de quelques dizaines d’instructions en code assembleur. Mais ces petits programmes représentent souvent de gros goulots d’étranglement pour les performances de l’ordinateur, ayant été optimisés autant que les gens peuvent les pousser. Dans l’ensemble, les nouveaux algorithmes de tri C++ d’AlphaDev sont 1,7 % plus efficaces que les méthodes précédentes lors du tri de longues séquences de nombres, et jusqu’à 70 % plus rapides pour les séquences de cinq éléments. À grande échelle, ces améliorations s’additionnent, dit Mankowitz. Depuis que le code écrit par l’IA a été soumis à Libc++, une importante bibliothèque open source pour C++, il estime que les algorithmes ont été utilisés des milliards de fois par jour.

Ces améliorations sont dues à une technique appelée apprentissage par renforcement, qui est la même approche que celle utilisée pour aider l’IA de Deepmind à maîtriser des jeux comme les échecs et le Go. Ce type d’IA apprend en faisant. Cela fonctionne en traitant une tâche donnée – comme écrire un programme d’assemblage – comme un jeu, dans lequel l’IA reçoit des récompenses pour avoir fait des mouvements intelligents qui augmentent l’efficacité du programme. Au fil du temps, le système fonctionne pour maximiser cette récompense, ce qui se traduit par une stratégie Go gagnante ou un programme d’assemblage plus rapide. Cela diffère du type d’IA que l’on trouve dans les grands modèles de langage comme GPT-4, qui s’appuient sur d’énormes quantités de données pour apprendre à écrire des mots ou à coder. C’est idéal pour produire une écriture qui reflète le ton d’Internet ou produire des segments de code communs. Mais ce n’est pas si bon pour produire de nouvelles solutions de pointe aux défis de codage que l’IA n’a jamais vus auparavant.

Laisser un commentaire