LoginSignup
4
4

More than 5 years have passed since last update.

[Survey]Training deep neural networks with low precision multiplications

Posted at

Deep Neural Netowrk(DNN)における、乗算器の精度に関する論文

Multiplier-Accumulators

DNNの主要なOperationは、Weightの乗算と乗算後の値の積算。下の表のH/W cost でみると乗算器の精度にH/W costが依存している。
乗算器と積算のBit幅が16, 32の時と16,16の時でそれほど変わらないのに対し、乗算器と積算のBit幅が32,32の時と16,32の時ではH/W costが大きく変化している。乗算器のBit数を減らそうという根拠。

範囲を選択_146.png

Floating point

Floting Pointでは下記のようにDataを表現する。
範囲を選択_148.png

signは符号ビットで1bit、Exponent, MantissaはFromat毎に決まっている。各Formatとbit数の関係。
範囲を選択_147.png

Fixed Point

Fixed Pointは符号付きMantissaとglobalなscaling factorに分けて考えることができ、scaling factorを全変数でshareしているFormatと考えることができる。
通常Scaling factorはshift演算で置き換えられるような値になっている。
これによりFixed Pointは、unique shared fixed exponentとみなせる。
範囲を選択_149.png

Dynamic Fixed Point

DNNの学習では、変数に以下の特徴がある
・activations,gradients, parametersの値の範囲が異なる
・gradientsは学習中徐々に減少する

fixed point formatでは、DNNには適さない。

dynamic fixed point formatは、groupごとにscaling factorをもつ方式。
それぞれのscaling factorは初期値として持っておいて、一定頻度で更新する。
範囲を選択_001.png

Evaluation

Dataset

評価で使用したDataset
範囲を選択_150.png

Error Rate

範囲を選択_151.png

Low Precision Results

radix point(小数点の位置)ごとのtest error率のグラフ
5bitぐらいで性能は保たれている。値の範囲が[-32,32]。
範囲を選択_152.png

Fixed Pointでは、符号ビットを含めて20bitまでは性能を維持している。
Dynamic fixed Pointでは、10bitぐらい。
Propagation
範囲を選択_153.png
Parameter
範囲を選択_154.png

Overflow Rateを変えた時のError率の変化
エラー率を緩めると性能も悪くなる。
範囲を選択_155.png

最後に

 Dynamic Fixed Pointに関しては、H/Wであればだいたい行っていること。ただしError率によってScaling Factorを変えるというのはないかも。
Scaling Factorを変更できるようにするためにそれ専用の回路になってしまうので、その分だけH/W CostがUpしそう。
 ただし、こういった知見はH/W 実装の時に重要だと思われる。
NVIDIAのGPUも16bitのFloating Pointに対応している。
ただし、16年3月時点でこれに対応しているPlatformはあまりなかったと記憶している。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4