Slide 1

Slide 1 text

Deep Neural Networkのための GPU演算処理⾼速化に関する研究 Ryohei Izawa October 17, 2020

Slide 2

Slide 2 text

⽬次 ● 概要(⽬的,背景) ● 先⾏研究と課題 ● 研究計画 ● 関連研究 ● 参考⽂献 1

Slide 3

Slide 3 text

概要 2

Slide 4

Slide 4 text

研究の概要 3 Deep Neural Networkにおける,疎⾏列演算のGPU上での演算速度を⾼速化したい. 取り組みたいこと 疎⾏列をCSR⽅式で圧縮した上で⾼速化する⼿法が提案されているが,転置⾏列への対応が困難. 既存研究の問題点 転置⾏列への対応が可能なCSB⽅式により圧縮した⼿法を検討し,演算処理速度向上の可能性を検証. 研究のアプローチ

Slide 5

Slide 5 text

研究の⽬的 Deep Neural Network(DNN)の演算を⾼速化するために,GPUを⽤いた最適な疎⾏列演算処理⼿法を ⾒つけ出すこと. DNNの演算量を軽減するために, 層や重みの⼀部を削除 0 2 0 1 4 0 0 0 0 0 0 3 1 2 1 2 1 1 3 3 2 8 5 9 1 3 2 1 3 6 8 7 4 8 4 8 3 9 6 3 ⼊⼒(密⾏列) 重み(疎⾏列) 出⼒(密⾏列) 削除された重み 重み削除後に疎⾏列演算が可能になる 疎⾏列演算をGPU上で ⾼速に⾏う⼿法の研究 4

Slide 6

Slide 6 text

研究の背景及び動機 DNNの学習・推論には膨⼤な演算処理が必要であり,この処理に時間を要する. GPUのメモリ容量や演算処理性能の制約が⼤きな課題となっている[1]. [1] Cheng, Yu, et al. "A survey of model compression and acceleration for deep neural networks." arXiv preprint arXiv:1710.09282 (2017). [2] Blalock, Davis, et al. "What is the state of neural network pruning?." arXiv preprint arXiv:2003.03033 (2020). [3] Anwar, Sajid, and Wonyong Sung. "Compact deep convolutional neural networks with coarse pruning." arXiv preprint arXiv:1610.09639 (2016). 当該課題を解決するために,DNNのパラメータを削除して必要な演算を軽減する⼿法(剪定) が数多く提案 されている[2]が,演算速度向上と精度向上がトレードオフの関係[3]にある. 背景 動機 現職で機械学習エンジニアとしてプロジェクトを遂⾏するにあたり,計算リソース不⾜を原因とした課 題が実運⽤に⾄るまでのハードルとなっていると感じた. 研究的アプローチにより当該課題を解決する⼒を⾝につけたい. 5

Slide 7

Slide 7 text

先⾏研究と課題 6

Slide 8

Slide 8 text

剪定の概要とトレードオフ [4] Song Han, Huizi Mao, and William J Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. International Conference on Learning Representations (ICLR), 2016. [5] Trevor Gale, Erich Elsen, and Sara Hooker. The State of Sparsity in Deep Neural Networks. CoRR, vol. abs/1902.09574, 2019. 粗 / 構造 細 / ⾮構造 速い 遅い 低い ⾼い 演算速度 精度 剪定の単位 層 フィルタ カーネル 重み 畳み込み層 … 剪定の対象例 DNNのパラメータ数を減らして⾏列を疎⾏列化し,必要な演算を軽減する⼿法[4]. 剪定の粒度に応じて,演算速度と精度がトレードオフの関係にある[5]. 7

Slide 9

Slide 9 text

⾮構造な疎⾏列の演算⾼速化⼿法 [6] Trevor Gale, Matei Zaharia, Cliff Young, and Erich Elsen. 2020. Sparse GPU Kernels for Deep Learning. arXiv preprint arXiv:2006.10901, 2020. 圧縮前 a 0 0 0 0 0 b 0 0 0 c 0 0 0 0 d 0 e 0 0 0 0 0 0 0 0 0 f g 0 0 0 h 0 i j Compressed Sparse Row(CSR) 圧縮後 剪定の粒度が細かく,⾮構造な疎⾏列を扱うためのGPUカーネルが検討されている. • 疎⾏列をCompressed Sparse Row(CSR)形式で圧縮した上で,複数の⾼速化要素を組み合わせ, DNNの精度損失を防ぎながら⾮構造な疎⾏列演算を⾼速化する⼿法[6] 値 a b c d e f g h i j 列番号 0 0 4 3 5 3 4 2 4 5 ⾏ごとの⾮ゼロ要素数の累積和: (0, 1, 3, 5, 5, 7, 10) ⾏数+1に圧縮 8

