目次
インライン化は、冗長なコードを削除する決定を行うことで、コード サイズを削減するのに役立ちます。次の例では、呼び出し元関数
2 レジスタ割り当て
ホームページ テクノロジー周辺機器 AI メモリが 3% ~ 7% 削減されました。 Google、コンパイラ最適化のための機械学習フレームワークMLGOを提案

メモリが 3% ~ 7% 削減されました。 Google、コンパイラ最適化のための機械学習フレームワークMLGOを提案

May 01, 2023 pm 01:19 PM
グーグル 機械学習 ニューラルネットワーク

現代のコンピューターの誕生に伴い、より速く、より小さなコードをコンパイルする方法という問題が浮上しました。

コンパイルの最適化は、費用対効果が最も高い最適化方法です。コードの最適化を改善すると、大規模なデータセンター アプリケーションの運用コストを大幅に削減できます。コンパイルされたバイナリは厳密なコード サイズの予算を満たす必要があるため、コンパイルされたコード サイズは、セキュア ブート パーティションに展開されるモバイルおよび組み込みシステムまたはソフトウェアにとって重要です。分野が進歩するにつれて、ヒューリスティックがますます複雑になり、限られたシステムスペースが大幅に圧迫され、メンテナンスやさらなる改善が妨げられています。

最近の研究では、機械学習が複雑なヒューリスティックを機械学習戦略に置き換えることにより、コンパイラの最適化においてより多くの機会を切り開くことができることを示しています。ただし、汎用の業界グレードのコンパイラに機械学習戦略を採用することは依然として課題です。

この問題を解決するために、Google の 2 人の上級エンジニア、Qian Yundi と Mircea Trofin は、業界初の「機械学習ガイド付きコンパイラ最適化フレームワーク MLGO」を提案しました。機械学習技術を LLVM に体系的に統合するためのユニバーサル フレームワーク。LLVM は、ミッションクリティカルな高性能ソフトウェアの構築に広く普及しているオープンソースの産業用コンパイラ インフラストラクチャです。

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

論文アドレス: https://arxiv.org/pdf/2101.04808.pdf ##MLGO は強化学習を使用してニューラル ネットワークをトレーニングして意思決定を行い、LLVM のヒューリスティック アルゴリズムを置き換えます。著者の説明によると、LLVM には 2 つの MLGO 最適化があります:

1) インライン化によるコード量の削減;

2)レジスタ割り当てを通じてコードのパフォーマンスを向上させます。

両方の最適化は LLVM リポジトリで利用でき、実稼働環境にデプロイされています。

1 MLGO はどのように機能しますか?

インライン化は、冗長なコードを削除する決定を行うことで、コード サイズを削減するのに役立ちます。次の例では、呼び出し元関数

<span style="font-size: 15px;">foo()</span> <span style="font-size: 15px;"> が呼び出し先関数 </span> bar( ) <span style="font-size: 15px;">、および </span> <span style="font-size: 15px;">bar()</span> <span style="font-size: 15px;"> 自体は </span> # を呼び出します##バズ() 。これら 2 つの呼び出しサイトをインライン化すると、単純な <span style="font-size: 15px;"> </span> foo() 関数が返され、コード サイズが削減されます。 <span style="font-size: 15px;"></span>

内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGOキャプション: インライン化により、冗長なコードが削除され、コード サイズが削減されます。

実際のコードでは、何千もの関数が相互に呼び出しているため、コール グラフが形成されます。インライン化フェーズ中に、コンパイラーはすべての呼び出し元と呼び出し先のペアのコール グラフを走査し、呼び出し元と呼び出し先のペアをインライン化するかどうかを決定します。以前のインライン化の決定によってコール グラフが変更され、その後の決定と最終結果に影響を与えるため、これは継続的な意思決定プロセスです。上記の例では、コール グラフ <span style="font-size: 15px;">foo()</span> <span style="font-size: 15px;">bar()</span> <span style="font-size: 15px;">baz()</span> コードサイズを削減するには、両側で「はい」の決定を下す必要があります。

