Table des matières
1 Comment fonctionne MLGO ?
2 Allocation de registre
3 Résumé
Maison Périphériques technologiques IA Réduction de la mémoire de 3 % à 7 % ! Google propose un framework d'apprentissage automatique MLGO pour l'optimisation du compilateur

Réduction de la mémoire de 3 % à 7 % ! Google propose un framework d'apprentissage automatique MLGO pour l'optimisation du compilateur

May 01, 2023 pm 01:19 PM
谷歌 机器学习 神经网络

Avec la naissance des ordinateurs modernes, le problème de savoir comment compiler du code plus rapide et plus petit est apparu.

L'optimisation de la compilation est la méthode d'optimisation présentant le rapport coût-bénéfice le plus élevé. Une meilleure optimisation du code peut réduire considérablement les coûts d'exploitation des grandes applications de centres de données. La taille du code compilé est essentielle pour les systèmes ou logiciels mobiles et embarqués déployés sur une partition de démarrage sécurisée, car les binaires compilés doivent respecter des budgets stricts en matière de taille de code. À mesure que le domaine progresse, des heuristiques de plus en plus complexes réduisent considérablement l'espace limité du système, entravant la maintenance et les améliorations ultérieures.

Des recherches récentes montrent que l'apprentissage automatique peut ouvrir davantage d'opportunités en matière d'optimisation du compilateur en remplaçant les heuristiques complexes par des stratégies d'apprentissage automatique. Cependant, l’adoption de stratégies d’apprentissage automatique dans des compilateurs industriels à usage général reste un défi.

Afin de résoudre ce problème, deux ingénieurs senior de Google, Yundi Qian et Mircea Trofin, ont proposé "MLGO, un framework d'optimisation de compilateur guidé par l'apprentissage automatique". Il s'agit du premier framework général de conversion d'apprentissage automatique de qualité industrielle. Ces techniques sont systématiquement intégrées dans LLVM, une infrastructure de compilateur industriel open source omniprésente dans la création de logiciels critiques et hautes performances.

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

Adresse papier : https://arxiv.org/pdf/2101.04808.pdf

MLGO utilise l'apprentissage par renforcement pour entraîner les réseaux de neurones à prendre des décisions visant à remplacer les algorithmes heuristiques dans LLVM. Selon la description de l'auteur, il existe deux optimisations MLGO sur LLVM :

1) Réduisez la taille du code grâce à l'inline ;

2) Améliorez les performances du code grâce à l'allocation de registres ;

Les deux optimisations sont disponibles dans le référentiel LLVM et ont été déployées en production.

1 Comment fonctionne MLGO ?

Inlining aide à réduire la taille du code en prenant des décisions qui suppriment le code redondant. Dans l'exemple ci-dessous, la fonction appelante ​<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;">​<span style="font-size: 15px;">foo()</span>​调用被调用者函数 ​<span style="font-size: 15px;">bar()</span>​,而 ​<span style="font-size: 15px;">bar()</span>​本身又调用了 ​<span style="font-size: 15px;">baz()</span>​。内联这两个调用站点将返回一个简单的 ​<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;">​<span style="font-size: 15px;">foo()</span>​foo()​Appelez la fonction appelée

​<p style="text-align: center;">bar()<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168291834816871.png" class="lazy" alt="内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO">​</p>​, tandis que

​<span style="font-size: 12px;">bar()<span style="color: #888888;">​ code>​</span> appelle lui-même </span>​<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border -radius: 6px ; hauteur de ligne : hériter ; overflow-wrap : break-word ; text-indent : 0px;">​

baz()🎜​​🎜. L'intégration de ces deux sites d'appel renverra un simple 🎜​​🎜foo()🎜​​🎜, qui réduira la taille du code. 🎜🎜🎜🎜🎜🎜🎜🎜Légende : L'inlining réduit la taille du code en supprimant le code redondant🎜🎜🎜

Dans le code réel, il existe des milliers de fonctions qui s'appellent les unes les autres, formant ainsi un graphe d'appel. Pendant la phase d'intégration, le compilateur parcourt le graphe d'appel de toutes les paires appelant-appelé et décide s'il doit intégrer une paire appelant-appelé. Il s'agit d'un processus décisionnel continu, car les décisions d'intégration précédentes modifieront le graphique d'appel, affectant les décisions ultérieures et le résultat final. Dans l'exemple ci-dessus, le graphe d'appel ​<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;">​<span style="font-size: 15px;">foo()</span>​ → ​<span style="font-size: 15px;">bar()</span>​ → ​<span style="font-size: 15px;">baz()</span>​foo()​ →

