Maison Périphériques technologiques IA Google utilise l'IA pour briser le sceau de dix ans de l'algorithme de tri. Elle est exécutée des milliards de fois chaque jour, mais les internautes disent que c'est la recherche la plus irréaliste ?

Google utilise l'IA pour briser le sceau de dix ans de l'algorithme de tri. Elle est exécutée des milliards de fois chaque jour, mais les internautes disent que c'est la recherche la plus irréaliste ?

Jun 22, 2023 pm 09:18 PM
Google ai Algorithme de tri

Organisation | Nuka Cola, Chu Xingjuan

Les amis qui ont suivi des cours de base en informatique doivent avoir personnellement conçu un algorithme de tri, c'est-à-dire utiliser du code pour réorganiser les éléments d'une liste non ordonnée par ordre croissant ou décroissant. C'est un défi intéressant, et il existe de nombreuses façons possibles de le relever. Beaucoup de temps a été investi pour trouver comment accomplir les tâches de tri plus efficacement.

En tant qu'opération de base, les algorithmes de tri sont intégrés aux bibliothèques standard de la plupart des langages de programmation. Il existe de nombreuses techniques et algorithmes de tri différents utilisés dans les bases de code du monde entier pour organiser de grandes quantités de données en ligne, mais au moins en ce qui concerne les bibliothèques C++ utilisées avec le compilateur LLVM, le code de tri n'a pas changé depuis plus d'une décennie. .

Récemment, l'équipe DeepMind AI de Google a développé un outil d'apprentissage par renforcement, AlphaDev, capable de développer des algorithmes extrêmement optimisés sans avoir besoin d'une pré-formation avec des exemples de code humain. Aujourd'hui, ces algorithmes ont été intégrés dans la bibliothèque de tri C++ standard LLVM, marquant la première fois depuis plus d'une décennie qu'une partie de la bibliothèque de tri change et la première fois que des algorithmes conçus avec l'apprentissage par renforcement sont ajoutés à la bibliothèque.

Considérez le processus de programmation comme un « jeu »

Le système DeepMind est souvent capable de découvrir des solutions à des problèmes auxquels les humains n'ont jamais pensé car il ne nécessite aucune exposition préalable aux stratégies de jeu humaines. DeepMind s'appuie entièrement sur l'auto-confrontation pour apprendre de l'expérience, il existe donc parfois des angles morts qui peuvent être exploités par les humains.

Cette méthode est en fait très similaire à la programmation. Les grands modèles de langage sont capables d’écrire du code efficace car ils ont vu de nombreux exemples de code humain. Mais c’est précisément pour cette raison qu’il est difficile pour les modèles linguistiques de produire des choses que les humains n’ont jamais faites auparavant. Si nous voulons optimiser davantage les algorithmes existants omniprésents (tels que les fonctions de tri), il sera difficile de briser les contraintes des idées inhérentes en continuant à s'appuyer sur le code humain existant. Alors, comment l’IA peut-elle trouver de véritables nouvelles directions ?

Les chercheurs de DeepMind ont utilisé des méthodes similaires aux échecs et au Go pour optimiser les tâches de code, les transformant en « puzzles » pour un seul joueur. AlphaDev Systems a développé un algorithme d'assemblage x86 qui traite le délai d'exécution du code comme un score et s'efforce de minimiser le score tout en garantissant le bon fonctionnement du code. AlphaDev a progressivement maîtrisé l'art d'écrire du code efficace et concis, grâce à l'application de l'apprentissage par renforcement.

AlphaDev est basé sur AlphaZero. DeepMind est bien connu pour développer des logiciels d’IA capables d’apprendre les règles du jeu par eux-mêmes. Cette ligne de pensée s'est avérée très efficace et a permis de résoudre avec succès de nombreux problèmes de jeux, tels que les échecs, le Go et "StarCraft". Bien que les spécificités varient en fonction du jeu auquel vous jouez, le logiciel de DeepMind apprend grâce à des jeux répétés, explorant continuellement des moyens de maximiser votre score.

Les deux composants principaux d'AlphaDev sont les algorithmes d'apprentissage et les fonctions de représentation.

L'utilisation de DRL combinée à des algorithmes d'optimisation de recherche aléatoire pour assembler des jeux est une méthode d'algorithme d'apprentissage AlphaDev. Le principal algorithme d'apprentissage d'AlphaDev est une extension d'AlphaZero 33, un algorithme DRL bien connu dans lequel un réseau neuronal est formé pour guider la recherche à travers le jeu.

