>100 Views
May 09, 25
スライド概要
MIT 6.5940(https://hanlab.mit.edu/courses/2024-fall-65940)について勉強したときのスライド
AI-Driven graduate student
TinyML - MIT 6 .5940 Lecture 3 Pruning and Sparsity (Part I) Ryota Murai TinyML - MIT 6.5940 1
Pruningとは プルーニング 不要な重みやニューロンを削除し 軽量化する Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 2
Pruningとは ちなみに:人間の脳も、成長の過程Pruningが行われることが分かっている TinyML - MIT 6.5940 3
今日のAIは大き すぎる! メモリとモデルサイズのギャップを埋める技術としてのPruning TinyML - MIT 6.5940 4
今日のAIは大き すぎる! 学術的にも近年注目されている TinyML - MIT 6.5940 5
今日の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
Pruningとは 問題設定 「Pruning後の重みを使用したときの 損失をなるべく小さくなる」ように Pruningする = Pruningして損失が大きくなると 「良いPruning」とは言い難い。 𝐿 = 損失関数, 𝑊𝑝 = プルーニング後の重み Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 7
Pruning:基本手 順 • プルーニング粒度の決定 • どのレベルで削除するか(例:個々の重み、チャンネル、カーネルなど) • プルーニング基準の選定 • どの要素を削除するか(例:重みの大きさなど) • プルーニング率の設定 • どのくらい削除するか • ファインチューニング • 精度低下を防ぐため、削減後に再学習を行う TinyML - MIT 6.5940 8
Pruning:基本手 順 実際に、適切な手法の選択によって性能は大きく変わる Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 9
2. Pruning の 粒度(Granularity) (非 構造 化・ 構造 化) TinyML - MIT 6.5940 10
Pruningの粒度 2Dの重み行列を例に考える この可視化のイメージ: 2Dの重み行列 TinyML - MIT 6.5940 11
Pruningの粒度 :非構造化Pruning 個々の重みごとにPruningするか決定する →柔軟で重みを圧縮しやすい一方で、 規則性がないのでハードウェア最適化が難しい 例:各重みの絶対値を調べ、 下位10%を削除する TinyML - MIT 6.5940 12
Pruningの粒度 :非構造化Pruning 「柔軟」なのでサイズを小さくしやすい TinyML - MIT 6.5940 13
Pruningの粒度 :構造化Pruning 重みを「まとめた単位」で一気に削除する →柔軟さに欠けるが、 ハードウェア最適化しやすい TinyML - MIT 6.5940 14
Pruningの粒度 :構造化Pruning CNNの例 𝒄𝒊 : 入力チャンネル 𝒄𝟎 : 出力チャンネル(またはフィル タ) 𝒌𝒉 : カーネルの高さ 𝒌𝒘 : カーネルの幅 CNNレイヤーの重みの形状は [𝑐0 , 𝑐𝑖 , 𝑘ℎ , 𝑘𝑤 ]である。 Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 15
Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 16
Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 17
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
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
Pruningの粒度 :構造化Pruning CNNの例 イレギュラー 非構造化 一般的 パターン ベース ベクトル レベル カーネル レベル チャンネル レベル 構造化Pruning Exploring the granularity of sparsity in convolutional neural networks [Mao etal., CVPR-W] TinyML - MIT 6.5940 20
Pruningの粒度 :構造化Pruning • チャンネルPruning • 利点:チャンネル数削減による高速化 • 微妙:その他に比べ圧縮率が比較的低い > チャンネル レベル TinyML - MIT 6.5940 均等な圧縮 (Uniform Shrink) 21
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
3. Pruning の 基準(Criterion) TinyML - MIT 6.5940 23
Pruningの基準 性能を維持するには重要度の低いパラメータを削除しなければならない 寄与が小さいのでは? → どうやって判定する? TinyML - MIT 6.5940 24
Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 要素ごとの場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 25
Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 行ごと(L1正規化)の場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 26
Pruningの基準 :Magnitude-based • ヒューリスティックな方法 • 「絶対値が大きな重みは、重要な重みだろう」 • 行ごと(L2正規化)の場合: Learning Both Weights and Connections for Efficient Neural Network [Han etal., NeurIPS 2015] TinyML - MIT 6.5940 27
Pruningの基準 :Scaling-based • スケーリングファクターが小さい層をPruningする • 出力をほとんど縮小しているため影響が小さいと判断する • スケーリングファクター:出力を何倍にするかを調整するパラメータ • 学習可能なパラメータ Learning Efficient Convolutional Networks through Network Slimming [Liu etal., ICCV 2017] TinyML - MIT 6.5940 28
Pruningの基準 :Scaling-based • スケーリングファクターが小さい層をPruningする • スケーリングファクター:出力を何倍にするかを調整するパラメータ • 学習可能なパラメータ • Batch Normalization層のパラメータγを再利用できる TinyML - MIT 6.5940 29
Pruningの基準 :Second-Order-based • シナプスのPruningによって生じる機能低下の誤差を最小限に抑える。 • 損失関数への影響をテイラー展開で予測しながらPruningする • Second-Order: テイラー展開時に2乗項まで使うの意 パラメータwを変えたときの損失(𝐿 𝑤 + ∆𝑤 )を近似する =(ある重みwの近くで展開する) Optimal Brain Damage [LeCun etal.,NeurIPS 1989] TinyML - MIT 6.5940 30
Pruningの基準 :Second-Order-based 損失の変化を知りたいので𝐿(𝑤)を引く 十分に収束していれば(∇𝐿(𝑤) ≈ 0) 1次項は無視できる(OBD, LeCun et al) →重み𝑤𝑖 を変更したときの損失の変化は: 「重みが小さい」+「その部分の損失の曲率が小さい」ものを優先的に消す Hessianの逆行列が必要で、計算コストが非常に高い Optimal Brain Damage [LeCun etal.,NeurIPS 1989] TinyML - MIT 6.5940 31
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
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
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
まとめ 学んだこと • Pruningとはなにか • Pruningの粒度 • Pruneする重みの選択方法 次扱うこと • Pruning率の見つけ方 • Pruningした層の訓練方法 • Pruning率を自動で発見する方法 • 異なる粒度のサポート TinyML - MIT 6.5940 35