Skip to main content
QUICK REVIEW

[論文レビュー] SparseTrain:Leveraging Dynamic Sparsity in Training DNNs on General-Purpose SIMD Processors

Zhangxiaowen Gong, Houxiang Ji|arXiv (Cornell University)|Nov 22, 2019
Advanced Neural Network Applications参考文献 35被引用数 5
ひとこと要約

SparseTrain は、一般用途の SIMD CPU における DNN 学習中に ReLU 活性化関数に由来する動的スパarsity を活用するソフトウェアオンリーのフレームワークである。実行時におけるゼロ値の検出と、最適化されたループ順序およびベクトル化されたゼロチェックを用いた計算スキップにより、ハードウェアの変更なしに VGG16、ResNet-34、ResNet-50、Fixup ResNet-50 において、密行列積に対して 1.31x から 2.19x の高速化を達成した。

ABSTRACT

Our community has greatly improved the efficiency of deep learning applications, including by exploiting sparsity in inputs. Most of that work, though, is for inference, where weight sparsity is known statically, and/or for specialized hardware. We propose a scheme to leverage dynamic sparsity during training. In particular, we exploit zeros introduced by the ReLU activation function to both feature maps and their gradients. This is challenging because the sparsity degree is moderate and the locations of zeros change over time. We also rely purely on software. We identify zeros in a dense data representation without transforming the data and performs conventional vectorized computation. Variations of the scheme are applicable to all major components of training: forward propagation, backward propagation by inputs, and backward propagation by weights. Our method significantly outperforms a highly-optimized dense direct convolution on several popular deep neural networks. At realistic sparsity, we speed up the training of the non-initial convolutional layers in VGG16, ResNet-34, ResNet-50, and Fixup ResNet-50 by 2.19x, 1.37x, 1.31x, and 1.51x respectively on an Intel Skylake-X CPU.

研究の動機と目的

  • 一般用途の CPU における DNN 学習中に発生する動的スパarsity を効率的に活用するソフトウェア技術の不足に対処すること。
  • ReLU によって生じる中程度で時間的に変化する活性化および勾配のスパarsity パatters の課題を克服すること。
  • ハードウェアの変更や静的スパarsity の仮定なしに、顕著なパフォーマンス向上を実現すること。
  • 標準的な密行列データレイアウトおよびベクトル命令セット (SIMD) との互換性を維持すること。
  • VGG16、ResNet、Fixup ResNet-50 を含む多様な CNN アーキテクチャにおいて高いパフォーマンスを達成すること。

提案手法

  • データレイアウトの変換やスパース表現を用いずに、特徴マップおよび勾配におけるゼロ値を実行時において検出する。
  • ReLU の出力の再利用を大規模に amortize するために、計算ループの順序を再配置する。
  • SIMD ベクトル幅 (V) 沿いにゼロチェック操作をベクトル化し、命令レベル並列性を向上させ、分岐予測ミスを低減する。
  • ループ変換およびソフトウェアパイプラインを適用して、オーバーヘッドを最小限に抑え、データ局所性と並列性を向上させる。
  • 前方伝搬、入力による誤差逆伝搬、重みによる誤差逆伝搬の 3 つの学習フェーズを、同じスパarsity 対応キーネル設計で最適化する。
  • 静的ループタイリングと実行時分岐予測を組み合わせたハイブリッドアプローチを用い、短いループにおける予測ミスのペナルティを低減する。

実験結果

リサーチクエスチョン

  • RQ1一般用途の CPU における DNN 学習において、ソフトウェアオンリーの手法で ReLU 活性化関数に由来する動的スパarsity を効果的に活用できるか?
  • RQ2データレイアウトを変更せずに、密行列で最適化されたキーネルにゼロ検出および計算スキップを効率的に統合する方法は何か?
  • RQ3中程度の動的スパarsity において、オーバーヘッドを最小限に抑えつつパフォーマンス向上を最大化するためのループ順序およびベクトル化戦略は何か?
  • RQ4実世界の DNN において、スパarsity 利用は、高パフォーマンスな密行列積を上回る性能を示せるか、その程度はどの程度か?
  • RQ5異なるネットワークアーキテクチャにおいて、スパarsity や計算パターンの違いに応じて、この手法はどの程度スケーリング可能か?

主な発見

  • Intel Skylake-X CPU 上の VGG16 の非初期レイヤーにおいて、SparseTrain は密行列積に対して 2.19x の高速化を達成した。
  • Fixup ResNet-50 では 1.51x、ResNet-34 では 1.37x、ResNet-50 では 1.31x の高速化を、現実的なスパarsity 水準で達成した。
  • 0% スパarsity 時に、高度に最適化された密行列ベースラインの 10% 以内の性能を維持しており、低オーバーヘッドを示した。
  • 複数のアーキテクチャにわたり一貫したパフォーマンス向上が得られたため、現代の CNN に広く適用可能であることが示された。
  • データ表現を変更せずに、ゼロ値の入力および勾配に対する演算をスキップすることで、計算時間を顕著に削減した。
  • ベクトル化されたゼロチェックおよびループ最適化により、変換後のループでさえも、たとえ反復回数が少なくても分岐予測ミスのペナルティを顕著に低減した。

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

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

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

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