Skip to main content
QUICK REVIEW

[論文レビュー] The Indirect Convolution Algorithm

Marat Dukhan|arXiv (Cornell University)|Jul 3, 2019
Advanced Neural Network Applications参考文献 32被引用数 28
ひとこと要約

Indirect Convolutionアルゴリズムは、GEMMベースの畳み込みにおけるメモリ集約的な im2col 変換を、入力テンソルの行へのポ인터の間接参照バッファに置き換える。これにより、データの再配置なしに GEMM に類似したパフォーマンスを実現する。im2col のストレージを排除することでメモリオーバーヘッドを削減し、1×1 でない畳み込みでは GEMM ベース手法を最大62%まで上回る。1×1 ストライド1の畳み込みではわずかなオーバーヘッドにとどまる。

ABSTRACT

Deep learning frameworks commonly implement convolution operators with GEMM-based algorithms. In these algorithms, convolution is implemented on top of matrix-matrix multiplication (GEMM) functions, provided by highly optimized BLAS libraries. Convolutions with 1x1 kernels can be directly represented as a GEMM call, but convolutions with larger kernels require a special memory layout transformation - im2col or im2row - to fit into GEMM interface. The Indirect Convolution algorithm provides the efficiency of the GEMM primitive without the overhead of im2col transformation. In contrast to GEMM-based algorithms, the Indirect Convolution does not reshuffle the data to fit into the GEMM primitive but introduces an indirection buffer - a buffer of pointers to the start of each row of image pixels. This broadens the application of our modified GEMM function to convolutions with arbitrary kernel size, padding, stride, and dilation. The Indirect Convolution algorithm reduces memory overhead proportionally to the number of input channels and outperforms the GEMM-based algorithm by up to 62% on convolution parameters which involve im2col transformations in GEMM-based algorithms. This, however, comes at cost of minor performance reduction on 1x1 stride-1 convolutions.

研究の動機と目的

  • GEMMベースの畳み込み実装における im2col 変換の高いメモリコストと帯域幅コストを軽減すること。
  • コストの高いデータ再編成を伴わずに、多様なカーネルサイズ、パディング、ストライド、ドレーションに対応できる効率的で汎用的な畳み込み計算を可能にすること。
  • パフォーマンスを維持しながらメモリフットプリントを削減する GEMM 互換のプリミティブを提供すること。
  • GEMM ベース手法の汎用性を保ちつつ、im2col のオーバーヘッドを排除する新しいアルゴリズム的アプローチを検討すること。

提案手法

  • 出力ピクセルごとの対応する入力パッチの開始位置へのポインタを格納する間接参照バッファを導入する。
  • 標準的な GEMM 操作を、入力データに間接参照バッファを用いてアクセスするように変更した GEMM プリミティブに置き換えることで、im2col のメモリレイアウト変換を回避する。
  • 標準的な GEMM カーネルを間接アドレッシングで使用することで、高度に最適化された BLAS ライブラリとの互換性を維持する。
  • im2col がメモリ帯域幅制限であるのに対し、複数コアでスケーリングしやすい計算中心の GEMM プリミティブを採用する。
  • カーネルサイズ、パディング、ストライド、ドレーションに依存しないようにアルゴリズムを設計し、広範な適用性を実現する。
  • 畳み込みパrameterに応じて従来の GEMM と Indirect GEMM を切り替えるハイブリッド戦略を採用し、全体のパフォーマンス最適化を図る。

実験結果

リサーチクエスチョン

  • RQ1im2col 変換を排除してもパフォーマンスや汎用性を損なわせない GEMM ベースの畳み込みアルゴリズムを設計できるか?
  • RQ2さまざまな畳み込みハイパーパramータに対して、ポインタ間接参照ベースの GEMM プリミティブは、従来の GEMM および im2col ベースの GEMM と比較してどのようにパフォーマンスを発揮するか?
  • RQ3im2col バッファと比較して、間接参照バッファの維持に伴うメモリおよび計算オーバーヘッドはどの程度か?
  • RQ4計算中心の性質を有するため、マルチスレッド環境において GEMM ベース手法よりもインディレクト畳み込みアルゴリズムがよりよくスケーリングするか?
  • RQ5現在 im2col 変換を必要としている畳み込み、特に大きなカーネルに対して、同アルゴリズムが顕著な高速化を達成できるか?

主な発見

  • Indirect Convolution アルゴリズムは、im2col 変換を排除することで、入力チャネル数に比例してメモリオーバーヘッドを低減する。
  • im2col 変換を必要とする畳み込みにおいて、GEMM ベースの畳み込みを最大62%まで上回る。特に大きなカーネルに対して顕著である。
  • 1×1 より大きなカーネルの畳み込みでは、メモリ帯域幅の圧力を軽減することで、2.7–23.3%のパフォーマンス向上が得られる。
  • 1×1 ストライド2の畳み込みは、im2col を必要とするが、キャッシュ局所性の恩恵が少ないので、0.5–8.0%の小さな向上にとどまる。
  • 1×1 ストライド1の畳み込みは im2col を不要とするが、追加の間接参照の複雑さにより、0.3–1.9%のわずかなパフォーマンス劣化を示す。
  • アルゴリズムのパフォーマンス優位性は、システムの算術強度に比例するため、将来のハードウェア世代においても益々大きな恩恵を受けると予想される。

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

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

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

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