Skip to main content
QUICK REVIEW

[論文レビュー] Glow: Graph Lowering Compiler Techniques for Neural Networks

Nadav Rotem, Jordan Fix|arXiv (Cornell University)|May 2, 2018
Parallel Computing and Optimization Techniques参考文献 13被引用数 186
ひとこと要約

Glow は、ニューラルネットワークのグラフを複数の IR 段階を通じて低レベルに変換し、異種ハードウェアをターゲットとして、ターゲット非依存の最適化とバックエンド固有のコード生成を可能にするオープンソースの機械学習コンパイラです。

ABSTRACT

This paper presents the design of Glow, a machine learning compiler for heterogeneous hardware. It is a pragmatic approach to compilation that enables the generation of highly optimized code for multiple targets. Glow lowers the traditional neural network dataflow graph into a two-phase strongly-typed intermediate representation. The high-level intermediate representation allows the optimizer to perform domain-specific optimizations. The lower-level instruction-based address-only intermediate representation allows the compiler to perform memory-related optimizations, such as instruction scheduling, static memory allocation and copy elimination. At the lowest level, the optimizer performs machine-specific code generation to take advantage of specialized hardware features. Glow features a lowering phase which enables the compiler to support a high number of input operators as well as a large number of hardware targets by eliminating the need to implement all operators on all targets. The lowering phase is designed to reduce the input space and allow new hardware backends to focus on a small number of linear algebra primitives.

研究の動機と目的

  • ムーアの法則の限界と増大する ML 計算需要により、ドメイン特化コンパイルの必要性を動機づける。
  • Glow を複数のハードウェアバックエンド向けに最適化コードを生成するリターゲット可能なコンパイラとして提案する。
  • 高レベルのグラフ最適化と低レベルのメモリ最適化のための、2 相の強く型付け中間表現を導入する。
  • 多様なデバイスで効率的な整数演算を可能にするための量子化とプロファイリング手法を説明する。
  • 複数のアクセラレータ上でグラフを実行するためのランタイムおよびパーティショニング機構を提示する。

提案手法

  • 2 段階の強く型付け中間表現を導入する(高レベルデータフロー IR と低レベルアドレス専用 IR)。
  • 高レベル演算子を低レベルの線形代数プリミティブへ下げ、バックエンドの簡素化を可能にする(ノード下げ)
  • ターゲット非依存の最適化を適用し、続いてターゲット固有の最適化とコード生成(IRGen)を行う。
  • 浮動小数点ネットワークを int8 表現へ変換するため、プロファイルガイド範囲を用いた量子化を実装する。
  • バックエンド開発を容易にするために、IR 命令とノードクラスを自動生成する ClassGen を用いる。
  • 小規模なターゲット非依存標準ライブラリと演算子スタックを備えた CPU バックエンドを提供し、データ並列操作を融合する。
  • デバイス間でグラフをパーティショニングし、サブグラフをアクセラレータにロードし、非同期推論リクエストを管理する Glow ランタイムを提供する。

実験結果

リサーチクエスチョン

  • RQ1ニューラルネットワークのリターゲット可能なコンパイラは、どのようにして高レベルのグラフを複数のハードウェアバックエンドへ効率的に対応づけられるか?
  • RQ2マルチレベル IR と lowering は、演算子実装を重複させずにバックエンド固有の最適化を可能にするうえでどのような役割を果たすか?
  • RQ3量子化とプロファイルガイド技術は、多様なデバイスで正確で効率的な整数計算を生み出すうえでどの程度効果的か?
  • RQ4あるモデルに対して、どのようなランタイム戦略(パーティショニング、プロビジョニング、デバイス管理)が複数の加速器を最も有効に活用できるか?

主な発見

  • Glow は、限られた線形代数プリミティブの小さな集合を対象とすることで、すべてのバックエンドのすべての演算子を実装する必要性を減らす、スケーラブルな下げアプローチを提供します。
  • 2 レベル IR の設計により、ターゲット非依存の最適化とハードウェア固有のコード生成を実現し、バックエンドの柔軟性を向上させます。
  • プロファイルガイドの範囲を用いた量子化は int8 への変換と整数計算のアイランドを可能にし、推論の効率を促進します。
  • 演算子スタッキングと小規模な標準ライブラリを備えた CPU バックエンドは、結合カーネルとメモリ局所性の向上を実現し、Resnet50 や VGG19 のようなモデルで実証されます。
  • Glow のランタイムは複数の加速器間でのパーティショニングと実行をサポートし、サブグラフのロードと非同期推論を調整します。
  • 実モデルを用いて Glow を TensorFlow および TVM と比較し、性能を評価し、テストプラットフォームとして Kaby Lake CPU を使用します。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。