【もでるぷるーにんぐ】
モデルプルーニング とは?
最終更新:
💡 削る部分を選び、品質と実行環境を確かめる
ニューラルネットワークの重みをゼロにしたり、チャネルなどのまとまりを取り除いたりして、軽量化を目指す技術。品質への影響を確認し、保存形式と実行環境に合わせて効果を測る。
📌 このページのポイント
プルーニングって、学習したモデルの一部を削っちゃうってこと?
そうだよ。重みの一部をゼロにしたり、チャネルなどのまとまりを減らしたりする。刈り込みという意味の名前だね。ただし、どのモデルにも削って問題ない部分が同じ割合であるわけではないんだ。
どうやって削る部分を選ぶの?
削ったら精度は落ちる?
影響はモデルや削り方によるよ。追加学習で調整し、同じ評価条件で元のモデルと比べよう。精度95%維持やサイズ半減などは、条件のある実験結果として示すべきで、どんなモデルでも得られる数値ではないんだ。
重みをゼロにすれば、すぐ小さくて速くなる?
普通の密な配列のまま保存すれば、ゼロも場所を使うよ。圧縮や疎な保存形式が必要な場合がある。計算でもゼロの部分を省ける実装でなければ速くならない。構造化も、ゼロのマスクを付けるだけか、実際に小さな構造へ作り直すかを区別しよう。
スマホで動かすときにも使える?
選択肢の一つだよ。例えばTensorFlowの例では、XNNPACKの対応条件に合うモデルを刈り込み、変換後に機器上で速度を測る。量子化などを組み合わせる場合も、品質・保存サイズ・速度を別々に確認する。プルーニングだけで大きなモデルが必ず動くとは限らないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「モデルプルーニング」って出てきたら「モデルの一部を削り、品質を確かめながら軽量化を目指す技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Model Pruning」 = モデルの剪定・刈り込み
💬 pruning は園芸用語で「剪定(せんてい)」のこと。木の不要な枝を切るイメージだよ