Lecture 3: Pruning and Sparsity (Part I) [TinyML]

>100 Views

May 09, 25

スライド概要

MIT 6.5940(https://hanlab.mit.edu/courses/2024-fall-65940)について勉強したときのスライド

profile-image

AI-Driven graduate student

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

TinyML - MIT 6 .5940 Lecture 3 Pruning and Sparsity (Part I) Ryota Murai TinyML - MIT 6.5940 1

2.

Pruningとは プルーニング 不要な重みやニューロンを削除し 軽量化する Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 2

3.

Pruningとは ちなみに:人間の脳も、成長の過程Pruningが行われることが分かっている TinyML - MIT 6.5940 3

4.

今日のAIは大き すぎる! メモリとモデルサイズのギャップを埋める技術としてのPruning TinyML - MIT 6.5940 4

5.

今日のAIは大き すぎる! 学術的にも近年注目されている TinyML - MIT 6.5940 5

6.

今日のAIは大き すぎる! NVIDIA Ampere Architectureにおけるサポー ト https://developer.nvidia.com/blog/structured-sparsity-in-the-nvidia-amperearchitecture-and-applications-in-search-engines/ 産業界でもハードウェアサポートが行われている TinyML - MIT 6.5940 6

7.

Pruningとは 問題設定 「Pruning後の重みを使用したときの 損失をなるべく小さくなる」ように Pruningする = Pruningして損失が大きくなると 「良いPruning」とは言い難い。 𝐿 = 損失関数, 𝑊𝑝 = プルーニング後の重み Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 7

8.

Pruning:基本手 順 • プルーニング粒度の決定 • どのレベルで削除するか(例:個々の重み、チャンネル、カーネルなど) • プルーニング基準の選定 • どの要素を削除するか(例:重みの大きさなど) • プルーニング率の設定 • どのくらい削除するか • ファインチューニング • 精度低下を防ぐため、削減後に再学習を行う TinyML - MIT 6.5940 8

9.

Pruning:基本手 順 実際に、適切な手法の選択によって性能は大きく変わる Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 9

10.

2. Pruning の 粒度(Granularity) (非 構造 化・ 構造 化) TinyML - MIT 6.5940 10

11.

Pruningの粒度 2Dの重み行列を例に考える この可視化のイメージ: 2Dの重み行列 TinyML - MIT 6.5940 11

12.

Pruningの粒度 :非構造化Pruning 個々の重みごとにPruningするか決定する →柔軟で重みを圧縮しやすい一方で、 規則性がないのでハードウェア最適化が難しい 例:各重みの絶対値を調べ、 下位10%を削除する TinyML - MIT 6.5940 12

13.

Pruningの粒度 :非構造化Pruning 「柔軟」なのでサイズを小さくしやすい TinyML - MIT 6.5940 13

14.

Pruningの粒度 :構造化Pruning 重みを「まとめた単位」で一気に削除する →柔軟さに欠けるが、 ハードウェア最適化しやすい TinyML - MIT 6.5940 14

15.

Pruningの粒度 :構造化Pruning CNNの例 𝒄𝒊 : 入力チャンネル 𝒄𝟎 : 出力チャンネル(またはフィル タ) 𝒌𝒉 : カーネルの高さ 𝒌𝒘 : カーネルの幅 CNNレイヤーの重みの形状は [𝑐0 , 𝑐𝑖 , 𝑘ℎ , 𝑘𝑤 ]である。 Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 15

16.

Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 16

17.

Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 17

18.

Pruningの粒度 :構造化Pruning • パターンベースPruning: N:M スパース性(N:M sparsity ) • 連続するM個の要素のうちN個を刈り取る (0がどこにあるかを保持する) 連続する4個のうち 2個を刈り取る https://developer.nvidia.com/blog/accelerating-inference-with-sparsity-using-ampere-and-tensorrt/ TinyML - MIT 6.5940 18

19.

Pruningの粒度 :構造化Pruning • パターンベースPruning: N:M スパース性(N:M sparsity ) • 連続するM個の要素のうちN個を刈り取る • 適切な再学習によって精度を維持した https://developer.nvidia.com/blog/accelerating-inference-with-sparsity-using-ampere-and-tensorrt/ TinyML - MIT 6.5940 19

20.

Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 20

21.

Pruningの粒度 :構造化Pruning • チャンネルPruning • 利点:チャンネル数削減による高速化 • 微妙:その他に比べ圧縮率が比較的低い > チャンネル レベル TinyML - MIT 6.5940 均等な圧縮 (Uniform Shrink) 21

22.

Pruningの粒度 :構造化Pruning • チャンネルPruning • 利点:チャンネル数削減による高速化 • 微妙:圧縮率が比較的低い Uniform Shrink チャンネル レベル AMC: Automl for Model Compression and Acceleration on Mobile Devices [He et al., ECCV 2018] TinyML - MIT 6.5940 22

23.

3. Pruning の 基準(Criterion) TinyML - MIT 6.5940 23

24.

Pruningの基準 性能を維持するには重要度の低いパラメータを削除しなければならない 寄与が小さいのでは? → どうやって判定する? TinyML - MIT 6.5940 24

25.

Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 要素ごとの場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 25

26.

Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 行ごと(L1正規化)の場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 26

27.

Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 行ごと(L2正規化)の場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 27

28.

Pruningの基準 :Scaling-based • スケーリングファクターが小さい層をPruningする • 出力をほとんど縮小しているため影響が小さいと判断する • スケーリングファクター:出力を何倍にするかを調整するパラメータ • 学習可能なパラメータ Learning Efficient Convolutional Networks through Network Slimming [Liu etal., ICCV 2017] TinyML - MIT 6.5940 28

29.

Pruningの基準 :Scaling-based • スケーリングファクターが小さい層をPruningする • スケーリングファクター:出力を何倍にするかを調整するパラメータ • 学習可能なパラメータ • Batch Normalization層のパラメータγを再利用できる TinyML - MIT 6.5940 29

30.

Pruningの基準 :Second-Order-based • シナプスのPruningによって生じる機能低下の誤差を最小限に抑える。 • 損失関数への影響をテイラー展開で予測しながらPruningする • Second-Order: テイラー展開時に2乗項まで使うの意 パラメータwを変えたときの損失(𝐿 𝑤 + ∆𝑤 )を近似する =(ある重みwの近くで展開する) Optimal Brain Damage [LeCun etal.,NeurIPS 1989] TinyML - MIT 6.5940 30

31.

Pruningの基準 :Second-Order-based 損失の変化を知りたいので𝐿(𝑤)を引く 十分に収束していれば(∇𝐿(𝑤) ≈ 0) 1次項は無視できる(OBD, LeCun et al) →重み𝑤𝑖 を変更したときの損失の変化は: 「重みが小さい」+「その部分の損失の曲率が小さい」ものを優先的に消す Hessianの逆行列が必要で、計算コストが非常に高い Optimal Brain Damage [LeCun etal.,NeurIPS 1989] TinyML - MIT 6.5940 31

32.

Pruningの基準 :Percentage-of-Zero-based • 出力0が多いなら消してしまう • 例えば、ReLUは入力が負なら0になる Batch, Width, Height APoZが大きいチャンネルを削除する Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures [Hu etal.,ArXiv 2017] TinyML - MIT 6.5940 32

33.

Pruningの基準 :Percentage-of-Zero-based • 出力0が多いなら消してしまう • 例えば、ReLUは入力が負なら0になる APoZが大きいチャンネルを削除する Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures [Hu etal.,ArXiv 2017] TinyML - MIT 6.5940 33

34.

Pruningの基準 :Regression-based 回帰によって重みを削除したときの損失の変化を予測する 最適化の具体的方法: とおいたとき を解くことである。なお 𝛽:各チャネルを使うかを決める係数ベクトル(長さ𝑐𝑖 ) 0なら削除 手順: 1. Wを固定してβを決定する 2. Βを固定してWを最適化 Channel Pruning for Accelerating Very Deep Neural Networks [He etal., ICCV 2017] TinyML - MIT 6.5940 34

35.

まとめ 学んだこと • Pruningとはなにか • Pruningの粒度 • Pruneする重みの選択方法 次扱うこと • Pruning率の見つけ方 • Pruningした層の訓練方法 • Pruning率を自動で発見する方法 • 異なる粒度のサポート TinyML - MIT 6.5940 35