モデルアーキテクチャ観点からのdeep neural network高速化

62
Copyright © DeNA Co.,Ltd. All Rights Reserved. モデルアーキテクチャ観点からの Deep Neural Network⾼速化 Yusuke Uchida (@yu4u) 1

Upload: yusuke-uchida

Post on 21-Jan-2018

14.176 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からのDeep Neural Network⾼速化

Yusuke Uchida (@yu4u)

1

Page 2: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

今⽇のおはなし(本発表⼀番のマサカリ場)

2

CUDAcuDNN

NVIDIAGPU GPU

WebGL WebGPU

TPUVideoCoreIV

??????

TensorFlow,Chainer,…

deeplearn.js WebDNN??????

@9_Jesさん

アプリケーションレイヤ

@Kiikurageさん@notogawa

さん

@kazunori_279さん

@Venginnerさん

@iwiwiさん

@yu4u

Page 3: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Disclaimer

!  画像を想定した畳み込みニューラルネットワークの話がメインです

!  初歩的な話もしますが許してください

3

Page 4: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

トレードオフ

!  タスクの精度!  推論速度!  訓練速度!  モデルサイズ(圧縮されたファイルとして)!  Forwardで必要なメモリサイズ(モデルサイズ含む)

!  推論(訓練速度)はCPUかGPUか、バッチサイズが1なのか⼤きく取れるのかに⼤きく影響される

4

Page 5: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

5

Page 6: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Convolutionの計算量

6

W

H

W

H

N M

KK

•  ⼊⼒レイヤサイズ:HxWxN•  畳み込みカーネル:KxKxNxM

         [convKxK,M]と表記(e.g.[conv3x3,64])•  出⼒レイヤサイズ:HxWxM•  畳み込みの計算量:H・W・N・K2・M

※バイアス項無視、padding=“same”

Page 7: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Convolutionの計算量

7

W

H

W

H

N M

KK

•  ⼊⼒レイヤサイズ:HxWxN•  畳み込みカーネル:KxKxNxM

         [convKxK,M]と表記(e.g.[conv3x3,64])•  出⼒レイヤサイズ:HxWxM•  畳み込みの計算量:H・W・N・K2・M

※バイアス項無視、padding=“same”

画像スケール、チャネル数、カーネルサイズの2乗に⽐例

Page 8: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

8

Page 9: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Factorization

!  Low Rank Matrix Factorization⾏列(=畳み込みカーネル)を低ランク近似することで計算量を削減

!  学習によって得られた⾏列を分解するというよりは最初から分解した形で重みを学習する(のでfactorizationと⾔って良いのか?)

9

Page 10: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

畳み込みカーネルの空間的Factorization

!  ⼤きな畳込みカーネルを複数の⼩さな畳込みカーネルに置き換える⁃  conv 5x5 と conv 3x3 - conv 3x3 は同じreceptive fieldを持つ⁃  計算量は 25:18⁃  ⼩さな畳み込みを重ねるパターンはactivation層の数も多いため

表現能⼒の向上が期待できる

!  例⁃  AlexNet:conv 11x11 - conv 5x5 - conv 3x3 - …

  ↓⁃  VGGNet:conv 3x3 - conv 3x3 - conv 3x3 - …

10

conv5x5 conv3x3-conv3x3

Page 11: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

畳み込みカーネルの空間的Factorization

!  conv 3x3 vs conv 1x3 - conv 3x1⁃  計算量は 9:6

!  例:Inception v6→v7

11

conv3x3 conv1x3-conv3x1

hap://lsun.cs.princeton.edu/slides/ChrisJan.pdf

Page 12: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

畳込みカーネルの空間⽅向とチャネル⽅向のFactorization

!  通常の畳込みカーネルをdepthwise / pointwise convolutionに分離

!  Depthwise (separable) convolution⁃  Input tensorに対しチャネル毎に畳み込み⁃  計算量:H・W・N・K2・M (M=N)

    H・W・K2・N

!  Pointwise convolution⁃  ただのconv 1x1, M⁃  計算量:H・W・N・K2・M (K=1)

    H・W・N・M

!  Depthwise + pointwise⁃  計算量:H・W・N・(K2 + M)

    ≒ H・W・N・M (M >> K2) 12

W

H

W