Slide 10

Slide 10 text

既存⼿法の課題 CSR形式での圧縮を⽤いた⼿法では,転置⾏列への対応は困難[7] • ⾏列演算毎にCSR形式から転置⾏列へ変換をすることは,メモリアクセスが少なくとも2回発⽣(転置 ⾏列変換と⾏列演算)することになる. • 列のインデックスを圧縮するCompressed Sparse Column(CSC)形式を保持することも考えられるが, メモリ⾮効率. [7] Aydın Buluç, Jeremy T. Fineman, Matteo Frigo, John R. Gilbert, and Charles E. Leiserson. Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks. In SPAA'09: Proceedings of the 21st Annual ACM Symposium on Parallel Algorithms and Architectures, 2009. 9

Slide 11

Slide 11 text

研究計画 10

Slide 12

Slide 12 text

研究のアプローチ [7] Aydın Buluç, Jeremy T. Fineman, Matteo Frigo, John R. Gilbert, and Charles E. Leiserson. Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks. In SPAA'09: Proceedings of the 21st Annual ACM Symposium on Parallel Algorithms and Architectures, 2009. 圧縮前 a 0 0 0 0 0 b 0 0 0 c 0 0 0 0 d 0 e 0 0 0 0 0 0 0 0 0 f g 0 0 0 h 0 i j 圧縮後 Compressed Sparse Blocks(CSB) DNNの⾮構造な疎⾏列演算を⾼速化し,かつ,疎な⾏列および転置⾏列のどちらにも対応するため, 疎⾏列をCompressed Sparse Blocks(CSB)[7] 形式で圧縮する. [新規性:DNNの⾮構造な疎⾏列演算を⾼速化するためにCSBを適⽤した⼿法を提案] 値 a b c d e f g h i j Block内の⾏番号 0 1 1 0 0 0 0 1 1 1 Block内の列番号 0 0 0 1 1 1 0 0 0 1 Blockごとの⾮ゼロ要素数の累積和: (0, 2, 2, 3, 3, 4, 5, 5, 7, 10) block Block数+1 少ないビット数で 符号化 11

Slide 13

Slide 13 text

研究の⼿順 剪定が適⽤されたDNNで⾏われる疎⾏列-密⾏列乗算に焦点を当てる. DNNのモデルおよびデータセットは所与のものとする. [8] Carl Yang, Aydin Buluc, and John D Owens. Design Principles for Sparse Matrix Multiplication on the GPU. arXiv preprint arXiv:1803.08601, 2018. 前提: CSB形式の圧縮⼿法を⽤いてDNNの疎⾏列-密⾏列乗算を⾏い,プロファイリングに基づき, どこにボトルネックがあるかを確認する. Step1: (仮説) 不規則⾏列上でCSBを⽤いて⾼性能を実現するためには,効率的な負荷分散が必要[8] 効率的な負荷分散⼿法の検討. Step2: 複数のベンチマークモデル・データセットとの⽐較を通じて,演算処理速度向上の可能 性を検証する. Step3: 12

Slide 14

Slide 14 text

研究遂⾏にあたって • 機械学習エンジニアとしての開発及びプロジェクト管理の経験 • PythonやC++でのプログラミング経験 • 機械学習に関する論⽂の執筆経験(共著) 研究に⽣かすことができる知⾒ 現状の課題 • GPU実⾏環境であるCUDAに関する知識 • 疎⾏列演算のための負荷分散⼿法に関する調査 ⇨ CUDA Cプログラミングの学習や研究室での議論を通じて理解を深めるとともに, 引き続き論⽂調査を⾏う. 13

Slide 15

Slide 15 text

研究スケジュール 2021.10 ············ CSB形式での圧縮⽅式の実装とボトルネック調査 2021.12 ············ 負荷分散⼿法の実装とベンチマークモデル・データでの実験 2022.01 ············ 提案⼿法の既存⼿法に対する有効性の⾔語化 2022.02 ············ 研究計画提案書提出 2022.04 ············ 提案⼿法の評価, 既存⼿法の問題点や改善点などの考察 2022.09 ············ 中間報告 2022.10 ············ 学会提出 2023.02 ············ 修⼠論⽂, 課題研究報告書提出 14

