Skip to main content
QUICK REVIEW

[論文レビュー] High Performance Zero-Memory Overhead Direct Convolutions

Jiyuan Zhang, Franz Franchetti|arXiv (Cornell University)|Sep 20, 2018
Advanced Neural Network Applications参考文献 18被引用数 32
ひとこと要約

この論文では、メモリオーバーヘッドがなく、CPU上で最先端の行列乗算ベースの畳み込み手法よりも10%〜400%の高いパフォーマンスを達成する高性能な直接畳み込み実装を提示している。最適化されたデータレイアウトと効率的なループタイリングにより、パッケージングコストが排除され、熟練したチューニング済みBLASルーチンでさえも上回る。スレッド数が増加しても効率的にスケーリングされる。

ABSTRACT

The computation of convolution layers in deep neural networks typically rely on high performance routines that trade space for time by using additional memory (either for packing purposes or required as part of the algorithm) to improve performance. The problems with such an approach are two-fold. First, these routines incur additional memory overhead which reduces the overall size of the network that can fit on embedded devices with limited memory capacity. Second, these high performance routines were not optimized for performing convolution, which means that the performance obtained is usually less than conventionally expected. In this paper, we demonstrate that direct convolution, when implemented correctly, eliminates all memory overhead, and yields performance that is between 10% to 400% times better than existing high performance implementations of convolution layers on conventional and embedded CPU architectures. We also show that a high performance direct convolution exhibits better scaling performance, i.e. suffers less performance drop, when increasing the number of threads.

研究の動機と目的

  • 行列乗算ベースの畳み込み実装におけるデータパッケージングに起因する高いメモリオーバーヘッドとパフォーマンス劣化を解消すること。
  • 適切に最適化された直接畳み込みが、パフォーマンスとメモリ効率の両面で、高度にチューニングされた行列乗算ルーチンを上回ることを実証すること。
  • 追加のメモリを標準ストレージを越えて必要としない、入力、出力、カーネル重みのための新しいデータレイアウトを設計すること。
  • マルチコアCPUにおける畳み込みの効率的な並列化を可能にし、スレッド数の増加に伴うパフォーマンス低下を最小限に抑えること。
  • GPUへの移植および逆伝播計算の最適化のための基盤を提供すること。

提案手法

  • 中間のデータパッケージングや複製が一切ない直接畳み込みカーネルを提案し、畳み込みを計算する。
  • 入力特徴マップ、出力特徴マップ、カーネル重みのための新しいデータレイアウトを導入し、メモリ効率を保ちつつ高い算術強度を実現する。
  • ループタイリングとスレッドレベルの並列処理を用いて、CPUアーキテクチャにおけるデータ再利用とキャッシュ効率を最大化する。
  • ループネストのブロッキングパラメータの最適化を図るため、自動チューニングまたは解析的手法を用いる。
  • ストライド付きバッチ処理GEMM(StridedBatchedGemm)などの既存のGPU最適化済み演算を活用し、cuBLAS 8.0を介してNVIDIA GPUへの移植可能性を確保する。
  • SGEMMおよび行列乗算ルーチンを基準としてパフォーマンスを正規化し、相対的な向上を示す。

実験結果

リサーチクエスチョン

  • RQ1直接畳み込み実装は、生のパフォーマンスとメモリ効率の両面で、高度にチューニングされた行列乗算ベースの畳み込みルーチンを上回ることができるか?
  • RQ2データパッケージングを排除することで、現在のディープラーニング推論パイプラインにおける主なパフォーマンスボトルネックが解消されるか?
  • RQ3マルチコアCPU上での直接畳み込みの並列スケーラビリティは、行列乗算ベースのアプローチと比べてどの程度か?
  • RQ4Intel、AMD、ARMアーキテクチャを含む多様なCPUアーキテクチャ上で、直接畳み込みがピークパフォーマンスに近い性能を達成できるか?
  • RQ5既存の最適化済みカーネルを用いて、提案された直接畳み込み手法をGPUアーキテクチャに移植可能か?

主な発見

  • 提案された直接畳み込み実装は、SGEMMベースの実装と比較して10%〜400%の高いパフォーマンスを達成しており、Intel MKLのような熟練したチューニング済みBLASライブラリをも上回っている。
  • すべてのデータパッケージングや複製を回避するため、ゼロのメモリオーバーヘッドを発生させ、メモリ制限のある組み込みおよびエッジデバイスに最適である。
  • スレッド数の増加に伴うコアあたりパフォーマンスの低下が最小限に抑えられ、行列乗算ベースの手法と比較して優れたスケーラビリティを示している。
  • Intel、AMD、ARMアーキテクチャでは、それぞれ理論ピークパフォーマンスの87.5%、58.2%、88.9%を達成している。
  • 物理コア数に達するまで効率的にスケーリングされ、スレッド数がコア数を超えた場合にのみ顕著なパフォーマンス低下が生じるため、リソースの有効利用が図られている。
  • 著者らは、自動チューニングまたはループブロッキングパラメータの解析的最適化により、HPC行列における直接畳み込みとSGEMMのパフォーマンスギャップを埋められることを実証した。

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

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

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

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