H

N

11

M

W

H

W

H

N

KK

N

Page 13: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Dilated convolution

!  カーネルの重みに規則的に0を⼊れてカーネルサイズを拡張!  ⼩さいカーネルと同じ計算量+パラメータで広いreceptive fieldを持つ

⁃  Feature mapの解像度を⾼く保ちたいsegmentationや超解像で良く使われる

!  例⁃  Dilated Residual Networks, CVPRʼ17.⁃  WaveNet - A Generative Model for Raw Audio

13

conv5x5 conv3x3,dilaJon=2

Page 14: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

実際の処理速度は??

!  PyTorchとKeras (TensorFlow backend) で簡単な実験⁃  特定の種類のconvolutionのみを含む16層CNNを構築•  Batch normalizationやactivation層はなし

⁃  ⼊⼒tensorを 32x32x32x64(バッチサイズ32、チャネル数64)⁃  ランダムな⼊⼒を100回forwardした時間を計測⁃  環境:Ubuntu 16.04, CPU: i7-7700 3.60GHz、

   GPU: GeForce GTX1080(TensorFlowはAVX2等を使うようにコンパイルしていない)

!  Summary

14

Page 15: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

実際の処理速度は??

!  PyTorchとKeras (TensorFlow backend) で簡単な実験⁃  特定の種類のconvolutionのみを含む16層CNNを構築•  Batch normalizationやactivation層はなし

⁃  ⼊⼒tensorを 32x32x32x64(バッチサイズ32、チャネル数64)⁃  ランダムな⼊⼒を100回forwardした時間を計測⁃  環境:Ubuntu 16.04, CPU: i7-7700 3.60GHz、

   GPU: GeForce GTX1080(TensorFlowはAVX2等を使うようにコンパイルしていない)

!  Summary

15

DepthwiseconvoluJon

Conv3x3dilaJon=2

haps://github.com/yu4u/conv-benchmark

Page 16: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

PyTorch CPU

16

Conv3x3⽐の理論計算量

DepthwiseconvoluJon

Conv3x3dilaJon=2

Conv3x3⽐の実処理時間

Page 17: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

PyTorch CPU

!  Depthwise convolutionとdilated convolution以外は実処理時間と理論計算量が⼀致

!  どちらもメモリの局所性がないため?⁃  教えて中村さん!

!  PyTorchのdepthwise convolutionはめっちゃ遅い⁃  Grouped convolutionでグループ数=チャネル数でやってるため

17

Page 18: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

PyTorch GPU

!  GPUだとfactorizeしないほうが良さそう⁃  でも5x5が遅いのは?

18

Page 19: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Keras CPU

!  PyTorchと傾向は同じ⁃  Depthwise convolutionは専⽤の効率的な実装が存在⁃  Dilated convolutionも早い

19

Page 20: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Keras GPU

!  PyTorchとだいたい同じ?!  Dilated convolutionは早い

20

Page 21: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

中間的なFactorization

!  Efficient and Accurate Approximations of Nonlinear Convolutional Networks, CVPRʼ15.

!  Conv k x k, d を Conv k x k, dʼ - Conv 1 x 1, d に分解⁃  学習済みのカーネルを、出⼒feature mapの誤差を

最⼩に保つように最適化問題を解くことで分解⁃  計算量:dk2c → dʼk2c + ddʼ = dʼ(k2c + d) ≒ dʼk2c

21

Page 22: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Domain-adaptive deep network compression, ICCVʼ17.

!  FC層を低ランク近似することで圧縮する!  通常は重みWと、Wを低ランク⾏列の積で近似したWʼとの誤差を最⼩に

するが、ここではWX(=Y)の誤差を最⼩にする部分がNovelty(だが1つ前の⼿法とアプローチは同じでは…)

22

Page 23: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

23

Page 24: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Efficient microarchitecture (module)

!  Convをスタックするマクロアーキテクチャ (~VGGNet) からマイクロアーキテクチャをスタックする時代へ (GoogLeNet, ResNet~)

!  様々なマイクロアーキテクチャ (module or building block)⁃  mlpconv (Network in Network)⁃  Inception module (GoogLeNet)⁃  Residual block, bottleneck block (ResNet)⁃  ResNeXT⁃  DenseBlock (DenseNet)⁃  Fire module (SqueezeNet)⁃  Separable conv (Xception, MobileNets)⁃  Neural architecture search (meta learning)

