Skip to main content
QUICK REVIEW

[論文レビュー] High-Performance Deep Learning via a Single Building Block

Evangelos Georganas, Kunal Banerjee|arXiv (Cornell University)|Jun 15, 2019
Advanced Neural Network Applications参考文献 40被引用数 7
ひとこと要約

本論文では、バッチリダクションGEMMカーネルを、高性能ディープラーニングワークロードの普遍的な構築ブロックとして導入し、3,000行の高水準コードでのみRNN、CNN、MLPの効率的実装を可能にした。この1つのカーネルを最適化することで、CPU上でベンダーオプティマイズ済みライブラリを上回り、GPUの自動チューニング済みカーネルと同等またはそれを上回るパフォーマンスを達成した。これは、特殊な低水準カーネルに代わるスケーラブルで保守性の高い代替手段を示している。

ABSTRACT

Deep learning (DL) is one of the most prominent branches of machine learning. Due to the immense computational cost of DL workloads, industry and academia have developed DL libraries with highly-specialized kernels for each workload/architecture, leading to numerous, complex code-bases that strive for performance, yet they are hard to maintain and do not generalize. In this work, we introduce the batch-reduce GEMM kernel and show how the most popular DL algorithms can be formulated with this kernel as the basic building-block. Consequently, the DL library-development degenerates to mere (potentially automatic) tuning of loops around this sole optimized kernel. By exploiting our new kernel we implement Recurrent Neural Networks, Convolution Neural Networks and Multilayer Perceptron training and inference primitives in just 3K lines of high-level code. Our primitives outperform vendor-optimized libraries on multi-node CPU clusters, and we also provide proof-of-concept CNN kernels targeting GPUs. Finally, we demonstrate that the batch-reduce GEMM kernel within a tensor compiler yields high-performance CNN primitives, further amplifying the viability of our approach.

研究の動機と目的

  • 異なるアーキテクチャにまたがる多様なディープラーニングワークロードに対応するための、低レベルカーネル最適化の組み合わせ的爆発を解決すること。
  • すべての主要なDLプリミティブを1つの高最適化カーネルに統一することで、ディープラーニングライブラリ開発の複雑さを軽減すること。
  • RNN、CNN、MLPのトレーニングおよびインフェレンスにおいて、1つの最適化済みカーネルのループチューニングのみで高いパフォーマンスを実現すること。
  • 1つの良好に最適化されたカーネルが、CPUおよびGPUの手動チューニング済みベンダーオプティマイズ実装を上回ることを示すこと。
  • TVMなどのテンソルコンパイラーとの統合を通じて、パフォーマンスポータブルなディープラーニングプリミティブを実現すること。

提案手法

  • バッチ内の入力サブテンソルブロックを乗算し、部分結果を1つの出力サブテンソルブロックにリダクションするバッチリダクションGEMMカーネルを提案する。
  • RNN/LSTM、CNN、MLPといった主要なディープラーニングプリミティブを、この1つのカーネルの合成として定式化し、低レベルの複雑さを抽象化する。
  • CPUおよびGPUアーキテクチャ向けに、細粒度のメモリアクセス、プリフェッチ、データレイアウト変換を用いてバッチリダクションGEMMカーネルを最適化する。
  • 最適化済みカーネルの周囲でのループチューニングに依存して、3,000行の高水準コードでのDLプリミティブ実装を実現する。
  • 分散トレーニングフレームワーク(例:GNMTおよびResNet-50用)にカーネルを統合し、マルチノードクラスタでのスケーラビリティを実証する。
  • TVMテンソルコンパイラー上でバッチリダクションGEMMカーネルを用いてCNNカーネルのプロトタイプを開発し、自動チューニング済みプリミティブと同等のパフォーマンスを達成した。

実験結果

リサーチクエスチョン

  • RQ11つの高最適化カーネルが、異なるディープラーニングワークロードおよびアーキテクチャにまたがる数多くの特殊化・手動チューニング済みカーネルの必要性を置き換えることができるか?
  • RQ2すべてのプリミティブを1つのカーネルに抽象化することで、ディープラーニングライブラリにおけるパフォーマンスポータビリティと保守性をどの程度向上できるか?
  • RQ3統一されたカーネルアプローチが、CPUおよびGPUワークロードの両方でベンダーオプティマイズ済みで特化した実装を上回ることができるか?
  • RQ4バッチリダクションGEMMカーネルは、分散マルチノード環境における高パフォーマンスのトレーニングおよびインフェレンスをどの程度効果的に可能にするか?
  • RQ5テンソルコンパイラーは、このカーネルを活用して、自動チューニング済みでベンダーオプティマイズ済みプリミティブと同等のパフォーマンスを達成できるか?

主な発見

  • Xeon Skylake-SP CPU上でバッチリダクションGEMMカーネルはピークパフォーマンスの83%を達成し、一般GEMMベースのアプローチ(61%および49%)を上回り、ベンダーオプティマイズ済みmkl-dnn(81%)と同等の性能を示したが、2%高い効率性を示した。
  • 著者らがバッチリダクションGEMMカーネルに基づいて開発したCNNプリミティブは、CPU上でベンダーオプティマイズ済みmkl-dnnライブラリを1.24倍、マルチノードクラスタ上で1.4倍の速度で上回った。
  • 統合GPU上で、カーネルはベンダー提供のCNNカーネルと同等のパフォーマンスを達成し、アーキテクチャに依存しないことを示した。
  • マルチノードCPUクラスタ上でGNMTおよびResNet-50のエンドツーエンドトレーニングを実行したところ、ベンダーオプティマイズ済みライブラリを最大2.3倍の速度で上回った。
  • TVMベースのプロトタイプでは、バッチリダクションGEMMカーネルを用いて、自動チューニング済みAmazon-AutoTVM最適化コードと同等のパフォーマンスを達成したCNNプリミティブを実現した。
  • ディープラーニングライブラリ全体の実装に必要なコード量はわずか3,000行であり、従来の数万行にのぼるコードベースと比較して、著しく複雑さが軽減された。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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