MLGO が登場する前は、インライン/非インラインの決定はヒューリスティックによって行われていましたが、時間の経過とともに改善することがますます困難になってきました。 MLGO はヒューリスティックを機械学習モデルに置き換えます。コール グラフのトラバース中に、コンパイラは、入力グラフ内の関連する機能 (つまり、入力) を介して特定の呼び出し元と呼び出し先のペアをインライン化するかどうかについてニューラル ネットワークの推奨事項を求め、コール グラフ全体が完了するまで決定を順番に実行します。が達成された。

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

凡例: インライン化プロセス中の MLGO の図、「# bbs」、「# users」、「callsite height」は呼び出し元と呼び出し先のペア機能のインスタンス

MLGO は、ポリシー勾配アルゴリズムと進化的ポリシー アルゴリズムを使用してデシジョン ネットワークの RL トレーニングを実行します。最適な決定に関する根拠となる真実はありませんが、オンライン RL は、トレーニングとアセンブリの実行を繰り返すトレーニング済みのポリシーを使用して、データを収集し、ポリシーを改善します。特に、現在トレーニング中のモデルを考慮すると、コンパイラーはインライン化フェーズ中にモデルを参照して、インラインか非インラインかを決定します。コンパイル後、一連の決定プロセス (ステータス、アクション、報酬) のログが生成されます。このログは、モデルを更新するためにトレーナーに渡されます。満足のいくモデルが得られるまで、このプロセスが繰り返されます。

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

#注: トレーニング中のコンパイラの動作——コンパイラは、ソース コード foo.cpp をオブジェクト ファイルにコンパイルします。 foo.o を作成し、一連の最適化を実行しました。そのうちの 1 つはインライン チャネルでした。

トレーニングされたポリシーはコンパイラに組み込まれており、コンパイル プロセス中にインライン/非インラインの決定を提供します。トレーニング シナリオとは異なり、この戦略ではログは生成されません。 TensorFlow モデルは XLA AOT に埋め込まれており、モデルを実行可能コードに変換します。これにより、TensorFlow の実行時の依存関係とオーバーヘッドが回避され、コンパイル時の ML モデル推論によって生じる追加の時間とメモリのコストが最小限に抑えられます。

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

#キャプション: 本番環境でのコンパイラの動作

私たちのサイズはインラインですこの戦略は、30,000 のモジュールを含む大規模な社内パッケージでトレーニングされました。トレーニングされた戦略は他のソフトウェアをコンパイルするときに一般化でき、

により時間とメモリのオーバーヘッドが 3% ~ 7% 削減されます。 ソフトウェア全体の汎用性に加えて、時間全体の汎用性も重要です。ソフトウェアとコンパイラーの両方が積極的に開発されているため、適切な期間内に良好なパフォーマンスを維持するには、よく訓練された戦略が必要です。 3 か月後に同じソフトウェア セットでモデルのパフォーマンスを評価したところ、わずかな低下しか見つかりませんでした。

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

凡例: インライン サイズポリシーのサイズ削減率。X 軸はさまざまなソフトウェアを表し、Y 軸は削減率を表します。 「トレーニング」はモデルをトレーニングするソフトウェアであり、「InfraX」は別の内部ソフトウェア パッケージです。

MLGO のインライン サイズ変更トレーニングは、バイナリ サイズが重要な、多様なハードウェアおよびソフトウェア エコシステムを強化するように設計された汎用オープンソース オペレーティング システムである Fuchsia 上にデプロイされています。ここで、MLGO は C 翻訳単位サイズの 6.3% 削減を示しています。

2 レジスタ割り当て

一般的なフレームワークとして、MLGO を使用してレジスタ割り当て (レジスタ割り当て) チャネルを改善し、LLVM でのコードのパフォーマンスを向上させます。レジスタ割り当ては、物理レジスタをアクティブなスコープ (つまり、変数) に割り当てる問題を解決します。

コードが実行されると、さまざまなライブ範囲がさまざまな時点で完了し、後続の処理ステージで使用するためにレジスタが解放されます。次の例では、各「加算」命令と「乗算」命令では、すべてのオペランドと結果が物理レジスタ内にあることが必要です。リアルタイム範囲 x は緑色のレジスタに割り当てられ、青色または黄色のレジスタのリアルタイム範囲より前に完了します。 x が完了すると、緑色のレジスタが使用可能になり、生存範囲 t に割り当てられます。

