Deepmind’s AI Is Learning About the Art of Coding
Dans le champ De l'informatique, il n'y a peut-être pas de tâche plus fondamentale que de trier. Bulle, tas, fusion – prenez 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 de pratique pour des millions de novices et ont été optimisés depuis des décennies par des développeurs experts. Tapez une fonction tri () dans n'importe quel langage de programmation, et c'est le 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'IA développé par des ingénieurs de DeepMind de Google s'est amélioré avec juste assez pour avoir de l'importance. Le système, que DeepMind appelle Alphadev, a été chargé de trouver 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 avoir l'IA à construire de nouveaux algorithmes dans le code d'assemblage – les instructions qui comblent l'écart entre les langages de programmation comme C ++ et le matériel informatique. Lorsqu'un développeur C ++ dit à l'ordinateur de «trier», ces commandes sont converties en code lisible par machine qui indique la mémoire et le processeur d'un ordinateur exactement quoi faire: où déplacer les données et comment le changer. C'est là que les bits 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 conçus par l'IA. Mais selon les ingénieurs d'Alphadev, qui a décrit le travail aujourd'hui dans Naturec'est juste la première étape. «Nous voulons optimiser l'ensemble de la pile informatique», explique Daniel Mankowitz, chercheur du personnel 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», explique Armando Solar-Lezama, un expert en synthèse de programme au MIT, qui n'a pas été impliqué dans la recherche. Il est utile d'avoir l'IA proposer un nouvel algorithme de tri; C'est une affaire beaucoup plus importante pour construire une IA qui peut apprendre à écrire du code de pointe dans une variété de tâches, dit-il. Cela signifie qu'Alphadev a commencé à apprendre quelque chose de plus fondamental sur l'art de coder lui-même.
Cela vient avec des contraintes importantes, bien sûr. «Ce sont de minuscules programmes minuscules», ajoute-t-il – notamment quelques dizaines d'instructions dans le code d'assemblage. Mais ces minuscules programmes représentent souvent de gros goulots d'étranglement pour les performances informatiques, ayant été optimisées pour autant que les gens puissent les pousser. Dans l'ensemble, les nouveaux algorithmes de tri C ++ d'Alphadev sont 1,7% plus efficaces que les méthodes antérieures lors du tri de longues séquences de nombres, et jusqu'à 70% plus rapidement pour les séquences à cinq éléments. À grande échelle, ces améliorations s'additionnent, dit Mankowitz. Étant donné que le code écrite par l'IA a été soumis à LIBC ++, une bibliothèque open source majeure pour C ++, il estime que les algorithmes ont été utilisés des milliards de fois par jour.
Ces améliorations sont grâce à une technique appelée apprentissage du renforcement, qui est la même approche utilisée pour aider les jeux Master AI de DeepMind comme Chess et GO. Ce type d'IA apprend en faisant. Il 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 faire des mouvements intelligents qui augmentent l'efficacité du programme. Au fil du temps, le système s'efforce de maximiser cette récompense, résultant en une stratégie GO gagnante ou un programme d'assemblage plus rapide. Cela diffère du type d'IA trouvé dans les modèles de grande langue comme GPT-4, qui s'appuient sur d'énormes quantités de données pour apprendre à écrire des mots ou du code. C'est idéal pour produire une écriture qui reflète le ton d'Internet ou la production de segments de code communs. Mais ce n'est pas si bon pour produire des solutions nouvelles de pointe pour coder les défis que l'IA n'a jamais vus auparavant.