Research / 基盤技術 · 評価

Deep Compressionを読む 重みを削り量子化して保存する

Deep Compressionは枝刈り、再学習付き量子化、ハフマン符号化を順に使ってモデルを小さくする。原論文ではAlexNetを240MBから6.9MB、VGG-16を552MBから11.3MBへ縮めた。保存量と実機速度は別に測る必要がある。

論文初公開(arXiv)
参照版
v5
TRAIL公開
  • Deep Compressionは枝刈り、重みの共有を伴う量子化、ハフマン符号化を順に適用する。
  • ImageNet用AlexNetは240MBから6.9MB、VGG-16は552MBから11.3MBになった。
  • 論文は層ごとの3〜4倍の速度改善を報告するが、モデル全体の応答時間が同倍率とは限らない。

何を確かめた研究か

Deep Compressionの原論文は、大きなニューラルネットの重みを、精度を失わずに記憶装置へ収められるかを調べた。まず重要度の低い接続を削り、残りを再学習する。次に複数の重みを少数の代表値で共有し、その代表値も学習で調整する。最後に出現頻度に応じたハフマン符号でさらに保存量を減らす。三段階の組み合わせが研究の対象だ。

どう検証したか

ImageNet分類用のAlexNetとVGG-16を圧縮前後で比べた。図1では各段階の圧縮率を分け、表ではTop-1/Top-5の精度変化も調べる。CPU、GPU、モバイルGPUで層ごとの速度とエネルギーを測る。疎な重み表現には接続位置のメタデータが必要だが、論文の保存量計算はそのメタデータも含める。

何が分かったか

要旨ではAlexNetが240MBから6.9MBへ35倍、VGG-16が552MBから11.3MBへ49倍の圧縮で、論文のImageNet精度を維持した。枝刈りだけでは接続数を9〜13分の1にし、量子化で接続あたりの保存ビットを32から5へ減らす。測定した層では3〜4倍の速度、3〜7倍のエネルギー効率を報告する。三段階のどれか一つだけで49倍になったわけではない。

疎な行列は非ゼロの重みだけを保存する一方、各重みが元のどこにあったかを示す索引も要る。量子化では似た重みを共有値へまとめるため、値の種類は減るが誤差が生じ得る。著者らは各段階で再学習してその誤差を抑えた。保存量の改善には、学習済みモデルを加工する工程全体が含まれる。

限界と仕事との接点

圧縮形式を速く扱える実装やハードウェアが必要で、ファイルが小さいだけでは推論が速くならない。枝刈り後の再学習と量子化中心値の調整も計算を要する。導入時は自社のGPU・CPUで、起動時間、実使用メモリ、全モデルの遅延、精度を合わせて測る。後半はTRAIL編集部の提案である。

01

出典

Research の一覧へ戻る