Inhaltsverzeichnis
1 Wie funktioniert MLGO?
2 Registerzuordnung
3 Zusammenfassung
Heim Technologie-Peripheriegeräte KI Speicherreduzierung um 3–7 %! Google schlägt das Machine-Learning-Framework MLGO zur Compiler-Optimierung vor

Speicherreduzierung um 3–7 %! Google schlägt das Machine-Learning-Framework MLGO zur Compiler-Optimierung vor

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

Mit der Geburt moderner Computer tauchte das Problem auf, wie man schnelleren und kleineren Code kompilieren kann.

Kompilierungsoptimierung ist die Optimierungsmethode mit dem höchsten Kosten-Nutzen-Verhältnis. Eine bessere Codeoptimierung kann die Betriebskosten großer Rechenzentrumsanwendungen erheblich senken. Die Größe des kompilierten Codes ist für mobile und eingebettete Systeme oder Software, die auf einer sicheren Boot-Partition bereitgestellt wird, von entscheidender Bedeutung, da kompilierte Binärdateien strenge Budgets für die Codegröße einhalten müssen. Mit der Weiterentwicklung des Fachgebiets wird der begrenzte Systemraum durch immer komplexere Heuristiken stark eingeschränkt, was die Wartung und weitere Verbesserungen erschwert.

Neueste Forschungsergebnisse zeigen, dass maschinelles Lernen mehr Möglichkeiten bei der Compileroptimierung eröffnen kann, indem komplexe Heuristiken durch maschinelle Lernstrategien ersetzt werden. Allerdings bleibt die Einführung maschineller Lernstrategien in universell einsetzbaren Compilern auf Industrieniveau eine Herausforderung.

Um dieses Problem zu lösen, schlugen zwei leitende Ingenieure bei Google, Yundi Qian und Mircea Trofin, „MLGO, ein durch maschinelles Lernen gesteuertes Compiler-Optimierungsframework“ vor. Dies ist das erste allgemeine Framework in Industriequalität für die Konvertierung von maschinellem Lernen Techniken werden systematisch in LLVM integriert, eine industrielle Open-Source-Compiler-Infrastruktur, die bei der Entwicklung geschäftskritischer Hochleistungssoftware allgegenwärtig ist.

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

Papieradresse: https://arxiv.org/pdf/2101.04808.pdf

MLGO nutzt Reinforcement Learning, um neuronale Netze zu trainieren, Entscheidungen zu treffen und heuristische Algorithmen in LLVM zu ersetzen. Laut Beschreibung des Autors gibt es zwei MLGO-Optimierungen für LLVM:

1) Reduzieren Sie die Codegröße durch Inlining.

2) Verbessern Sie die Codeleistung durch Registerzuweisung.

Beide Optimierungen sind im LLVM-Repository verfügbar und wurden in der Produktion eingesetzt.

1 Wie funktioniert MLGO?

Inlining hilft, die Codegröße zu reduzieren, indem es Entscheidungen trifft, die redundanten Code entfernen. Im folgenden Beispiel ist die Aufruferfunktion ​<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()​Aufgerufene Funktion

​<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">​ code>​</p> selbst ruft <p style="max-width:90%">​<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border -radius: 6px auf ; line-height: inherit; overflow-wrap: break-word;">​<span style="font-size: 12px;">baz()<span style="color: #888888;">​</span></span>​ Durch das Inlining dieser beiden Aufrufseiten wird ein einfacher Code zurückgegeben: radius: 6px; line-height: inherit; overflow-wrap: break-word;">​foo()

​​🎜 Funktion, die die Codegröße reduziert. 🎜🎜🎜🎜🎜🎜🎜🎜Bildunterschrift: Inlining reduziert die Codegröße durch Entfernen redundanten Codes🎜🎜🎜