​<p style="text-align: justify;">bar()<span style="font-size: 15px;">​</span></p>​ → ​​<p style="text-align: center;">baz()<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168291834817462.gif" class="lazy" alt="内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO">​</p>​ Une décision « oui » doit être prise des deux côtés pour réduire la taille du code.

Avant MLGO, les décisions en ligne/non en ligne étaient prises par des heuristiques qui devenaient de plus en plus difficiles à améliorer au fil du temps. MLGO remplace l'heuristique par un modèle d'apprentissage automatique. Pendant le parcours du graphe d'appel, le compilateur recherche les recommandations du réseau neuronal sur l'opportunité d'intégrer une paire appelant-appelé spécifique via des fonctionnalités pertinentes (c'est-à-dire des entrées) dans le graphe d'entrée, et exécute les décisions séquentiellement jusqu'à ce que l'intégralité du graphe d'appel soit terminée. est atteint.

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGOIllustration : Illustration de MLGO pendant le processus d'inline, "#bbs", "#users" et "callsite height" sont des instances de propriétés de paire appelant-appelé

MLGO utilise le gradient de politique et l'évolution algorithmes de politique pour la formation RL des réseaux de décision. Bien qu'il n'existe pas de vérité fondamentale sur les décisions optimales, RL en ligne utilise une politique entraînée itérant entre la formation et l'exécution de l'assemblage pour collecter des données et améliorer la politique. En particulier, étant donné le modèle actuellement en formation, le compilateur consulte le modèle pendant la phase d'inline pour prendre une décision en ligne/non en ligne. Après compilation, il produit un journal du processus de décision séquentiel (statut, action, récompense). Ce journal est ensuite transmis au formateur pour mettre à jour le modèle. Ce processus est répété jusqu'à l'obtention d'un modèle satisfaisant.

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGOLégende : Comportement du compilateur pendant la formation

- Le compilateur compile le code source foo.cpp dans le fichier objet foo.o et effectue une série d'optimisations, dont l'une est la route de communication en ligne. La politique formée est intégrée au compilateur, fournissant des décisions en ligne/non en ligne pendant le processus de compilation. Contrairement au scénario de formation, cette stratégie ne génère pas de journaux. Les modèles TensorFlow sont intégrés dans XLA AOT, qui convertit le modèle en code exécutable. Cela évite les dépendances et les frais d'exécution de TensorFlow, minimisant ainsi le temps supplémentaire et les coûts de mémoire introduits par l'inférence du modèle ML au moment de la compilation.

Légende : Comportement du compilateur en production 🎜🎜🎜🎜🎜 Nous avons formé la stratégie d'inline grande et petite sur un grand package interne contenant 30 000 modules. La stratégie formée peut être généralisée lors de la compilation d'autres logiciels et réduit la surcharge de temps et de mémoire de 3 % à 7 %. 🎜En plus de la généralité entre les logiciels, la généralité dans le temps est également importante, les logiciels et les compilateurs sont en cours de développement actif, une stratégie bien entraînée est donc nécessaire pour maintenir de bonnes performances dans un laps de temps raisonnable. Nous avons évalué les performances du modèle sur le même ensemble de logiciels après trois mois et n'avons constaté qu'une légère dégradation. 🎜🎜

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

Graphique : Pourcentage de réduction de la taille de la stratégie de taille en ligne, l'axe des x représente différents logiciels et l'axe des y représente le pourcentage de réduction. « Training » est le logiciel qui entraîne le modèle, et « InfraX » est un progiciel interne différent.

La formation de redimensionnement en ligne de MLGO a été déployée sur Fuchsia, un système d'exploitation open source à usage général conçu pour alimenter divers écosystèmes matériels et logiciels où la taille binaire est essentielle. Ici, MLGO montre une réduction de 6,3 % de la taille de l’unité de traduction C++.

2 Allocation de registre