!  ダイレクトに計算量を減らすというよりは精度と計算量のトレードオフを改善する⁃  実⽤上は精度を担保して、どれだけ計算量を減らせるか

24

Page 25: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Residual Networks, ResNet(参考)

25

基本形

conv3x3,64

conv3x3,128

conv3x3,256

conv3x3,512

globalaveragepoolingFC

xN1

xN2

xN3

xN4

56x56

28x28

14x14

7x7

出⼒画像サイズ

Buildingblock/Residualunit

•  パラメータの違うResidualunitを重ねていく•  BatchnormalizaJon•  画像サイズを半分+フィルタ数を倍に•  最後はglobalaveragepooling

Page 26: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Residual block, bottleneck block

!  Bottleneckバージョンは、conv 3x3, 256をFactorizeしたものと⾒ることもできる⁃  Receptive fieldは⼩さい

26

通常のresidualblock “boaleneck”バージョン

Page 27: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Fire module (SqueezeNet)

!  戦略⁃  3x3の代わりに1x1のフィルタを利⽤する⁃  3x3への⼊⼒となるチャネル数を少なくする

!  ちなみに⾮常に⼈気のあるモデルだと思われるが…⁃  ResNetやInception後の論⽂なので、そこからの差異が⼩さい

とのことで、ICLRʼ17でrejectとなっている

27

conv1x1,s1x1

conv1x1,e1x1 conv3x3,e3x3

concat

Firemodule

32

128128

256

256

Squeezelayer

Expandlayer

conv3x3,256のFactorizeと⾒ることもできる

Page 28: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Fire module (SqueezeNet)

28

Squeeze layerでの圧縮率0.75程度だと精度低下なし0.5でー0.7%

Expand layerの3x3割合0.75程度だと精度低下なし0.5でー0.7%

Page 29: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Depthwise separable convolution

!  Xception

!  MobileNets

!  Xceptionはdepthwise/pointwise convの間にReLUがない⁃  実験でないほうが良いことを⽰している

!  Xceptionはidentity mappingがある29

Depthwise conv 3x3Pointwise conv 3x3Batch normalization

ReLUSeparable conv 3x3

ReLU

(Maxpool 3x3, stride=2)

Conv 1x1,stride=2 Separable conv 3x3

Depthwise conv 3x3Batch normalization

ReLU

Batch normalizationPointwise conv 3x3

ReLU

Page 30: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Learning Transferable Architectures for Scalable Image Recognition, arXiv:1707.07012.!  moduleアーキテクチャをRNNで最適化

30

!  ⼤枠のアーキテクチャは決まっている•  (ReducJoncell+Normalcell×N)×K

!  ReducJoncell:featuremapをダウンサンプル!  利⽤可能な要素は下記

Page 31: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Learning Transferable Architectures for Scalable Image Recognition, arXiv:1707.07012.!  できたmodule

!  Sep多い31

Page 32: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Learning Transferable Architectures for Scalable Image Recognition, arXiv:1707.07012.!  結果

!  Mult-addとのトレードオフは良いが実速は?32

Page 33: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

33

Page 34: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Pruning

!  異なるレベルのpruning⁃  重みレベル⁃  カーネルレベル⁃  チャネル(フィルタ)レベル⁃  レイヤレベル

34

Structured(⾼速化しやすい

 最適化しづらい)

Page 35: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16!  重みレベルのpruning

35

•  通常通り重みを訓練•  しきい値以下の重みをprune(0にする)•  0の重みはそのままにfine-tuneする

Page 36: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16

36

•  ⾮ゼロ要素を7.5%にまで削減•  但し、ほとんどFC層

↑モダンなモデル(ResNet~)はglobalaveragepoolingを使うので ここまでパラメータの多いFC層がない

Page 37: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

(余談)Global average pooling

!  Network In Network, ICLRʻ14. で提案された!  Feature mapサイズの average pooling

!  オリジナルの論⽂では N をクラス数にすることで、global average poolingの出⼒がそのままprediction結果となる⁃  その後の使われ⽅としては、後段に出⼒がクラス数のFC層を使う

