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

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

現代のコンピュータの出現により、より高速でより小さなコードをコンパイルする方法が問題になりました。

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

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

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

論文アドレス: https://arxiv.org/pdf/2101.04808.pdf

MLGO は、LLVM のヒューリスティック アルゴリズムに代わる、強化学習を使用してニューラル ネットワークをトレーニングし、意思決定を行います。著者によると、LLVM には 2 つの MLGO 最適化があります。

1) インライン化によってコードの量を削減します。

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

両方の最適化は LLVM リポジトリで利用可能であり、本番環境に導入されています。

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

インライン化は、冗長なコードを削除する決定を行うことで、コード サイズを削減するのに役立ちます。次の例では、呼び出し元関数foo()先関数bar() bar() baz()これら 2 つの呼び出しサイトをインライン化すると、単純なfoo()が返され、コード サイズが削減されます。

図1: インライン化により冗長なコードを削除してコードサイズを削減

実際のコードでは、何千もの関数が互いに呼び出し合って呼び出しグラフを形成します。インライン化フェーズでは、コンパイラはすべての呼び出し元と呼び出し先のペアの呼び出しグラフを走査し、呼び出し元と呼び出し先のペアをインライン化するかどうかを決定します。これは継続的な意思決定プロセスであり、以前のインライン化の決定によって呼び出しグラフが変更され、後の決定と最終結果に影響します。上記の例では、呼び出しグラフfoo() bar() baz()

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

図 1: インライン化中の MLGO の図。「#bbs」、「#users」、および「callsite height」は、呼び出し元と呼び出し先のペア機能のインスタンスです。

MLGO は、ポリシー勾配と進化戦略アルゴリズムを使用して、決定ネットワークで RL トレーニングを実行します。最適な決定に関する真実は存在しませんが、オンライン RL はトレーニング済みのポリシーを使用して、トレーニングと実行コンパイルを反復し、データを収集してポリシーを改善します。特に、現在トレーニング中のモデルが与えられた場合、コンパイラーはインライン化フェーズ中にモデルを参照して、インライン化/非インライン化の決定を行います。コンパイルされると、順次的な意思決定プロセス (状態、アクション、報酬) のログが生成されます。このログはトレーナーに渡され、モデルが更新されます。満足のいくモデルが得られるまでこのプロセスが繰り返されます。

図 1: トレーニング中のコンパイラの動作- コンパイラはソース コード foo.cpp をオブジェクト ファイル foo.o にコンパイルし、一連の最適化を実行します。その 1 つがインライン パスです。

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

図1: 実稼働環境でのコンパイラの動作

30,000 個のモジュールを含む大規模な内部パッケージで、大規模なインライン ポリシーと小規模なインライン ポリシーの両方をトレーニングしました。トレーニングされたポリシーは、他のソフトウェアをコンパイルするときに一般化でき、時間とメモリのオーバーヘッドが 3% ~ 7% 削減されます。ソフトウェア全体にわたる一般化可能性に加えて、時間全体にわたる一般化可能性も重要です。ソフトウェアとコンパイラーは両方とも活発に開発されているため、トレーニングされたポリシーは、妥当な時間にわたって良好なパフォーマンスを維持する必要があります。 3 か月後、同じソフトウェア セットでモデルのパフォーマンスを評価したところ、わずかな低下しか見られませんでした。

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

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

2 レジスタ割り当て

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

コードが実行されると、異なるライブ範囲が異なる時間に完了し、後続の処理段階で使用できるようにレジスタが解放されます。次の例では、「加算」命令と「乗算」命令のそれぞれで、すべてのオペランドと結果が物理レジスタに存在する必要があります。ライブ スコープ x は緑のレジスタに割り当てられ、青または黄色のレジスタのライブ スコープの前に完了します。 x が完了すると、緑色のレジスタが使用可能になり、ライブ スコープ t に割り当てられます。

コード実行中、異なるライブ範囲が異なる時間に完了し、後続の処理段階で使用するためにレジスタが解放されます。次の例では、「加算」命令と「乗算」命令のそれぞれで、すべてのオペランドと結果が物理レジスタに存在する必要があります。ライブ スコープ x は緑のレジスタに割り当てられ、青または黄色のレジスタのライブ スコープの前に完了します。 x が完了すると、緑色のレジスタが使用可能になり、ライブ スコープ t に割り当てられます。