En tant que cadre général, nous utilisons MLGO pour améliorer le canal d'allocation de registre (allocation de registre) afin d'améliorer les performances du code dans LLVM. L'allocation de registres résout le problème de l'allocation de registres physiques aux étendues actives (c'est-à-dire les variables).

Au fur et à mesure que le code est exécuté, différentes plages en direct sont complétées à différents moments et les registres sont libérés pour être utilisés dans les étapes de traitement ultérieures. Dans l'exemple suivant, chaque instruction « ajouter » et « multiplier » nécessite que tous les opérandes et résultats se trouvent dans des registres physiques. La plage en temps réel x est affectée au registre vert et se termine avant la plage en temps réel du registre bleu ou jaune. Une fois x terminé, le registre vert devient disponible et attribué à la plage en direct t.

Pendant l'exécution du code, différentes plages en direct sont complétées à différents moments et les registres publiés sont utilisés dans les étapes de traitement ultérieures. Dans l'exemple ci-dessous, chaque instruction « ajouter » et « multiplier » nécessite que tous les opérandes et résultats se trouvent dans des registres physiques. La plage active x est affectée au registre vert et se termine avant la plage active du registre bleu ou jaune. Une fois x terminé, le registre vert devient disponible et est affecté à la plage en direct t .

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

Légende : Exemple d'allocation de registre

Lorsque la plage active q est allouée, aucun registre n'est disponible, le canal d'allocation de registre doit donc décider quelle plage active peut être "expulsée" de ses registres afin que Faites de la place pour q. C'est ce qu'on appelle le problème de « l'expulsion du terrain », et c'est là que nous entraînons le modèle pour remplacer la décision de l'heuristique d'origine. Dans cet exemple, il expulse z du registre jaune et l'attribue à q et à la première moitié de z.

Nous considérons maintenant la moitié inférieure non allouée de la plage z réelle. Nous avons un autre conflit, cette fois la plage active t est expulsée et divisée, la première moitié de t et la dernière partie de z finissent par utiliser le registre vert. La partie médiane de Z correspond à l'instruction q = t * y, où z n'est pas utilisé, il n'est donc alloué à aucun registre, et sa valeur est stockée dans la pile du registre jaune et est ensuite rechargée dans le registre vert . La même chose se produit avec t. Cela ajoute des instructions de chargement/stockage supplémentaires au code, réduisant ainsi les performances. Le but de l’algorithme d’allocation de registre est de minimiser cette inefficacité. Ceci est utilisé comme récompense pour guider la formation politique RL.

Semblable à la politique de dimensionnement en ligne, la politique d'allocation de registre (regalloc-for-Performance) a été formée sur un grand progiciel au sein de Google et peut être généralisée à différents logiciels et appliquée dans un ensemble de grands centres de données internes. des requêtes par seconde (QPS) sur le programme ont augmenté de 0,3 % à 1,5 %. Les améliorations du QPS ont persisté pendant plusieurs mois après le déploiement, démontrant la généralisabilité du modèle.

3 Résumé

MLGO utilise l'apprentissage par renforcement pour entraîner les réseaux de neurones à prendre des décisions. Il s'agit d'une stratégie d'apprentissage automatique qui remplace les méthodes heuristiques complexes. En tant que cadre général de qualité industrielle, il sera plus approfondi et plus largement utilisé dans davantage d'environnements que la simple intégration et l'allocation de registres.

MLGO peut être développé pour être : 1) plus profond, comme l'ajout de plus de fonctionnalités et l'application de meilleurs algorithmes RL ; 2) plus large, étant capable d'appliquer davantage d'heuristiques d'optimisation au-delà des méthodes d'intégration et de redistribution.

Les auteurs sont enthousiasmés par les possibilités que MLGO peut apporter au domaine de l'optimisation des compilateurs et attendent avec impatience son adoption ultérieure et ses futures contributions de la communauté des chercheurs.

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment commenter Deepseek Comment commenter Deepseek Feb 19, 2025 pm 05:42 PM

Deepseek est un puissant outil de récupération d'informations. .

Comment rechercher Deepseek Comment rechercher Deepseek Feb 19, 2025 pm 05:39 PM

Deepseek est un moteur de recherche propriétaire qui ne recherche que dans une base de données ou un système spécifique, plus rapide et plus précis. Lorsque vous l'utilisez, il est conseillé aux utilisateurs de lire le document, d'essayer différentes stratégies de recherche, de demander de l'aide et des commentaires sur l'expérience utilisateur afin de tirer le meilleur parti de leurs avantages.

Sesame Open Door Exchange Page d'enregistrement de page Enregistrement Gate Trading App The Registration Site Web Sesame Open Door Exchange Page d'enregistrement de page Enregistrement Gate Trading App The Registration Site Web Feb 28, 2025 am 11:06 AM

