概要
Structured Pruningが出来るPytorchのLibraryをまとめる
注目したい点は以下の通り
- Mask処理(weightをzeroにする) or Filter削除(Networkの形が変化する)
- FilterのImportance(重要度)を測る評価指標は何か
- Grouping手法があるか
Residualなどの複雑なNetworkのPruningに必要 - 学習時のPruning or 学習後のPruning
torch.nn.utils.prune.ln_structured
- Mask処理
- ImportanceはLn(L1,L2,...) Norm
NNI
- Mask処理
gate-decorator-pruning
- 調査中
Regularization-Pruning
FisherPruning
- Filter削除
- Groupingをサポート
Torch-Pruning
- Filter削除
- Groupingをサポート
only_train_once
- Filter削除
- Groupingをサポート
- OTOv1
- OTOv2
- OTOv3
- Pruningは学習後にfine-tuningしながら少しずつモデルサイズを小さくしていくのが一般的だが、OTOは学習前にLayerをGroupingすることで一回の学習でPruning出来る。Finetuningのコストが少なくなる。
まとめ
2024年2月現在に高速化する為に使えそうなPruningのLibraryは以下の2つ
- 学習後にPruningをしたい -> Torch-Pruning
- 学習と同時にPruningをしたい -> only_train_once