Im tatsächlichen Code gibt es Tausende von Funktionen, die sich gegenseitig aufrufen und so einen Aufrufgraphen bilden. Während der Inlining-Phase durchläuft der Compiler den Aufrufgraphen aller Anrufer-Angerufenen-Paare und entscheidet, ob ein Anrufer-Angerufener-Paar inline wird. Dies ist ein kontinuierlicher Entscheidungsprozess, da frühere Inlining-Entscheidungen das Aufrufdiagramm ändern und sich auf nachfolgende Entscheidungen und das Endergebnis auswirken. Im obigen Beispiel ist das Aufrufdiagramm ​<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>​ Um die Codegröße gering zu halten, muss auf beiden Seiten eine „Ja“-Entscheidung getroffen werden.

Vor MLGO wurden Inline-/Nicht-Inline-Entscheidungen durch Heuristiken getroffen, deren Verbesserung mit der Zeit immer schwieriger wurde. MLGO ersetzt Heuristiken durch ein maschinelles Lernmodell. Während des Durchlaufens des Anrufdiagramms sucht der Compiler nach den Empfehlungen des neuronalen Netzwerks, ob ein bestimmtes Anrufer-Anrufer-Paar über relevante Merkmale (d. h. Eingaben) in das Eingabediagramm integriert werden soll, und führt die Entscheidungen nacheinander aus, bis das gesamte Anrufdiagramm erreicht ist erreicht ist.

Abbildung: Abbildung von MLGO während des Inlining-Prozesses, „#bbs“, „#users“ und „callsite height“ sind Beispiele für Anrufer-Anrufer-Paareigenschaften内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

MLGO verwendet Richtliniengradienten und Evolution Richtlinienalgorithmen für das RL-Training von Entscheidungsnetzwerken. Während es keine grundlegende Wahrheit über optimale Entscheidungen gibt, verwendet Online-RL eine trainierte Richtlinie, die zwischen Training und laufender Montage iteriert, um Daten zu sammeln und die Richtlinie zu verbessern. Insbesondere angesichts des aktuell im Training befindlichen Modells konsultiert der Compiler das Modell während der Inlining-Phase, um eine Inline/Nicht-Inline-Entscheidung zu treffen. Nach der Kompilierung wird ein Protokoll des sequentiellen Entscheidungsprozesses (Status, Aktion, Belohnung) erstellt. Dieses Protokoll wird dann an den Trainer weitergeleitet, um das Modell zu aktualisieren. Dieser Vorgang wird wiederholt, bis ein zufriedenstellendes Modell vorliegt.

Bildunterschrift: Compiler-Verhalten während des Trainings 内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO

– Der Compiler kompiliert den Quellcode foo.cpp in die Objektdatei foo.o und führt eine Reihe von Optimierungen durch, darunter die Inline-Kommunikationsstraße.

Die trainierte Richtlinie ist in den Compiler eingebettet und stellt während des Kompilierungsprozesses Inline-/Nicht-Inline-Entscheidungen bereit. Im Gegensatz zum Trainingsszenario werden bei dieser Strategie keine Protokolle generiert. TensorFlow-Modelle sind in XLA AOT eingebettet, das das Modell in ausführbaren Code umwandelt. Dies vermeidet TensorFlow-Laufzeitabhängigkeiten und Overhead und minimiert den zusätzlichen Zeit- und Speicheraufwand, der durch die ML-Modellinferenz zur Kompilierungszeit entsteht.

Bildunterschrift: Compilerverhalten in der Produktion

🎜🎜🎜🎜 Wir haben die große und kleine Inlining-Strategie an einem großen Inhouse-Paket mit 30.000 Modulen trainiert. Die trainierte Strategie kann beim Kompilieren anderer Software verallgemeinert werden und reduziert den Zeit- und Speicheraufwand um 3 % bis 7 %. 🎜Neben der Allgemeingültigkeit über die gesamte Software hinweg ist auch die Allgemeingültigkeit über die Zeit hinweg wichtig. Sowohl die Software als auch die Compiler befinden sich in der aktiven Entwicklung. Daher ist eine gut trainierte Strategie erforderlich, um eine gute Leistung in einem angemessenen Zeitraum aufrechtzuerhalten. Wir haben die Leistung des Modells mit derselben Software nach drei Monaten bewertet und nur eine leichte Verschlechterung festgestellt. 🎜🎜

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

