[論文レビュー] MEC: Memory-efficient Convolution for Deep Neural Network
MEC(メモリ効率の良い畳み込み)は、入力テンソルを高圧縮形式に効果的に変換することでメモリオーバーヘッドを低減する新しい畳み込みアルゴリズムであり、最適化されたBLASルーチンを介して高速な行列乗算を実現する。従来手法と比較して、モバイルデバイス上でのメモリ使用量を最大3.4倍低減し、推論速度を90%高速化する。CPUおよびGPUプラットフォームの多様なDNNワークロードにおいて顕著な性能向上を達成する。
Convolution is a critical component in modern deep neural networks, thus several algorithms for convolution have been developed. Direct convolution is simple but suffers from poor performance. As an alternative, multiple indirect methods have been proposed including im2col-based convolution, FFT-based convolution, or Winograd-based algorithm. However, all these indirect methods have high memory-overhead, which creates performance degradation and offers a poor trade-off between performance and memory consumption. In this work, we propose a memory-efficient convolution or MEC with compact lowering, which reduces memory-overhead substantially and accelerates convolution process. MEC lowers the input matrix in a simple yet efficient/compact way (i.e., much less memory-overhead), and then executes multiple small matrix multiplications in parallel to get convolution completed. Additionally, the reduced memory footprint improves memory sub-system efficiency, improving performance. Our experimental results show that MEC reduces memory consumption significantly with good speedup on both mobile and server platforms, compared with other indirect convolution algorithms.
研究の動機と目的
- im2col、FFT、Winogradなどの間接的畳み込み手法が、メモリ制限のあるデバイスで性能を低下させる高メモリオーバーヘッドに対処すること。
- 正確性を損なわずに高い計算性能を維持するメモリ効率の良い畳み込みアルゴリズムを開発すること。
- キャッシュ局所性およびメモリサブシステム効率を向上させるために、特にメモリが限られたモバイルおよびサーバープラットフォームでメモリフットプリントを低減すること。
- モバイル、GPU、CPUシステムを含む多様なハードウェアに展開可能な汎用的かつプラットフォームに依存しない畳み込みエンジンを構築すること。
- エッジおよびモバイルAIアプリケーションにおけるエネルギー消費量の低減と応答時間の改善を図るため、メモリトラフィックおよびSRAM使用量を最小限に抑えること。
提案手法
- 従来のim2colやWinograd手法と比較して、はるかに少ないメモリで実現可能な、入力特徴マップを圧縮されたテンソル形式(L)に変換するコンactな降下技術を提案する。
- 最適化されたBLASルーチンを活用して、複数の小さな行列乗算を並列に実行し、高速なGEMM演算を活用する。
- 標準畳み込みと同一の機能的出力を維持するが、効率的なデータレイアウトのおかげで、顕著に低いメモリフットプリントを実現する。
- 行優先のテンソルインデキシングと部分行列演算を用い、データ移動を伴わずに既存のBLASライブラリに直接統合可能である。
- キャッシュ局所性を向上させるためのメモリアクセスパターンを最適化し、特にサーバーCPUの複雑なキャッシュ階層に大きな利点をもたらす。
- カーネル設定の制限がなく、CPUおよびGPUへのデプロイをサポートし、すべてのカーネルとチャネルで完全な並列化を実現可能である。
実験結果
リサーチクエスチョン
- RQ1新しい行列降下方式により、計算効率を損なわずに畳み込みにおけるメモリオーバーヘッドを低減できるか?
- RQ2モバイルおよびサーバープラットフォーム上でのメモリ消費量と実行時間において、MECはim2col、FFT、Winogradと比較してどの程度優れているか?
- RQ3低減されたメモリフットプリントが、キャッシュ効率および畳み込み演算全体のパフォーマンスにどの程度の向上をもたらすか?
- RQ4カーネル固有のチューニングや設定制約なしに、MECはCPU、GPU、モバイルなどの多様なハードウェアプラットフォームで高いパフォーマンスを達成できるか?
- RQ5MECのメモリ効率が、ResNet-101などの実世界のDNNにおいて、エネルギー効率および推論速度の測定可能な向上にどのように寄与するか?
主な発見
- MECは、モバイルプラットフォーム上でのim2colベースの畳み込みと比較して、最大3.4倍のメモリ消費量削減を達成し、平均で3.2倍の改善を示した。
- MEC.cpuは、cv6などの特定のレイヤーでConv.cpuに比べて最大90%高速な推論を達成し、モバイルデバイス全体で20%の高速化を実現した。
- サーバーCPUでは、MEC.cpuはConv.cpuに比べて実行時間を8.8倍短縮し、7つのベンチマークのうち5つでWino.cpuを上回った。
- サーバーGPUでは、MEC.gpuはテストされたすべての手法の中で最も低いメモリオーバーヘッドを示し、データ移動が少ないため、Conv.gpuに比べて85%高速な行列書き込みを実現した。
- モバイル上でResNet-101を推論する際、MECは合計メモリ使用量を3倍低減し、標準畳み込みと比較して実行時間を20%高速化した。
- デフォルトのキャッシュシステムにおいて、MEC.cpuは最後のレベルキャッシュミス率が0.3%(Conv.cpuは4%)にとどまり、優れたキャッシュ効率を示した。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。