Open idekazuki opened 5 years ago
2019 イントロ ビットを減らして学習することを量子化というが 量子化をすると精度を保つのが物体検出で困難になる なぜ?ファインチューニングの段階で問題がある可能性 >安定的にfine tuning する手法を提案 4ビット幅で物体検出ができるようになった。
背景 NNの推論を効率的に実行するための色々な技術 • ネットワーク設計の改良[12, 15, 32] • ネットワーク検索[36] • Pruning[9, 8] • 量子化 • パラメータのビット幅を減らしてモデルメモリ使用量を削減[33, 11, 30] • ビットごとの演算を用いて特定のレイヤーの高速化+パラメータ量子化[35, 31, 14, 4] • 学習を高速化するためのネットワーク勾配の量子化[2]
>分類では多いが検出などの複雑タスクでは課題残る
量子化の主な2つの手法 ・32ビットをいきなりバイナリに ・8ビットなどにする>検出でもまあまあな精度 >4ビットで検出タスクをやりたい!
問題点 ・8ビット未満でfine-tuning 不安定小さいバッチサイズでfine-tuningするのでBN層に良くない影響
改善策 1.BNをもとの学習時の平均分散を用いて更新(固定) 2.トレーニングの小さなサブセットを用いて活性化値の大きさを調整 3.層ごとの量子化ではなく、チャネルごとに量子化する。
手法 1.普通に学習 2.量子化するためのFine-tuning 3.量子化後の推論
このようにResNet50 Layer2.0 conv1ではバラけているので層ごとに量子化すると歪みの原因になる。
2019 イントロ ビットを減らして学習することを量子化というが 量子化をすると精度を保つのが物体検出で困難になる なぜ?ファインチューニングの段階で問題がある可能性 >安定的にfine tuning する手法を提案 4ビット幅で物体検出ができるようになった。
背景 NNの推論を効率的に実行するための色々な技術 • ネットワーク設計の改良[12, 15, 32] • ネットワーク検索[36] • Pruning[9, 8] • 量子化 • パラメータのビット幅を減らしてモデルメモリ使用量を削減[33, 11, 30] • ビットごとの演算を用いて特定のレイヤーの高速化+パラメータ量子化[35, 31, 14, 4] • 学習を高速化するためのネットワーク勾配の量子化[2]
>分類では多いが検出などの複雑タスクでは課題残る
量子化の主な2つの手法 ・32ビットをいきなりバイナリに ・8ビットなどにする>検出でもまあまあな精度 >4ビットで検出タスクをやりたい!
問題点 ・8ビット未満でfine-tuning 不安定小さいバッチサイズでfine-tuningするのでBN層に良くない影響
改善策 1.BNをもとの学習時の平均分散を用いて更新(固定) 2.トレーニングの小さなサブセットを用いて活性化値の大きさを調整 3.層ごとの量子化ではなく、チャネルごとに量子化する。
手法 1.普通に学習 2.量子化するためのFine-tuning 3.量子化後の推論
このようにResNet50 Layer2.0 conv1ではバラけているので層ごとに量子化すると歪みの原因になる。