Diagramm: Prozentuale Größenreduzierung der Inline-Größenstrategie, die x-Achse stellt unterschiedliche Software dar und die y-Achse stellt die prozentuale Reduzierung dar. „Training“ ist die Software, die das Modell trainiert, und „InfraX“ ist ein anderes internes Softwarepaket.

MLGOs Inline-Größenänderungsschulung wurde auf Fuchsia implementiert, einem universellen Open-Source-Betriebssystem, das für den Betrieb verschiedener Hardware- und Software-Ökosysteme entwickelt wurde, bei denen die Binärgröße von entscheidender Bedeutung ist. Hier zeigt MLGO eine Reduzierung der Größe der C++-Übersetzungseinheit um 6,3 %.

2 Registerzuordnung

Als allgemeines Framework verwenden wir MLGO, um den Registerzuordnungskanal (Registerzuordnung) zu verbessern und die Codeleistung in LLVM zu verbessern. Die Registerzuweisung löst das Problem der Zuweisung physischer Register zu aktiven Bereichen (d. h. Variablen).

Während der Code ausgeführt wird, werden verschiedene Live-Bereiche zu unterschiedlichen Zeiten abgeschlossen und die Register werden für die Verwendung in nachfolgenden Verarbeitungsstufen freigegeben. Im folgenden Beispiel erfordert jede „Addieren“- und „Multiplizieren“-Anweisung, dass sich alle Operanden und Ergebnisse in physischen Registern befinden. Der Echtzeitbereich x wird dem grünen Register zugewiesen und schließt vor dem Echtzeitbereich des blauen oder gelben Registers ab. Nachdem x abgeschlossen ist, wird das grüne Register verfügbar und dem Live-Bereich t zugewiesen.

Während der Codeausführung werden verschiedene Live-Bereiche zu unterschiedlichen Zeiten abgeschlossen und die freigegebenen Register werden in nachfolgenden Verarbeitungsstufen verwendet. Im folgenden Beispiel erfordert jede „Addieren“- und „Multiplizieren“-Anweisung, dass sich alle Operanden und Ergebnisse in physischen Registern befinden. Der aktive Bereich x wird dem grünen Register zugewiesen und endet vor dem aktiven Bereich des blauen oder gelben Registers. Nachdem x abgeschlossen ist, wird das grüne Register verfügbar und dem Live-Bereich t zugewiesen.

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

Bildunterschrift: Beispiel für die Registerzuordnung

Wenn der aktive Bereich q zugewiesen wird, sind keine Register verfügbar, sodass der Registerzuweisungskanal entscheiden muss, welcher aktive Bereich aus seinen Registern „verdrängt“ werden kann Machen Sie Platz für q. Dies wird als „Feldräumungsproblem“ bezeichnet und bei diesem trainieren wir das Modell, um die Entscheidung der ursprünglichen Heuristik zu ersetzen. In diesem Beispiel wird z aus dem gelben Register entfernt und es q und der ersten Hälfte von z zugewiesen.

Wir betrachten nun die nicht zugeordnete untere Hälfte des tatsächlichen Bereichs z. Wir haben einen weiteren Konflikt, dieses Mal wird der aktive Bereich t verdrängt und aufgeteilt, die erste Hälfte von t und der letzte Teil von z verwenden letztendlich das grüne Register. Der mittlere Teil von Z entspricht der Anweisung q = t * y, wobei z nicht verwendet wird, also keinem Register zugeordnet ist und sein Wert vom gelben Register im Stapel gespeichert und später wieder in das grüne Register geladen wird . Das Gleiche passiert mit t. Dadurch werden dem Code zusätzliche Lade-/Speicheranweisungen hinzugefügt und die Leistung verringert. Das Ziel des Registerzuordnungsalgorithmus besteht darin, diese Ineffizienz zu minimieren. Dies wird als Belohnung für die Schulung der RL-Richtlinien verwendet.