!  何れにせよ、パラメータ数の多いFC層が不要

37

W

H

N

N1

1

Page 38: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16!  んで早くなるの?

⁃  早くなる、FCはね!(←cuSPARSE等のsparse⾏列演算ライブラリを利⽤)

!  Sparseな重みのconvolutionは?38

Page 39: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Pruning Filters for Efficient ConvNets, ICLRʼ17.

!  チャネルレベルのpruning!  チャネル毎に、畳込みパラメータのL1ノルムが⼩さいものからprune

!  精度を保ったままpruningすると、計算量で10%台の削減

39

Page 40: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

チャネル毎に⼊⼒を平均0分散1に正規化、γとβでscale&shit

Learning Efficient Convolutional Networks through Network Slimming, ICCV'17.!  チャネルレベルのpruning!  各チャネルの出⼒をscalingする変数 γ を導⼊、Σi|γi| をロスとして学習

⁃  γ はbatch normalizationに導⼊する(というか最初からある)⁃  Batch normalizationの正規化が必須

!  学習後、γi が⼩さいチャネルiを削除し、fine-tune

40

 チャネルi

Batchnorm

alizaJon

Page 41: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Learning Efficient Convolutional Networks through Network Slimming, ICCV'17.

!  正則化の効果により、pruning後に精度も上がる!!  感想

⁃  学習した後にpruningするより筋が良い⁃  シンプル&Batch normalizationで実現するの、素敵⁃  SOTA精度のモデルをベースにして検証して欲しい⁃  ResNetのようなskip connectionがあるとややこしい

41

Page 42: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

L0ではなくLassoに緩和して解く

Channel Pruning for Accelerating Very Deep Neural Networks, ICCVʼ17.!  チャネルレベルのpruning!  あるfeature mapのチャネルについて、次のレイヤのfeature mapを

なるべく復元できるようなチャネルを選択し、残りを削除

!  VGG:5倍速, 精度0.3%↓、ResNet:2倍速, 精度1.4%↓42

Page 43: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression, ICCVʼ17.!  チャネルレベルのPruning!  前のやつとアプローチは同じ、次のレイヤのfeature mapに誤差を発⽣

させないfilterを削除する

!  実際のforwardした結果から特定のフィルタを削除した際の誤差を計算!  フィルタの削除はGreedyに⾏う、削除した後に、残ったフィルタを個々

にスケーリングして、誤差を軽減(linear regressionとして解ける)!  最後にfine-tune

43

Page 44: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

44

Page 45: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Quantization

!  重みを量⼦化することでモデルのメモリを削減⁃  半精度を利⽤するとかでなければソフト的には⾼速化ではない

(デモサイト等でのモデルのダウンロード速度は早くなるが)!  量⼦化の種類