Slide 16

Slide 16 text

研究の概要(再掲) 15 Deep Neural Networkにおける,疎⾏列演算のGPU上での演算速度を⾼速化したい. 取り組みたいこと 疎⾏列をCSR⽅式で圧縮した上で⾼速化する⼿法が提案されているが,転置⾏列への対応が困難. 既存研究の問題点 転置⾏列への対応が可能なCSB⽅式により圧縮した⼿法を検討し,演算処理速度向上の可能性を検証. 研究のアプローチ

Slide 17

Slide 17 text

関連研究 16

Slide 18

Slide 18 text

Sparse GPU Kernels for Deep Learning ● スパース性の構造に制約を設けずに,精度を落とさずに演算を⾼速化する⼿法を提案したもの. ● DNNのスパースな計算を⾼速化するために利⽤できる好ましい特性を明らかにした. ● 3つの⼿法により⾼速化を実現 Trevor Gale, Matei Zaharia, Cliff Young, and Erich Elsen. 2020. Sparse GPU Kernels for Deep Learning. arXiv preprint arXiv:2006.10901, 2020. • 処理要素間の計算を分解するための1次元タイル化スキーム • 疎なデータ構造のメモリアドレスの不整合に対してベクトルメモリ命令を使⽤すること を可能にするサブワープタイリングとリバースオフセットメモリアライメント • 並列化スキームから切り離された処理要素間の負荷分散計算のためのアプローチである row swizzle負荷分散 17

Slide 19

Slide 19 text

SparseRT: Accelerating Unstructured Sparsity on GPUs for Deep Learning Inference ● ⾮構造な剪定を施されたDNNのうち,1x1畳み込みと全結合層の疎⾏列演算を⾼速化するための GPUカーネルを提案. ● 密な⾏列の乗算について、インスペクタ-エグゼクタフレームワークで不要な計算を単純に削除. ● 幾何学的平均速度が,スパース度90%では同等の密な計算に⽐べて3.4倍,スパース度95%では5.4 倍向上.疎な3x3畳み込みについては,ResNet-50のユースケースで5倍以上の⾼速化を⽰した. Ziheng Wang. SparseRT: Accelerating Unstructured Sparsity on GPUs for Deep Learning Inference. arXiv preprint arXiv:2008.11849, 2020. 18

Slide 20

Slide 20 text

Fast Sparse ConvNets ● 75%-90%のスパース率を持つネットワークを対象に,⼀部制約を設けた構造的な疎⾏列の演算を⾼速化 するためのGPUカーネルを提案. ● スパース・プリミティブを効率的に実装し,スパース・バージョンのMobileNet v1,MobileNet v2, EfficientNetアーキテクチャで,密なNNよりも効率性と精度が⼤幅に上回った. ● ⼿法の特徴:①活性化⾏列からベクトルロードを⾏う,②L1キャッシュに値を保持し活性化⾏列の値へ のアクセスを⾼速に⾏う,③重み疎⾏列のチャネル⽅向に制限を設けてブロックを作成する. Erich Elsen, Marat Dukhan, Trevor Gale, and Karen Simonyan, Fast Sparse Convnets, CoRR, vol. abs/1911.09723, 2019. 19

Slide 21

Slide 21 text

GPU Kernels for Block-Sparse Weights ● Block-Sparseな重みを持つNN向けに最適化されたGPUカーネルを提案. ● 最⼩で8x8の疎なblockで効率的に演算することを可能にした. Scott Gray, Alec Radford, and Diederik Kingma. 2017. GPU Kernels for Block-Sparse Weights. https://s3-us-west-2.amazonaws.com/openai-assets/blocksparse/blocksparsepaper.pdf. (2017). [Online; accessed 12-January-2018]. 20

Slide 22

Slide 22 text

cuDNN: Efficient Primitives for Deep Learning ● NVIDIAが2014年に,DNNワークロード⽤に最適化されたルーチンを持つライブラリを作成した もの. ● 広範囲の⼊⼒サイズに対して信頼性の⾼い性能を提供し、⾼度に最適化された⾏列乗算ルーチン を利⽤することで、補助メモリを必要とせずに⾼い性能を提供するconvolutionsの新しい実装を 提⽰. S. Chetlur, C. Woolley, P. Vandermersch, J. Cohen, J. Tran, B. Catanzaro, and E. Shelhamer. cuDNN: Efficient primitives for deep learning. arXiv preprint, 1410.0759, 2014. 21