Cet article présente le processus d'enregistrement de la version Web de Sesame Open Exchange (GATE.IO) et l'application Gate Trading en détail. Qu'il s'agisse de l'enregistrement Web ou de l'enregistrement de l'application, vous devez visiter le site Web officiel ou l'App Store pour télécharger l'application authentique, puis remplir le nom d'utilisateur, le mot de passe, l'e-mail, le numéro de téléphone mobile et d'autres informations et terminer la vérification des e-mails ou du téléphone mobile.

Pourquoi le lien d'échange de Bybit ne peut-il pas être téléchargé directement et installé? Pourquoi le lien d'échange de Bybit ne peut-il pas être téléchargé directement et installé? Feb 21, 2025 pm 10:57 PM

Pourquoi le lien d'échange de Bybit ne peut-il pas être téléchargé directement et installé? Bybit est un échange de crypto-monnaie qui fournit des services de trading aux utilisateurs. Les applications mobiles de l'échange ne peuvent pas être téléchargées directement via AppStore ou GooglePlay pour les raisons suivantes: 1. La politique de l'App Store empêche Apple et Google d'avoir des exigences strictes sur les types d'applications autorisées dans l'App Store. Les demandes d'échange de crypto-monnaie ne répondent souvent pas à ces exigences car elles impliquent des services financiers et nécessitent des réglementations et des normes de sécurité spécifiques. 2. Conformité des lois et réglementations Dans de nombreux pays, les activités liées aux transactions de crypto-monnaie sont réglementées ou restreintes. Pour se conformer à ces réglementations, l'application ByBit ne peut être utilisée que via des sites Web officiels ou d'autres canaux autorisés

Sesame Open Door Trading Platform Download Version mobile Gateio Trading Plateforme de téléchargement Adresse de téléchargement Sesame Open Door Trading Platform Download Version mobile Gateio Trading Plateforme de téléchargement Adresse de téléchargement Feb 28, 2025 am 10:51 AM

Il est crucial de choisir un canal formel pour télécharger l'application et d'assurer la sécurité de votre compte.

Top 10 recommandé pour l'application de trading d'actifs numériques crypto (2025 Global Ranking) Top 10 recommandé pour l'application de trading d'actifs numériques crypto (2025 Global Ranking) Mar 18, 2025 pm 12:15 PM

Cet article recommande les dix principales plates-formes de trading de crypto-monnaie qui méritent d'être prêtées, notamment Binance, Okx, Gate.io, Bitflyer, Kucoin, Bybit, Coinbase Pro, Kraken, Bydfi et Xbit décentralisées. Ces plateformes ont leurs propres avantages en termes de quantité de devises de transaction, de type de transaction, de sécurité, de conformité et de fonctionnalités spéciales. Le choix d'une plate-forme appropriée nécessite une considération complète en fonction de votre propre expérience de trading, de votre tolérance au risque et de vos préférences d'investissement. J'espère que cet article vous aide à trouver le meilleur costume pour vous-même

Binance Binance Site officiel Dernière version Portail de connexion Binance Binance Site officiel Dernière version Portail de connexion Feb 21, 2025 pm 05:42 PM

Pour accéder à la dernière version du portail de connexion du site Web de Binance, suivez simplement ces étapes simples. Accédez au site officiel et cliquez sur le bouton "Connectez-vous" dans le coin supérieur droit. Sélectionnez votre méthode de connexion existante. Entrez votre numéro de mobile ou votre mot de passe enregistré et votre mot de passe et complétez l'authentification (telles que le code de vérification mobile ou Google Authenticator). Après une vérification réussie, vous pouvez accéder à la dernière version du portail de connexion du site Web officiel de Binance.

La dernière adresse de téléchargement de Bitget en 2025: étapes pour obtenir l'application officielle La dernière adresse de téléchargement de Bitget en 2025: étapes pour obtenir l'application officielle Feb 25, 2025 pm 02:54 PM

Ce guide fournit des étapes de téléchargement et d'installation détaillées pour l'application officielle Bitget Exchange, adaptée aux systèmes Android et iOS. Le guide intègre les informations de plusieurs sources faisant autorité, y compris le site officiel, l'App Store et Google Play, et met l'accent sur les considérations pendant le téléchargement et la gestion des comptes. Les utilisateurs peuvent télécharger l'application à partir des chaînes officielles, y compris l'App Store, le téléchargement officiel du site Web APK et le saut de site Web officiel, ainsi que des paramètres d'enregistrement, de vérification d'identité et de sécurité. De plus, le guide couvre les questions et considérations fréquemment posées, telles que

See all articles