Skip to main content
QUICK REVIEW

[論文レビュー] Low-memory GEMM-based convolution algorithms for deep neural networks

Andrew Anderson, Aravind Vasudevan|arXiv (Cornell University)|Sep 8, 2017
Advanced Neural Network Applications参考文献 7被引用数 44
ひとこと要約

本稿では、畳み込みを小さな1×1畳み込みの蓄積に再構成することにより、メモリオーバーヘッドを著しく削減する2つの新しいGEMMベースの畳み込みアルゴリズムを提案する。これらの手法は、標準的なim2colのO(CHWK²)や、先行するGEMMベース手法のO(CHWK)と比較して、大幅に少ないO(MHW)およびO(KW)の追加メモリを要するが、特にマルチコアシステムにおいて優れたデータ局所性を発揮するため、同等またはそれ以上の性能を達成する。

ABSTRACT

Deep neural networks (DNNs) require very large amounts of computation both for training and for inference when deployed in the field. A common approach to implementing DNNs is to recast the most computationally expensive operations as general matrix multiplication (GEMM). However, as we demonstrate in this paper, there are a great many different ways to express DNN convolution operations using GEMM. Although different approaches all perform the same number of operations, the size of temporary data structures differs significantly. Convolution of an input matrix with dimensions $C imes H imes W$, requires $O(K^2CHW)$ additional space using the classical im2col approach. More recently memory-efficient approaches requiring just $O(KCHW)$ auxiliary space have been proposed. We present two novel GEMM-based algorithms that require just $O(MHW)$ and $O(KW)$ additional space respectively, where $M$ is the number of channels in the result of the convolution. These algorithms dramatically reduce the space overhead of DNN convolution, making it much more suitable for memory-limited embedded systems. Experimental evaluation shows that our low-memory algorithms are just as fast as the best patch-building approaches despite requiring just a fraction of the amount of additional memory. Our low-memory algorithms have excellent data locality which gives them a further edge over patch-building algorithms when multiple cores are used. As a result, our low memory algorithms often outperform the best patch-building algorithms using multiple threads.

研究の動機と目的

  • 既存のGEMMベースのDNN畳み込み手法における高いメモリオーバーヘッド、特に広く使われているim2col手法が要するO(CHWK²)のメモリ空間を解消すること。
  • 組み込みおよびメモリ制限のあるシステムに適した、メモリ効率の良いGEMMベースの畳み込みアルゴリズムの設計。
  • GEMMベースのDNN畳み込み実装における、メモリ使用量、計算量、データ局所性のトレードオフの調査。
  • 低メモリGEMMベースのアルゴリズムが、マルチスレッド実行下でも、高メモリパッチ構築手法と同等またはそれ以上の性能を発揮できるかどうかの評価。

提案手法

  • マルチチャネルマルチカーネル(MCMK)畳み込みを、K²個の別個の1×1畳み込みの蓄積に再定式化し、それぞれをGEMMで処理する。
  • 入力およびカーネルテンソルの小さな、管理可能なブロックを処理するタイリング戦略を用い、一時記憶領域の必要を低減する。
  • GEMM呼び出しを、完全なim2col行列ではなく、コンactで局所化されたデータ構造上で実行できるように、データレイアウト変換を適用する。
  • キャッシュ局所性を向上させ、特にマルチコア実行下でのL1/L3キャッシュスタックサイクルを低減するため、メモリアクセスパターンを最適化する。
  • 2つのバリアントを実装:1つはMHWサイズの蓄積に適した行優先レイアウト(O(MHW)空間)、もう1つはKWサイズの蓄積に適した列優先レイアウト(O(KW)空間)。
  • カスタムカーネル開発を最小限に抑えるために、既存の高度に最適化されたBLAS/GEMMライブラリを活用する。

実験結果

リサーチクエスチョン

  • RQ1GEMMベースの畳み込みを、一時メモリ使用量を著しく削減しつつも、高い性能を維持できるように実装できるか?
  • RQ2メモリフットプリントを小さくすることで、DNN畳み込みにおけるデータ局所性とマルチコアパフォーマンスにどのような影響が生じるか?
  • RQ3低メモリGEMMベースのアルゴリズムは、マルチコアアーキテクチャ上での速度と効率性において、従来のパッチ構築手法を上回ることができるか?
  • RQ4GEMMベースのMCMK畳み込みにおけるメモリ使用量を最小限に抑えるために、最適なデータレイアウトとタイリング戦略は何か?
  • RQ5異なるハードウェアプラットフォームにおいて、im2col や lazy im2col といった既存手法と比較して、提案手法のメモリおよびパフォーマンス特性はどのように異なるか?

主な発見

  • 提案されたO(MHW)およびO(KW)メモリアルゴリズムは、一時メモリ使用量が桁違いに少ないにもかかわらず、最良のパッチ構築GEMMベース手法と同等のパフォーマンスを達成している。
  • Intel Core i7およびARM Cortex A57プロセッサ上では、低メモリアルゴリズムが競合手法よりもL1およびL3キャッシュスタックサイクルが少なく、特にkn2row-aaが平均スタック数が最も低かった。
  • マルチコア環境では、低メモリアルゴリズムの向上したデータ局所性のおかげで、パッチ構築手法よりも優れたパフォーマンスを発揮しており、メモリ帯域幅の圧力を低減した結果、しばしばそれらを上回った。
  • O(KW)バリアントは、VGG16の上位層において特に優れたパフォーマンスを示し、キャッシュ効率の観点から、最も優れた代替手法をも凌駕した。
  • 実験結果は、メモリ削減が速度の低下を伴わないことを確認しており、メモリ効率が組み込みシステムにおける高性能推論の実現に重要な要因であることを示している。

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

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

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

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