# 枝刈り ## 定義 枝刈り(Pruning)とは、ニューラルネットワークの重みのうち結果への寄与がほとんどない部分を除去し、計算量を削減する手法である。粒度によって非構造化枝刈りと構造化枝刈りの2種類に大別される(Source: [[@2026__技術評論社__実践的パフォーマンスエンジニアリングによるAI高速化 - Chapter 3 パフォーマンス改善]] §3.3.2)。 ### 非構造化枝刈り(Unstructured Pruning) 重みがほぼゼロに近い場合に個々の重みをゼロにする、細かい粒度の枝刈り。高い圧縮率を達成できるが、結果として疎行列になるため、それを効率的に処理できる専用ハードウェアがなければ実際の高速化にはつながりにくい。専用ハードウェアの例がNVIDIA Ampere以降のTensorCoreの疎性演算(Sparsity Mode)で、「4つの連続値のうち必ず2つをゼロにする」2:4疎性のみに対応する。これにより計算量が半分になり演算速度を倍にできる。利用にはcuSPARSELt等のライブラリを利用する高位AIフレームワークが必要になる。 ### 構造化枝刈り(Structured Pruning) 個別の重みでなく、小行列・チャンネル・フィルタ・注意機構のヘッド・層やブロック丸ごとといった構造単位でまとめて削除する、粗い粒度の枝刈り。圧縮率は非構造化枝刈りより低いが、モデル構造が密なまま維持されるため標準的なハードウェア(CPU/GPU)でも高速化が可能になる。 ### 枝刈り後の精度維持 枝刈り後の精度劣化を補正するため、学習率を小さくした小規模ステップのファインチューニングによる再学習が併用されることがある。 ## 横断的知見 - 第3章は枝刈りの圧縮率・演算効率という一般的な効果面を論じるが、第8章(自動運転AI推論、CUDA-BEVFusion)の実測では、メモリ律速の処理では枝刈りの効果が限定的になる(処理時間短縮1.3%程度)という条件依存性が具体化される。理由は、活性値(中間出力)の要素数が重みの要素数を大きく上回るため、重みの枝刈りによるメモリ転送量削減効果がほぼ0になるからである。これは[[量子化]]の横断的知見で観察された「演算律速では量子化が最も効く(12.0%短縮)」という対比とちょうど逆の条件依存性であり、律速要因(演算 vs メモリ)に応じて枝刈りと量子化のどちらを優先すべきかを判断する材料になる。(Source: [[@2026__技術評論社__実践的パフォーマンスエンジニアリングによるAI高速化 - Chapter 3 パフォーマンス改善]] §3.3.2, [[@2026__技術評論社__実践的パフォーマンスエンジニアリングによるAI高速化 - Chapter 8 実践5:自動運転AI推論]]) ## 未解決の問い - 非構造化枝刈りの2:4疎性は現時点でTensorCoreが対応する唯一の疎性パターンだが、将来的にさらに疎な(例: 1:4等)パターンに対応するハードウェアが登場した場合、圧縮率と演算効率のトレードオフはどう変化するか。 - 構造化枝刈り(層・ブロック単位)と[[Mixture-of-Experts]](エキスパート単位の動的選択)は、いずれも「不要な計算単位を丸ごと除外する」という点で発想が共通する。静的な構造化枝刈りと動的なMoEルーティングを組み合わせた場合、両者の削減効果は相加的か、それとも重複するか。 - 枝刈り後のファインチューニングのコストと、[[量子化]]における量子化前提学習(QAT)のコストは、同じモデルに両方を適用する場合どのような順序・組み合わせが最も効率的か。 ## 関連 - ソース: [[@2026__技術評論社__実践的パフォーマンスエンジニアリングによるAI高速化 - Chapter 3 パフォーマンス改善]] - 概念: [[Mixture-of-Experts]] / [[量子化]] - 関連 MOC: [[分散深層学習 - MOC]] ## 出典 - [[@2026__技術評論社__実践的パフォーマンスエンジニアリングによるAI高速化 - Chapter 3 パフォーマンス改善]](§3.3.2 冗長な計算を除去する:枝刈り。非構造化/構造化枝刈り・NVIDIA Ampere 2:4疎性)