図1: レジスタ割り当ての例

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

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

インライン サイズ ポリシーと同様に、レジスタ割り当て (regalloc-for-performance) ポリシーは、Google 内の大規模なソフトウェア パッケージでトレーニングされており、さまざまなソフトウェアに一般化できるため、一連の内部大規模データセンター アプリケーションで 1 秒あたりのクエリ数 (QPS) が 0.3% ~ 1.5% 向上します。 QPS の改善は導入後数か月間持続し、モデルの一般化可能性を示しました。

3 結論

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

MLGO は、1) より深く、例えば、より多くの機能を追加し、より優れた RL アルゴリズムを適用するように開発できます。2) より広く、インライン化や再割り当てを超えた最適化ヒューリスティックを適用します。

著者らは、MLGO がコンパイラ最適化の分野にもたらす可能性に熱心であり、研究コミュニティによる MLGO のさらなる採用と今後の貢献を期待しています。

<<:  人工知能は飛躍の準備ができており、セキュリティは機会と課題に直面している

>>:  2022年ワールドカップ、審判の補助に人工知能を導入

ブログ    

推薦する

機械学習における興味深いアルゴリズム 10 選

この記事を通じて、ML でよく使用されるアルゴリズムについて常識的に理解することができます。コードや...

AI エキスパート: ビッグデータ ナレッジ グラフ - 実践経験のまとめ

データ サイエンティストとして、業界のトップ ナレッジ グラフをまとめ、技術専門家と共有して、ビッグ...

脳の次元: 人工知能の波の中での適者生存

[[263690]]さまざまな新しい人工知能技術は、古代の伝説の洪水のように、社会全体を急速に「浸水...

ヘルスケアの革命: アジア太平洋地域におけるスマートホーム技術の台頭

アジア太平洋地域では、スマートホーム技術の登場により、ヘルスケア業界の大きな変革が起こっています。こ...

人工知能の時代、今後子どもたちが持つどんな能力が人気になるのでしょうか?

今年の全国人民代表大会では、「人工知能」というホットな言葉が登場した。先週の土曜日、中国教育も音声デ...

MetaGPTが人気に! 2ドルでボスになれる、GitHubには11.2万個のスターがつき、AIエージェント「オールラウンダー」が誕生

インテリジェントエージェントは未来です!最近、別の AI エージェント プロジェクト MetaGPT...

注意深い! CCTVの科学的テスト:マスクは顔の代わりに携帯電話のロックを解除することもできる

[[349033]]テクノロジーの継続的な進歩により、私たちの日常生活はますます便利になっています。...

欧州が癌治療における人工知能の新基準を設定

EUCAIM (EUropean Federation for CAncer IMages) プロジ...

肖亜青工業情報化大臣:我が国はAI発明特許の取得数で世界一である

[[410183]] 7月8日のニュース 2021年世界人工知能大会の開幕式で、工業情報化部の肖亜青...

人間と機械の翻訳対決は韓国で行われる。人工知能の未来は過小評価できない

韓国のソウルで人間の翻訳者と人工知能(AI)翻訳機の対決が行われる。人間の翻訳者が明らかに有利である...

この記事を読んで、人工知能に携わる私は、もう

機械学習とは何ですか?答えるのに 10 秒かかります。 …分からない?あなたはまだ人工知能業界で働き...

中国科学院は「触覚」を備えたロボットを開発し、豚の肝臓に低侵襲手術を成功させた。

中国科学院が1月17日に発表したところによると、このほど中国科学院深圳先進技術研究所医療工学研究所低...

EleutherAIが200億パラメータのGPT風モデルを発表: GPT-3とは異なり、無料でオープン

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

マイルストーンではありません! Facebookの100言語翻訳モデルは過大評価され、疑問視されている

[[347640]] Facebookはまた失敗したのか?フェイスブックは昨日、自社の機械翻訳が画期...

AI と ROI に関する真実: AI は本当に成果をもたらすことができるのか?

今日、企業組織はこれまで以上に人工知能 (AI) と機械学習 (ML) の可能性を信頼し、投資してい...