Cette fonction est utilisée pour surveiller les performances globales du développement du code, couvrant la structure générale de l'algorithme, ainsi que l'utilisation des registres x86 et de la mémoire. Le système introduira progressivement des instructions d'assemblage, ajoutées indépendamment lors des sélections à l'aide d'une méthode de recherche arborescente de Monte Carlo empruntée au système de jeu. La structure arborescente permet au système de restreindre rapidement la recherche à une région limitée contenant un grand nombre d'instructions potentielles, tandis que la méthode de Monte Carlo sélectionne des instructions spécifiques dans cette région de branchement avec un certain degré de hasard. Notez que les « instructions » mentionnées ici sont des opérations telles que la sélection de registres spécifiques pour créer un assemblage valide et complet. )

Le système évalue ensuite la latence et l'état de validité du code assembleur et attribue un score, qui est comparé au score précédent. Grâce à l'apprentissage par renforcement, le système est capable d'enregistrer les informations de travail de différentes branches dans la structure arborescente pour un état de programme donné. Au fil du temps, le système se familiarise avec la manière de gagner la partie (réussite du tri) avec le score le plus élevé (représentant la latence la plus faible). La fonction de représentation principale d'AlphaDev est basée sur Transformers.

Pour entraîner AlphaDev à découvrir de nouveaux algorithmes, AlphaDev observe à chaque tour l'algorithme qu'il génère et les informations contenues dans l'unité centrale de traitement (CPU), puis termine le jeu en sélectionnant les instructions à ajouter à l'algorithme. AlphaDev doit rechercher efficacement un grand nombre de combinaisons d'instructions possibles pour trouver un algorithme pouvant être séquencé et également plus rapide que le meilleur algorithme actuel, tandis que le modèle d'agent peut être récompensé en fonction de l'exactitude et de la latence de l'algorithme.

Google utilise lIA pour briser le sceau de dix ans de lalgorithme de tri. Elle est exécutée des milliards de fois chaque jour, mais les internautes disent que cest la recherche la plus irréaliste ?

Image A : Jeu d'assemblage, Image B : Calcul des récompenses

Enfin, AlphaDev a découvert de nouveaux algorithmes de tri qui peuvent améliorer la bibliothèque de tri LLVM libc++ : pour les séquences plus courtes, la bibliothèque de tri est 70 % plus rapide ; pour les séquences de plus de 250 000 éléments, la vitesse est augmentée d'environ 1,7 %.