Slide 23

Slide 23 text

Design Principles for Sparse Matrix Multiplication on the GPU ● スパース⾏列密⾏列乗算(SpMM)のための2つの新しいアルゴリズム提案したもの ● 既存のSpMMの研究がスレッドレベルの並列性に焦点を当てていたのに対し,命令レベルの並列 性と負荷分散によるレイテンシの隠蔽にも焦点を当てている ● ⼊⼒⾏列と出⼒⾏列への効率的なアクセスを可能にする、SpMMの優れた性能を得るための鍵と なるメモリアクセスパターンを特定した ● 最先端のSpMM実装と⽐較して、4.1倍のピーク速度⾼速化と31.7%の幾何平均速度向上を実証 Carl Yang, Aydin Buluc, and John D Owens. Design Principles for Sparse Matrix Multiplication on the GPU. arXiv preprint arXiv:1803.08601, 2018. (i)マージベースのロードバランシング (ii)⾏メジャー合体メモリアクセス 22

Slide 24

Slide 24 text

Parallel Sparse Matrix-Vector and Matrix-Transpose-Vector Multiplication Using Compressed Sparse Blocks ● 疎⾏列-ベクトル乗算のAxとATxどちらも計算できる圧縮形式を提案したもの. A. Bulu¸c, J. T. Fineman, M. Frigo, J. R. Gilbert, and C. E. Leiserson. Parallel sparse matrix-vector and matrix transpose-vector multiplication using compressed sparse blocks. In Proc. SPAA ’09, pages 233–244, 2009. 圧縮前 a 0 0 0 0 0 b 0 0 0 0 0 0 0 0 c 0 d 0 0 0 0 0 0 0 0 0 e f 0 0 0 0 0 0 g 圧縮後 Compressed Sparse Blocks(CSB) values: (a, b, c, d, e, f, g) row_ind: (0, 1, 0, 0, 0, 0, 1) col_ind: (0, 0, 1, 1, 1, 0, 1) blk_ptr: (0, 2, 2, 2, 2, 3, 4, 4, 5, 7) 23

Slide 25

Slide 25 text

High-performance sparse matrix-matrix products on Intel KNL and multicore architectures ● SpGEMMの⾼速化のための,マルチコアおよびマルチコアプロセッサ⽤の最適化⼿法を提案. ● Intel Xeon Phi (Knights Landing or KNL)上のメモリ管理とスレッドスケジューリングによる複数 のボトルネックを特定. ● マルチコアプロセッサを対象に、ハッシュテーブルベースのアルゴリズムを開発し、ヒープベース の共有メモリでSpGEMMアルゴリズムを最適化.(99%以上スパースの場合を想定) Yusuke Nagasaka, Satoshi Matsuoka, Ariful Azad, and Aydın Buluc . High-performance sparse matrix-matrix prod-ucts on intel knl and multicore architectures. InProceedings of the 47th International Conference on Parallel Processing Companion, ICPP ’18, pages 34:1–34:10, New York, NY,USA, 2018. ACM. 24

Slide 26

Slide 26 text

The State of Sparsity in Deep Neural Networks ● マグニチュードプルーニングにより,ResNet50のスパース度合いと精度の新しいトレードオフを 達成 ● 剪定によって学習された⾮構造化スパースアーキテクチャをスクラッチから学習しても同等の精 度が得られる,という既存研究の結果に対して反証 ● ベンチマークのための,コード,モデルチェックポイント,ハイパーパラメータ設定をオープン ソース化 Trevor Gale, Erich Elsen, and Sara Hooker. The State of Sparsity in Deep Neural Networks. CoRR, vol. abs/1902.09574, 2019. 25

Slide 27

Slide 27 text

Deep compression: Compressing deep neural networks with pruning, trained quantization and Huffman coding ● Deepがモバイルでも動くように必要なメモリ容量と消費電⼒を削減するため、ニューラルネット ワークの精度に影響を与えることなく、ネットワークの記憶容量を削減する「深層圧縮」⼿法を 提案したもの ● 剪定、量⼦化、ハフマンコーディングの3段階で圧縮する ● 剪定においては,閾値以下の重みを削除する⽅法を採⽤ Song Han, Huizi Mao, and William J Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. International Conference on Learning Representations (ICLR), 2016. 26