Ähnlich wie die Inline-Größenrichtlinie wurde die Registerzuordnungsrichtlinie (Regalloc-for-Performance) auf einem großen Softwarepaket innerhalb von Google trainiert und kann auf verschiedene Software verallgemeinert und in einer Reihe interner großer Rechenzentren angewendet werden der Abfragen pro Sekunde (QPS) im Programm ist um 0,3 % bis 1,5 % gestiegen. Die QPS-Verbesserungen blieben mehrere Monate nach der Bereitstellung bestehen, was die Generalisierbarkeit des Modells beweist.

3 Zusammenfassung

MLGO nutzt Reinforcement Learning, um neuronale Netze zu trainieren, Entscheidungen zu treffen. Es handelt sich um eine maschinelle Lernstrategie, die komplexe heuristische Methoden ersetzt. Als allgemeines industrietaugliches Framework wird es in mehr Umgebungen als nur Inlining und Registerzuweisung umfassender und weiter verbreitet sein.

MLGO kann wie folgt entwickelt werden: 1) tiefer, z. B. durch das Hinzufügen weiterer Funktionen und die Anwendung besserer RL-Algorithmen; 2) umfassender, sodass mehr Optimierungsheuristiken über die Inlining- und Umverteilungsmethode hinaus angewendet werden können.

Die Autoren sind begeistert von den Möglichkeiten, die MLGO im Bereich der Compiler-Optimierung bieten kann, und freuen sich auf seine weitere Einführung und zukünftige Beiträge aus der Forschungsgemeinschaft.

Das obige ist der detaillierte Inhalt vonSpeicherreduzierung um 3–7 %! Google schlägt das Machine-Learning-Framework MLGO zur Compiler-Optimierung vor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man Deepseek kommentiert Wie man Deepseek kommentiert Feb 19, 2025 pm 05:42 PM

Deepseek ist ein leistungsstarkes Informations -Abruf -Tool. .

So suchen Sie Deepseek So suchen Sie Deepseek Feb 19, 2025 pm 05:39 PM

Deepseek ist eine proprietäre Suchmaschine, die nur schneller und genauer in einer bestimmten Datenbank oder einem bestimmten System sucht. Bei der Verwendung wird den Benutzern empfohlen, das Dokument zu lesen, verschiedene Suchstrategien auszuprobieren, Hilfe und Feedback zur Benutzererfahrung zu suchen, um die Vorteile optimal zu nutzen.

Sesame Open Door Exchange -Webseite Registrierung Link Gate Trading App Registrierung Website Neueste Sesame Open Door Exchange -Webseite Registrierung Link Gate Trading App Registrierung Website Neueste Feb 28, 2025 am 11:06 AM

In diesem Artikel wird der Registrierungsprozess der Webversion Sesam Open Exchange (GATE.IO) und die Gate Trading App im Detail vorgestellt. Unabhängig davon, ob es sich um eine Webregistrierung oder eine App -Registrierung handelt, müssen Sie die offizielle Website oder den offiziellen App Store besuchen, um die Genuine App herunterzuladen, und dann den Benutzernamen, das Kennwort, die E -Mail, die Mobiltelefonnummer und die anderen Informationen eingeben und eine E -Mail- oder Mobiltelefonüberprüfung abschließen.

Warum kann der Bybit -Exchange -Link nicht direkt heruntergeladen und installiert werden? Warum kann der Bybit -Exchange -Link nicht direkt heruntergeladen und installiert werden? Feb 21, 2025 pm 10:57 PM