Plus précisément, l'innovation de cet algorithme réside principalement dans deux séquences d'instructions : AlphaDev Swap Move (déplacement d'échange) et AlphaDev Copy Move (déplacement de copie). Grâce à ces deux instructions, AlphaDev saute une étape et effectue un raccourci apparemment erroné mais en réalité. connecter des éléments.

Google utilise lIA pour briser le sceau de dix ans de lalgorithme de tri. Elle est exécutée des milliards de fois chaque jour, mais les internautes disent que cest la recherche la plus irréaliste ?

Gauche : implémentation originale de sort3 avec min(A,B,C). ‍

Image de droite : AlphaDev Swap Move - AlphaDev a découvert que vous n'aviez besoin que de min(A,B).

Google utilise lIA pour briser le sceau de dix ans de lalgorithme de tri. Elle est exécutée des milliards de fois chaque jour, mais les internautes disent que cest la recherche la plus irréaliste ?

Gauche : implémentation originale de max (B, min (A, C)) pour un algorithme de tri plus grand qui trie huit éléments.

‍À droite : AlphaDev a constaté que seul max (B, min (A, C)) est nécessaire lors de l'utilisation de son déplacement de copie.

Le principal avantage de ce système est que son processus de formation ne nécessite aucun exemple de code. Au lieu de cela, le système génère de manière autonome des exemples de code, puis les évalue. Ce faisant, il maîtrise progressivement les informations sur l’enchaînement efficace des combinaisons d’instructions.

Du tri au hachage

Après avoir découvert un algorithme de tri plus rapide, DeepMind a testé si AlphaDev pouvait généraliser et améliorer un autre algorithme informatique : le hachage.

Le hachage est un algorithme fondamental utilisé en informatique pour récupérer, stocker et compresser des données. Tout comme un bibliothécaire qui utilise un système de classification pour localiser un livre particulier, les algorithmes de hachage aident les utilisateurs à savoir ce qu'ils recherchent et où le trouver. Ces algorithmes prennent les données d'une clé spécifique (par exemple, le nom d'utilisateur "Jane Doe") et les hachent - un processus qui convertit les données brutes en une chaîne unique (par exemple 1234ghfty). Cet algorithme de hachage est utilisé pour récupérer rapidement les données liées à une clé, évitant ainsi d'avoir à rechercher dans l'intégralité des données.

DeepMind applique AlphaDev à l'un des algorithmes de hachage les plus couramment utilisés dans les structures de données dans le but de découvrir des algorithmes plus rapides. AlphaDev a découvert que l'algorithme était 30 % plus rapide lorsque la fonction de hachage utilisait des données comprises entre 9 et 16 octets.

Cette année, le nouvel algorithme de hachage d'AlphaDev a été publié dans la bibliothèque open source Abseil, disponible pour des millions de développeurs à travers le monde, et la bibliothèque est désormais utilisée des milliards de fois chaque jour.

Code de travail réel

Les mécanismes de tri dans les programmes complexes peuvent gérer de grandes collections d'entrées arbitraires. Mais au niveau de la bibliothèque standard, cette capacité provient d'une série de fonctions spécifiques très restreintes. Chacune de ces fonctions ne peut gérer qu’une ou quelques situations. Par exemple, certains algorithmes individuels ne peuvent trier que 3, 4 ou 5 éléments. Nous pouvons trier n'importe quel nombre d'entrées à l'aide d'un ensemble de fonctions, mais nous ne pouvons trier que jusqu'à 4 entrées par appel de fonction.

AlphaDev a été implémenté par DeepMind sur chaque fonction, mais ses méthodes de fonctionnement réelles diffèrent considérablement. Il est possible d'écrire du code sans instructions de branchement pour gérer une fonction qui gère un nombre spécifique d'entrées, c'est-à-dire exécuter un code différent en fonction de l'état de la variable. Les performances du code ont donc tendance à être inversement proportionnelles au nombre d’instructions impliquées.

AlphaDev a réussi à réduire d'une le nombre d'instructions dans les tris 3, 5 et 8, et encore plus dans les tris 6 et 7. Aucun moyen d'améliorer le code existant n'a pu être trouvé uniquement sur sort-4. Des tests répétés sur des systèmes réels montrent que moins d'instructions améliorent les performances.

Pour trier un nombre variable d'entrées, vous devez inclure des instructions de branche dans votre code, et différents processeurs ont un nombre différent de composants dédiés à la gestion de ces branches.

Les chercheurs ont utilisé 100 appareils informatiques différents pour évaluer cette situation. AlphaDev a également trouvé des moyens de réduire davantage les performances dans ce type de scénario. Prenons comme exemple une fonction qui trie jusqu'à 4 éléments à la fois pour voir comment elle fonctionne.

Dans l'implémentation actuelle de la bibliothèque C++, le code doit effectuer une série de tests pour confirmer combien d'éléments doivent être triés, puis appeler la fonction de tri correspondante en fonction du nombre d'éléments.

Le code modifié d'AlphaDev adopte une idée plus "magique" : il teste d'abord s'il y a 2 entrées, et si c'est le cas, appelle la fonction correspondante pour trier immédiatement. Si le nombre est supérieur à 2, le code triera en premier les 3 premières entrées. De cette façon, s'il n'y a effectivement que 3 entrées, les résultats triés sont renvoyés. Puisqu'il y a en réalité 4 éléments à trier, AlphaDev exécutera un code spécialisé pour insérer le 4ème élément à la position appropriée parmi les 3 premiers éléments qui ont été triés de manière très efficace.

Cette approche semble un peu bizarre, mais il s'avère que ses performances sont toujours meilleures que le code existant.

Étant donné qu'AlphaDev génère du code plus efficace, l'équipe de recherche prévoit de fusionner à nouveau ces résultats dans la bibliothèque C++ standard LLVM. Mais le problème est que le code est au format assembleur, pas en C++. Par conséquent, ils doivent travailler à rebours pour trouver le code C++ qui génère le même assembly.

Une version réécrite de cette phrase : Cette partie du code a désormais été intégrée à la chaîne d'outils LLVM et mise à jour pour la première fois depuis près d'une décennie. Les chercheurs estiment que le nouveau code généré par AlphaDev est exécuté des milliards de fois chaque jour.

Conclusion

C'est tellement bon ! Nous, les programmeurs, avons appris cette tâche de tri de base il y a longtemps, mais nous sommes désormais 70 % plus rapides. Il y a de quoi être enthousiasmé car l’IA dans les algorithmes et les bibliothèques sur lesquels nous comptons tous offre des accélérations significatives. "Certains développeurs sont enthousiasmés par les résultats de Google DeepMind.

Mais certains développeurs n'y ont pas adhéré : "Assez décevant... 1,7% d'amélioration ? 70% de la séquence de 5 éléments ? Probablement la recherche appliquée la plus impopulaire et la plus irréaliste..." Certains développeurs ont dit : "N'est-ce pas un peu trompeur de dire qu'un nouvel algorithme a été découvert ? Cela ressemble plus à une optimisation d'algorithme quand même. "

Lien de référence :

https://arstechnica.com/science/2023/06/googles-deepmind-develops-a-system-that-writes-efficient-algorithms/

https://www.deepmind.com/blog/alphadev-discovers-faster-sorting-algorithms

Profondeur : Pourquoi un géant comme Snowflake n’a-t-il pas émergé dans le domaine des bases de données en Chine ?

L'effondrement le plus bizarre depuis dix-sept ans ! Afin d'empêcher OpenAI et Google d'obtenir des données pour rien, Reddit a facturé d'énormes frais d'API et calomnié les développeurs, provoquant des protestations à grande échelle au sein de la communauté

« Voler » du code pour créer une entreprise, falsifier des diplômes universitaires et gagner 100 millions de dollars en 6 jours sans recevoir de salaires en souffrance. Ce PDG de licorne IA a répondu personnellement après avoir été interrogé à plusieurs reprises

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment désactiver les services de maintenance automatique dans le système Windows 10? Comment désactiver les services de maintenance automatique dans le système Windows 10? Sep 25, 2025 am 11:09 AM

Le système Windows 10 est livré avec une fonction de maintenance automatique, qui peut effectuer des tâches de maintenance sur le système en fonction de la durée définie, telles que les mises à jour du système ou la défragmentation du disque. Par défaut, la maintenance automatique de Windows 10 est activée. Cependant, dans certains cas, nous pouvons préférer gérer ces opérations de maintenance par nous-mêmes pour mieux contrôler l'équipement. Alors, comment puis-je désactiver le service de maintenance automatique de Windows 10? Ensuite, jetons un coup d'œil aux étapes spécifiques ensemble, j'espère que ce sera utile à tout le monde. La méthode spécifique pour désactiver la fonction de maintenance automatique dans Win10 est la suivante: Étape 1, appuyez sur les touches Win et R en même temps pour ouvrir la fenêtre en cours d'exécution. Après être entré Regedit, cliquez sur OK ou appuyez sur Entrée; Étape 2: Si le contrôle du compte utilisateur est ajouté

Comment bloquer tous les cookies par Safari Browser_Safari Browser désactiver complètement les paramètres des cookies Comment bloquer tous les cookies par Safari Browser_Safari Browser désactiver complètement les paramètres des cookies Sep 25, 2025 am 10:06 AM

La désactivation de tous les cookies améliore la protection de la vie privée Safari. L'onglet de confidentialité dans vos préférences vérifiez "Bloquer tous les cookies" pour obtenir un arrêt global; ou utilisez le mode de navigation invisible pour bloquer temporairement le stockage des cookies et effacer automatiquement les données après la fermeture de la fenêtre; Il peut également combiner la compensation des cookies existants et permettre à la fonction de blocage d'éliminer complètement la rétention historique et future des cookies.

Écran bleu Win10: noyau Écran bleu Win10: noyau Sep 25, 2025 am 10:48 AM

Tout le monde sait qu'il existe de nombreux types de phénomènes d'écran bleu dans Windows 10. Lorsque l'écran bleu se produit, beaucoup de gens ne savent souvent pas comment y faire face. Étant donné que la plupart du code affiché sur l'écran bleu est obscur et difficile à comprendre, de nombreux utilisateurs sont confus et difficiles à résoudre le problème par eux-mêmes. Aujourd'hui, parlons de la façon de gérer efficacement le code de l'écran bleu Kernel_Security_Check_Failure. Ce code d'écran bleu indique généralement qu'il y a des problèmes avec le pilote, et les erreurs les plus courantes sont les cartes réseau et les pilotes graphiques. Les raisons de l'écran bleu de la cochée du noyau-cocheur peuvent être les suivantes: il existe des problèmes de compatibilité avec les pilotes de carte réseau. La version du pilote de carte graphique ne correspond pas ou est endommagée. En réponse à cette situation,

Comment effacer les données d'un seul site Web par Google Chrome_chrome efface les cookies et les méthodes de cache pour des sites spécifiques Comment effacer les données d'un seul site Web par Google Chrome_chrome efface les cookies et les méthodes de cache pour des sites spécifiques Sep 26, 2025 pm 01:03 PM

Les données de sites Web spécifiques de Google Chrome peuvent être effacées avec précision via les paramètres du site. Visitez d'abord le site Web Target, cliquez sur l'icône de verrouillage dans la barre d'adresse pour saisir "Paramètres du site Web" et sélectionnez "Effacer les données" pour supprimer ses cookies et son cache; Si vous ne pouvez pas accéder au site Web, vous pouvez saisir les paramètres de Chrome → Confidentialité et sécurité → Paramètres du site → Afficher toutes les données du site et les supprimer manuellement après la recherche du nom de domaine; Vous pouvez également localiser et effacer directement les données spécifiques du site en entrant le raccourci de chrome: // paramètres / sitedata? Searchterms = pour atteindre une gestion efficace et précise.

Comment empêcher Google Chrome d'afficher des images_collection des images dans les paramètres de contenu chromé pour enregistrer le trafic Comment empêcher Google Chrome d'afficher des images_collection des images dans les paramètres de contenu chromé pour enregistrer le trafic Sep 25, 2025 am 10:12 AM

1. Vous pouvez configurer à l'échelle mondiale via Chrome ou bloquer les images du chargement pour des sites Web spécifiques pour enregistrer le trafic et améliorer la vitesse de chargement. 2. Entrez "Paramètres du site Web" dans "Privacy and Security", sélectionnez "Images" et définissez "Don't Afficher des images" pour être désactivé dans le monde. 3. Pour des sites Web spécifiques, vous pouvez cliquer sur l'icône de verrouillage dans la barre d'adresse et saisir les "paramètres du site Web" pour modifier l'option "Image" en "Bloquer". 4. La visualisation temporaire des images peut être restaurée pour se charger à l'aide du mode sans trace (décalage de commande de clé de raccourci N), ou retourner à la page d'origine pour réinitialiser l'autorisation de "permettre".

Comment définir le navigateur 360 sur IE noyau? Comment forcer le mode de compatibilité IE pour utiliser 360 navigateur Comment définir le navigateur 360 sur IE noyau? Comment forcer le mode de compatibilité IE pour utiliser 360 navigateur Sep 26, 2025 pm 12:27 PM

Tout d'abord, passez au mode de compatibilité IE pour résoudre le problème de l'affichage Web anormal. Les opérations spécifiques comprennent: la commutation manuelle des noyaux via l'icône de la foudre de la barre d'adresse; Ajouter des sites Web à la liste des mode de compatibilité pour réaliser l'adaptation automatique; ou la personnalisation des règles dans des paramètres avancés pour forcer des URL spécifiques à utiliser des noyaux IE, améliorant ainsi la compatibilité.

Comment définir la page de démarrage sur plusieurs pages Web dans Chrome Browser_Open plusieurs pages Web en même temps lors du démarrage Comment définir la page de démarrage sur plusieurs pages Web dans Chrome Browser_Open plusieurs pages Web en même temps lors du démarrage Sep 25, 2025 am 10:15 AM

Vous pouvez définir la page de démarrage pour charger automatiquement plusieurs pages Web lorsque vous démarrez le navigateur Chrome. Tout d'abord, sélectionnez "Ouvrir la page Web spécifique" dans "Paramètres-startup", cliquez sur "Ajouter une nouvelle page Web" pour entrer l'URL et l'enregistrer; Deuxièmement, ajoutez des pages Web communes au dossier "Startup Page" dans la barre de signets et restaurez-le en un clic en cliquant avec le bouton droit "Ouvrez tous les signets dans la nouvelle page d'onglet". De plus, vous pouvez également installer des extensions telles que "SessionBuddy" pour enregistrer la session et restaurer automatiquement le groupe de pages spécifié au démarrage pour améliorer l'efficacité.

Comment activer le mode de lecture par 360 Browser_360 BROWNER MODE IMMERSIVE MODE Activation Tutoriel Comment activer le mode de lecture par 360 Browser_360 BROWNER MODE IMMERSIVE MODE Activation Tutoriel Sep 28, 2025 am 10:21 AM

Le navigateur 360 peut activer le mode de lecture via des icônes de barre d'adresse, des touches de raccourci F9 ou des options de menu, extraire automatiquement des articles et optimiser la composition, offrant une expérience de lecture immersive sans interférence.

See all articles