コードの実行中、さまざまなライブ範囲がさまざまなタイミングで完了し、解放されたレジスタは後続の処理ステージで使用されます。以下の例では、各「加算」および「乗算」命令では、すべてのオペランドと結果が物理レジスタ内に存在する必要があります。アクティブ範囲 x は緑のレジスタに割り当てられ、青または黄色のレジスタのライブ範囲の前に完了します。 x が完了すると、緑色のレジスタが使用可能になり、有効範囲 t に割り当てられます。

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

# 凡例: レジスタ割り当ての例

アクティブ レンジを割り当てる場合 q いつ、使用可能なレジスタがないため、レジスタ割り当てチャネルは、q のためのスペースを空けるためにどのアクティブ範囲をレジスタから「追い出す」ことができるかを決定する必要があります。これは「フィールドエビクション」問題と呼ばれ、元のヒューリスティックの決定を置き換えるためにモデルをトレーニングする場所です。この例では、黄色のレジスタから z を削除し、それを q と z の前半に割り当てます。

次に、実際の範囲 z の未割り当ての下半分を検討します。別の競合が発生します。今回は、アクティブな範囲 t が削除されて分割され、t の前半と z の最後の部分が緑色のレジスタを使用することになります。 Z の中間部分は命令 q = t * y に対応します。ここで z は使用されないため、どのレジスタにも割り当てられず、その値は黄色のレジスタからスタックに格納され、後で緑色のレジスタに再ロードされます。 。 tでも同じことが起こります。これにより、コードに余分なロード/ストア命令が追加され、パフォーマンスが低下します。レジスタ割り当てアルゴリズムの目標は、この非効率を最小限に抑えることです。これは、RL ポリシー トレーニングをガイドするための報酬として使用されます。

インライン サイズ戦略と同様に、レジスタ割り当て (regalloc-for-Performance) 戦略は Google 内の大規模なソフトウェア パッケージでトレーニングされており、さまざまなソフトウェア間で普遍的に使用できます。 2 番目 (QPS) は、一連の内部大規模データセンター アプリケーションで 0.3% ~ 1.5% 増加しました。 QPS の改善は展開後数か月間持続し、モデルの一般化可能性を実証しました。

3 概要

MLGO は、強化学習を使用して、意思決定を行うニューラル ネットワークをトレーニングします。これは、複雑なヒューリスティック手法に代わる機械学習戦略です。一般的な産業グレードのフレームワークとして、インライン化やレジスタ割り当てだけでなく、より多くの環境でより深く、より広く使用されるようになるでしょう。

MLGO は次のように開発できます: 1) 機能の追加やより優れた RL アルゴリズムの適用など、より深く; 2) より広範に、インライン化と再配布に適用可能 さらなる最適化ヒューリスティックを超えて。

著者らは、MLGO がコンパイラ最適化の分野にもたらす可能性に熱意を持っており、研究コミュニティからのさらなる採用と将来の貢献を楽しみにしています。

以上がメモリが 3% ~ 7% 削減されました。 Google、コンパイラ最適化のための機械学習フレームワークMLGOを提案の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Deepseekをコメントする方法 Deepseekをコメントする方法 Feb 19, 2025 pm 05:42 PM

DeepSeekは、強力な情報を取得することですが、その不利な点は遅いことです。

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:39 PM

DeepSeekは、特定のデータベースまたはシステムでのみ検索する独自の検索エンジンであり、より速く、より正確です。それを使用する場合、ユーザーはドキュメントを読み、さまざまな検索戦略を試し、ユーザーエクスペリエンスに関するヘルプを求めてフィードバックを求めて、利点を最大限に活用することをお勧めします。

セサミオープンドア交換Webページ登録リンクゲートトレーディングアプリ登録Webサイト最新 セサミオープンドア交換Webページ登録リンクゲートトレーディングアプリ登録Webサイト最新 Feb 28, 2025 am 11:06 AM

