Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

OpenVINOでBINARY CONVOLUTION

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

Intelのこのブログでは、OpenVINOでBINARY CONVOLUTIONをサポートして、BINARY MODELでもそれなりの精度が出るよというお話

www.intel.ai

具体的には、Neural Network Compression Framework (NNCF) というものを使ってバイナリ化しているようです。NNCF はバイナリ化だけでなく、量子化(8ビット化)もできるようです。この NNCF って、PyTorchベースのライブラリのようです。

github.com

どのように量子化しているかは、下記に説明があります。

github.com

この NNCF を使って量子化、バイナリ化した学習済みモデルは、こちら。

docs.openvinotoolkit.org

  • face-detection-adas-binary-0001
  • pedestrian-detection-adas-binary-0001
  • vehicle-detection-adas-binary-0001
  • resnet50-binary-0001

などがありますね。

バイナリ化した場合、popcount をする必要があり、第10世代の Intel Core では下記のように popcount のための命令を持っているようです。これにより、Core i-8700 と Core i7-1065G での popcount のための命令の効果の比較があります。相対的に、Core i7-1065G は速くなっていますね。

10th generation Intel® Core™ processor family introduces support for vectorized popcount operation which makes computation of binary convolution even more efficient.

バイナリモデルは、Intel GPU でも動くようですね。