Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ML_Loft_4_エッジ推論.pdf

 ML_Loft_4_エッジ推論.pdf

Shintarou Okada

July 19, 2019
Tweet

Other Decks in Technology

Transcript

  1. モデルの計算量を算出してくれる Chainer Computational Cost https://github.com/belltailjp/chainer_computational_cost import chainer import numpy as

    np from chainer_computational_cost import ComputationalCostHook net = chainer.links.VGG16Layers() x = np.random.random((1, 3, 224, 224)).astype(np.float32) with chainer.no_backprop_mode(), chainer.using_config('train', False): with ComputationalCostHook(fma_1flop=True) as cch: y = net(x) cch.show_report(unit='G', mode='md')
  2. https://github.com/belltailjp/chainer_computational_cost import chainer import numpy as np from chainer_computational_cost import

    ComputationalCostHook net = chainer.links.VGG16Layers() x = np.random.random((1, 3, 224, 224)).astype(np.float32) with chainer.no_backprop_mode(), chainer.using_config('train', False): with ComputationalCostHook(fma_1flop=True) as cch: y = net(x) cch.show_report(unit='G', mode='md') Markdown形式で表を 出してくれる モデルの計算量を算出してくれる Chainer Computational Cost
  3. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 計算量/秒 のこと モデルによって異なることに注意
  4. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 計算量/秒 のこと モデルによって異なることに注意 モデルの選定では計算量だけでなく 対象のデバイスで実行した場合の 効率にも注意する必要がある
  5. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 つまり,入力画像サイズやバッチ サイズが大きい / Convのチャン ネル数が大きいモデルの場合
  6. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 裏を返すと,計算量が少ない場 合は演算器が無駄になる 特にメモリ転送の比率が大きい モデルでは効率が悪い (ShuffleNet, MobileNet系)
  7. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 いわゆるIntel Graphics Intel CPUにたいてい付属し ているIntel製のGPU Intel製の推論フレームワークOpenVINOが使える
  8. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPはint8化が必須 複数のチップ,ARMのCPUと GPUとDSPが載ったSoC CPUでも推論はできるが非力
  9. デバイス • NVIDIA GPUは計算量が多いなら効率 が良い • Intel GPUがわりと速い • QualcommのSnapdragonはGPUと

    DSPが使えて,DSPではint8化が必須 いわゆる量子化,精度が保てるかは モデル次第 単純なモデルではほぼ問題ない 量子化用のツールはSNPEに付属
  10. 使いたいチップのメーカーが出しているものを使え ば大抵OK • NVIDIAならTensorRT • IntelならOpenVINO(a.k.a opencv/dldt) • QualcommならSNPE オペレータ間を埋める必要があれば

    Menoh/Chainer-Compilerを使う 推論用のフレームワークは? チップの性能を一番引き出せるのはその チップメーカー 手元でやる小手先の最適化はほぼ無意味