Warum kann der Bybit -Exchange -Link nicht direkt heruntergeladen und installiert werden? Bitbit ist eine Kryptowährungsbörse, die den Benutzern Handelsdienste anbietet. Die mobilen Apps der Exchange können aus den folgenden Gründen nicht direkt über AppStore oder Googleplay heruntergeladen werden: 1. App Store -Richtlinie beschränkt Apple und Google daran, strenge Anforderungen an die im App Store zulässigen Anwendungsarten zu haben. Kryptowährungsanträge erfüllen diese Anforderungen häufig nicht, da sie Finanzdienstleistungen einbeziehen und spezifische Vorschriften und Sicherheitsstandards erfordern. 2. Die Einhaltung von Gesetzen und Vorschriften In vielen Ländern werden Aktivitäten im Zusammenhang mit Kryptowährungstransaktionen reguliert oder eingeschränkt. Um diese Vorschriften einzuhalten, kann die Bitbit -Anwendung nur über offizielle Websites oder andere autorisierte Kanäle verwendet werden

Sesame Open Door Trading Platform Download Mobile Version Gateio Trading Platform Download -Adresse Sesame Open Door Trading Platform Download Mobile Version Gateio Trading Platform Download -Adresse Feb 28, 2025 am 10:51 AM

Es ist wichtig, einen formalen Kanal auszuwählen, um die App herunterzuladen und die Sicherheit Ihres Kontos zu gewährleisten.

Top 10 für Crypto Digital Asset Trading App (2025 Global Ranking) empfohlen Top 10 für Crypto Digital Asset Trading App (2025 Global Ranking) empfohlen Mar 18, 2025 pm 12:15 PM

Dieser Artikel empfiehlt die Top Ten Ten Cryptocurrency -Handelsplattformen, die es wert sind, auf Binance, OKX, Gate.io, Bitflyer, Kucoin, Bybit, Coinbase Pro, Kraken, BYDFI und Xbit -dezentrale Börsen geachtet zu werden. Diese Plattformen haben ihre eigenen Vorteile in Bezug auf Transaktionswährungsmenge, Transaktionstyp, Sicherheit, Konformität und Besonderheiten. Die Auswahl einer geeigneten Plattform erfordert eine umfassende Überlegung, die auf eigener Handelserfahrung, Risikotoleranz und Investitionspräferenzen basiert. Ich hoffe, dieser Artikel hilft Ihnen dabei, den besten Anzug für sich selbst zu finden

Binance Binance Offizielle Website Neueste Version Anmeldeportal Binance Binance Offizielle Website Neueste Version Anmeldeportal Feb 21, 2025 pm 05:42 PM

Befolgen Sie diese einfachen Schritte, um auf die neueste Version des Binance -Website -Login -Portals zuzugreifen. Gehen Sie zur offiziellen Website und klicken Sie in der oberen rechten Ecke auf die Schaltfläche "Anmeldung". Wählen Sie Ihre vorhandene Anmeldemethode. Geben Sie Ihre registrierte Handynummer oder E -Mail und Kennwort ein und vervollständigen Sie die Authentifizierung (z. B. Mobilfifizierungscode oder Google Authenticator). Nach einer erfolgreichen Überprüfung können Sie auf das neueste Version des offiziellen Website -Login -Portals von Binance zugreifen.

Die neueste Download -Adresse des Bitgets im Jahr 2025: Schritte zum Erhalten der offiziellen App Die neueste Download -Adresse des Bitgets im Jahr 2025: Schritte zum Erhalten der offiziellen App Feb 25, 2025 pm 02:54 PM

Dieser Leitfaden enthält detaillierte Download- und Installationsschritte für die offizielle Bitget Exchange -App, die für Android- und iOS -Systeme geeignet ist. Der Leitfaden integriert Informationen aus mehreren maßgeblichen Quellen, einschließlich der offiziellen Website, dem App Store und Google Play, und betont Überlegungen während des Downloads und des Kontoverwaltung. Benutzer können die App aus offiziellen Kanälen herunterladen, einschließlich App Store, offizieller Website APK Download und offizieller Website -Sprung sowie vollständige Registrierung, Identitätsüberprüfung und Sicherheitseinstellungen. Darüber hinaus deckt der Handbuch häufig gestellte Fragen und Überlegungen ab, wie z.

See all articles