この記事では、SESAME Open Exchange(gate.io)Webバージョンの登録プロセスとGate Tradingアプリを詳細に紹介します。 Web登録であろうとアプリの登録であろうと、公式Webサイトまたはアプリストアにアクセスして、本物のアプリをダウンロードし、ユーザー名、パスワード、電子メール、携帯電話番号、その他の情報を入力し、電子メールまたは携帯電話の確認を完了する必要があります。

Bybit Exchangeリンクを直接ダウンロードしてインストールできないのはなぜですか? Bybit Exchangeリンクを直接ダウンロードしてインストールできないのはなぜですか? Feb 21, 2025 pm 10:57 PM

Bybit Exchangeリンクを直接ダウンロードしてインストールできないのはなぜですか? BYBITは、ユーザーにトレーディングサービスを提供する暗号通貨交換です。 Exchangeのモバイルアプリは、次の理由でAppStoreまたはGooglePlayを介して直接ダウンロードすることはできません。1。AppStoreポリシーは、AppleとGoogleがApp Storeで許可されているアプリケーションの種類について厳しい要件を持つことを制限しています。暗号通貨交換アプリケーションは、金融サービスを含み、特定の規制とセキュリティ基準を必要とするため、これらの要件を満たしていないことがよくあります。 2。法律と規制のコンプライアンス多くの国では、暗号通貨取引に関連する活動が規制または制限されています。これらの規制を遵守するために、BYBITアプリケーションは公式Webサイトまたはその他の認定チャネルを通じてのみ使用できます

セサミオープンドアトレーディングプラットフォームダウンロードモバイルバージョンgateioトレーディングプラットフォームのダウンロードアドレス セサミオープンドアトレーディングプラットフォームダウンロードモバイルバージョンgateioトレーディングプラットフォームのダウンロードアドレス Feb 28, 2025 am 10:51 AM

アプリをダウンロードしてアカウントの安全を確保するために、正式なチャネルを選択することが重要です。

Crypto Digital Asset Trading App(2025グローバルランキング)に推奨されるトップ10 Crypto Digital Asset Trading App(2025グローバルランキング)に推奨されるトップ10 Mar 18, 2025 pm 12:15 PM

この記事では、Binance、Okx、Gate.io、Bitflyer、Kucoin、Bybit、Coinbase Pro、Kraken、Bydfi、Xbit分散化された交換など、注意を払う価値のある上位10の暗号通貨取引プラットフォームを推奨しています。これらのプラットフォームには、トランザクションの数量、トランザクションの種類、セキュリティ、コンプライアンス、特別な機能の点で独自の利点があります。適切なプラットフォームを選択するには、あなた自身の取引体験、リスク許容度、投資の好みに基づいて包括的な検討が必要です。 この記事があなたがあなた自身に最適なスーツを見つけるのに役立つことを願っています

Binance Binance公式Webサイト最新バージョンログインポータル Binance Binance公式Webサイト最新バージョンログインポータル Feb 21, 2025 pm 05:42 PM

Binance Webサイトログインポータルの最新バージョンにアクセスするには、これらの簡単な手順に従ってください。公式ウェブサイトに移動し、右上隅の[ログイン]ボタンをクリックします。既存のログインメソッドを選択してください。「登録」してください。登録済みの携帯電話番号または電子メールとパスワードを入力し、認証を完了します(モバイル検証コードやGoogle Authenticatorなど)。検証が成功した後、Binance公式WebサイトLogin Portalの最新バージョンにアクセスできます。

2025年のBitgetの最新のダウンロードアドレス:公式アプリを取得する手順 2025年のBitgetの最新のダウンロードアドレス:公式アプリを取得する手順 Feb 25, 2025 pm 02:54 PM

このガイドは、AndroidおよびiOSシステムに適した公式Bitget Exchangeアプリの詳細なダウンロードとインストール手順を提供します。このガイドは、公式ウェブサイト、App Store、Google Playなど、複数の権威ある情報源からの情報を統合し、ダウンロードおよびアカウント管理中の考慮事項を強調しています。ユーザーは、App Store、公式WebサイトAPKダウンロード、公式Webサイトジャンプ、完全な登録、ID検証、セキュリティ設定など、公式チャネルからアプリをダウンロードできます。さらに、ガイドはよくある質問や考慮事項をカバーします。

See all articles