⁃  Scalar quantization(各次元毎に量⼦化•  Binary•  Uniform(centroidが⼀定間隔•  Adaptive(centroidの間隔をkmeans等で学習

⁃  Product quantization(ベクトルを分割して個別に量⼦化⁃  Residual quantization(量⼦化→残差を量⼦化⁃  Hierarchical quantization(量⼦化→残差を量⼦化⁃  Vector quantization

!  量⼦化効率(centroid数 vs 量⼦化誤差)⁃  binary < scalar < product < residual, hierarchical < vector

45

違いは後段の量⼦化コードブックが単⼀かどうか

Page 46: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Quantization

!  重みを量⼦化することでモデルのメモリを削減⁃  半精度を利⽤するとかでなければソフト的には⾼速化ではない

(デモサイト等でのモデルのダウンロード速度は早くなるが)!  量⼦化の種類

⁃  Scalar quantization(各次元毎に量⼦化•  Binary•  Uniform(centroidが⼀定間隔•  Adaptive(centroidの間隔をkmeans等で学習

⁃  Product quantization(ベクトルを分割して個別に量⼦化⁃  Residual quantization(量⼦化→残差を量⼦化⁃  Hierarchical quantization(量⼦化→残差を量⼦化⁃  Vector quantization

!  量⼦化効率(centroid数 vs 量⼦化誤差)⁃  binary < scalar < product < residual, hierarchical < vector

46

Deeplearningのコンテキストではあまりない

Page 47: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16!  (再掲)

47

今度はココ

Page 48: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16!  0でない重みをadaptive scalar quantization

!  重みを量⼦化した状態のままfine-tuneできる!!

48

Page 49: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLRʼ16

49

重みのIDをハフマン符号化

⾮ゼロ要素間のgapをハフマン符号化

!  VGG16が552MB → 11.3MB⁃  伸張に時間は必要そう

Page 50: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Binary neural networks

!  神資料があるのでまとめだけ…⁃  https://www.slideshare.net/kentotajiri/ss-77136469

50

•  ⼊⼒も重みもバイナリ化することで⾼速化が可能

•  ソフト的にも実装が可能•  サポートしているメジャーな

フレームワークがない•  精度がまだ低い

Page 51: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

51

Page 52: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Distilling the Knowledge in a Neural Network, NIPSʼ14 Deep Learning Workshop.!  アンサンブルモデルや⼤きなモデルから、⼩さなモデルへの

knowledge transfer⁃  精度を保ちながら⼩さなモデルを学習

52

1. アンサンブルモデルや⼤きなモデルを学習

2. 学習済みモデルを利⽤して⼩さなモデルを学習

Page 53: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Distilling the Knowledge in a Neural Network, NIPSʼ14 Deep Learning Workshop.

53

……

学習画像

学習済みモデル

学習するモデル

正解ラベル(ハード

ターゲット)

通常T=1のsotmaxのTを⼤きくしたソフトターゲットを利⽤

ソフトターゲット

ソフトターゲット

ハードターゲット

正解ラベルと学習モデル出⼒の両⽅を利⽤

推論時はT=1とする(argmaxは同じだが…

Page 54: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Distilling the Knowledge in a Neural Network, NIPSʼ14 Deep Learning Workshop.!  同⼀モデルでも、アンサンブルから学習したほうが良かったり

!  ソフトターゲットだと⼩数のデータで効率的に学習できたりする

54

Page 55: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

モデルアーキテクチャ観点からの⾼速化

!  Factorization!  Efficient microarchitecture (module)!  Pruning!  Quantization!  Distillation!  Early termination

55

Page 56: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks, ICPRʼ16.!  ネットワークの途中からラベル推定する分岐を作成!  そのsoft-maxのエントロピーを信頼値として

閾値以上の場合にExitする

!  学習時のロスは、全てのExitのロスの重み付き和(重みが最後が1で途中が0.3というHeuristic…)

56

Page 57: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks, ICPRʼ16.!  Exitする閾値を幾つか変えて実験(←MNIST、→CIFAR-10)

!  層の途中にもロスが⼊っている影響か、ベースよりも精度が上がっている

57

Page 58: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Spatially Adaptive Computation Time for Residual Networks, CVPRʼ17.!  各層のhalting scoreの合計が1を超えるとその層までの結果を出⼒

58

計算量に関するロスを追加

Page 59: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Spatially Adaptive Computation Time for Residual Networks, CVPRʼ17.!  空間(feature map)レベルに拡張

59

SACT=空間レベルACT=resblockレベル

Page 60: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Adaptive Neural Networks for Efficient Inference, ICMLʼ17.

60

Page 61: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

Adaptive Feeding: Achieving Fast and Accurate Detections by Adaptively Combining Object Detectors, ICCVʼ17.!  SSD300, SSD500, R-FCNといった異なる精度・計算量のDetectorのう

ち、どれに画像を⼊⼒するかを判定する識別器(SVM)を学習!  適切なDetectorにFeed→平均的な精度・計算量トレードオフを改善!  識別器の学習は各画像について実際に各Detectorに検出させ、その

average precisionの⾼い⽅を正解ラベルとする

61

Page 62: モデルアーキテクチャ観点からのDeep Neural Network高速化

Copyright©DeNACo.,Ltd.AllRightsReserved.

まとめ

!  フレームワークより上のレイヤで意味があるのは⁃  Factorization⁃  Efficient microarchitecture (module)⁃  Pruning•  チャネルレベル(、レイヤレベル)

⁃  Quantization•  半精度(、バイナリ)

⁃  Distillation⁃  Early termination

!  精度重視のモデルで学習し、効率的なmoduleにdistillationし、pruningし、バイナリ化し、early terminationする→ Efficient module + distillation + channel-level pruning

62