Slide 28

Slide 28 text

Compact Deep Convolutional Neural Networks With Coarse Pruning ● 剪定を特徴マップ単位とカーネル単位で⾏い,それぞれの粒度に対して最⼩の敵対的な剪定マス クを選択するシンプルで汎⽤的な⼿法を提案 ● 剪定候補を決定するプロセスとして,ランダムにN個の剪定組み合わせを取り出し,MCR(Mis Classification Rate)で評価して剪定対象を決定する⼿法を採⽤ ● CIFAR10で精度損失を1%に抑え、85%以上のスパース化を達成 Sajid Anwar and Wonyong Sung. Compact deep convolutional neural networks with coarse pruning. arXiv preprint arXiv:1610.09639, 2016. 27

Slide 29

Slide 29 text

To prune, or not to prune: exploring the efficacy of pruning for model compression ● 最⼩限のチューニングで様々なモデル/データセットに適⽤でき、学習プロセスにシームレスに組み込み 可能な、シンプルなPruning⼿法を提案. ● PruningとFine-tuninを同時に⾏う1-stageのPruning ● 絶対値が⼩さいWeightから徐々にPruningする 28 Michael Shu, Suyog Gupta, To prune, or not to prune: exploring the efficacy of pruning for model compression. 6th International Conference on Learning Representations, ICLR 2018 - Workshop Track Proceedings. Sparcity Function

Slide 30

Slide 30 text

参考⽂献 29

Slide 31

Slide 31 text

[1] Yu Cheng, Duo Wang, Pan Zhou, and Tao Zhang. A survey of model compression and acceleration for deep neural networks. arXiv preprint arXiv:1710.09282, 2017. [2] Davis Blalock, Jose Javier Gonzalez Ortiz, Jonathan Frankle, and John Guttag. What is the state of neural network pruning? in MLSys, 2020. [3] Sajid Anwar and Wonyong Sung. Compact deep convolutional neural networks with coarse pruning. arXiv preprint arXiv:1610.09639, 2016. [4] Song Han, Huizi Mao, and William J Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. International Conference on Learning Representations (ICLR), 2016. [5] Trevor Gale, Erich Elsen, and Sara Hooker. The State of Sparsity in Deep Neural Networks. CoRR, vol. abs/1902.09574, 2019. 30

Slide 32

Slide 32 text

[6] Trevor Gale, Matei Zaharia, Cliff Young, and Erich Elsen. 2020. Sparse GPU Kernels for Deep Learning. arXiv preprint arXiv:2006.10901, 2020. [7] Aydın Buluç, Jeremy T. Fineman, Matteo Frigo, John R. Gilbert, and Charles E. Leiserson. Parallel sparse matrix-vector and matrix-transpose-vector multiplication using compressed sparse blocks. In SPAA'09: Proceedings of the 21st Annual ACM Symposium on Parallel Algorithms and Architectures, 2009. [8] Carl Yang, Aydin Buluc, and John D Owens. Design Principles for Sparse Matrix Multiplication on the GPU. arXiv preprint arXiv:1803.08601, 2018. [9] Ziheng Wang. SparseRT: Accelerating Unstructured Sparsity on GPUs for Deep Learning Inference. arXiv preprint arXiv:2008.11849, 2020. [10] Erich Elsen, Marat Dukhan, Trevor Gale, and Karen Simonyan, Fast Sparse Convnets, CoRR, vol. abs/1911.09723, 2019. 31

Slide 33

Slide 33 text

[11] Scott Gray, Alec Radford, and Diederik Kingma. 2017. GPU Kernels for Block-Sparse Weights. https://s3-us- west-2.amazonaws.com/openai-assets/blocksparse/blocksparsepaper.pdf. (2017). [Online; accessed 12-January- 2018]. [12] S. Chetlur, C. Woolley, P. Vandermersch, J. Cohen, J. Tran, B. Catanzaro, and E. Shelhamer. cuDNN: Efficient primitives for deep learning. arXiv preprint, 1410.0759, 2014. [13] Yusuke Nagasaka, Satoshi Matsuoka, Ariful Azad, and Aydın Buluc . High-performance sparse matrix- matrix prod-ucts on intel knl and multicore architectures. InProceedings of the 47th International Conference on Parallel Processing Companion, ICPP ’18, pages 34:1–34:10, New York, NY,USA, 2018. ACM. 32