Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
コキュートスでいろいろ動かしてみた話
2017/9/24
株式会社パソナテック
西日本支社
夏谷
1
HUMANWARE® changes the world
自己紹介
 夏谷実
 株式会社パソナテック
 株式会社パソナテック
 西日本支社
 TFUG KANSAI
 最近は半導体関連の仕事が多い
 FPGAが好き
 プログラミングも好き
 Deep Learningも好き
2
やったこと
 組込向けフレームワークを使って、ラズパイやPYNQでいろい
ろ動かしてみた。
 各手法の報告。FPGAは使ってません><
 gccのオプションはデフォルトで-O3
 処理の95%以上は3x3 conv2d
3
https://ja.wikipedia.org/wiki/Raspberry_Pi
Raspberry Pi 3 Model B
http://www.pynq.io/
PYNQ
ラズパイ VS PYNQ
4
VGG16 Tiny-YOLO
ラズパイ 188 20
PYNQ メモリ不足で動かず 42 -> 60
単位は秒
VGG16の重みが512MBを超え
ているので、PYNQにロードでき
ない。
最初42秒だったけど、Emacsイ
ンストールしたら遅くなった。
ラズパイ VS PYNQ
5
VGG16 Tiny-YOLO
ラズパイ 188 20
PYNQ メモリ不足で動かず 42 -> 60
単位は秒
VGG16の重みが512MBを超え
ているので、PYNQにロードでき
ない。
最初42秒だったけど、Emacsイ
ンストールしたら遅くなった。
・ラズパイの方が2~3倍速い
・PYNQにEmacsは入れるな。
ラズパイ上のTiny-YOLOを早くしたい
6
①3x3 conv2dの計算順を変える。
→画処理のコンボリューションではなくフィルター方向への
コンボリューションへ
→メモリライトの数が減る。PC上では速度3倍へ
②それに合わせて、データの並びを変える。(チャネルラストへ)
③OpenMP
④FP16
⑤Neon+OpenMP
→社内の専門家の知識を使った
順番にやってみた
ラズパイ上のTiny-YOLOを早くしたい
7
名前 Conv2d
計算順
チャネル
ラスト
OpenMP FP16 NEON 処理時間
(秒)
C_ori - - - - - 20
C_ori_MP - - 有効 - -
C 変更 - - - -
c_cl 変更 有効 - - -
C_ori_fp16 - - - 有効 -
C_fp_16 変更 - - 有効 -
C_neon - - 有効 - 有効
いろいろやってみた。結果は?
ラズパイ上のTiny-YOLOを早くしたい
8
名前 Conv2d
計算順
チャネル
ラスト
OpenMP FP16 NEON 処理時間
(秒)
C_ori - - - - - 20
C_ori_MP - - 有効 - - 計算結果
不一致
C 変更 - - - - 31
c_cl 変更 有効 - - - 31
C_ori_fp16 - - - 有効 -
C_fp_16 変更 - - 有効 -
C_neon - - 有効 - 有効
データの並び替え、計算順序の変更では早くならない。実測大事。
ラズパイ上のTiny-YOLOを早くしたい
9
名前 Conv2d
計算順
チャネル
ラスト
OpenMP FP16 NEON 処理時間
(秒)
C_ori - - - - - 20
C_ori_MP - - 有効 - - 計算結果
不一致
C 変更 - - - - 31
c_cl 変更 有効 - - - 31
C_ori_fp16 - - - 有効 - 46
C_fp_16 変更 - - 有効 - 64
C_neon - - 有効 - 有効
今のARMはFP16サポートしてない。毎回変換が入ってる。
ラズパイ上のTiny-YOLOを早くしたい
10
名前 Conv2d
計算順
チャネル
ラスト
OpenMP FP16 NEON 処理時間
(秒)
C_ori - - - - - 20
C_ori_MP - - 有効 - - 計算結果
不一致
C 変更 - - - - 31
c_cl 変更 有効 - - - 31
C_ori_fp16 - - - 有効 - 46
C_fp_16 変更 - - 有効 - 64
C_neon - - 有効 - 有効 2.4
さすがNEONや!
まとめ
 実際に手を動かすの大事
 本命はFP16+NEON
 次はFPGAだ!
11
おまけ:ラズパイGPUの実力
12
Tiny-YOLO
ARM+NEON
2.4秒
https://www.slideshare.net/notogawa/using-raspberry-pi-gpu-for-dnn
GPU使うと大体4~5倍?
Using Raspberry Pi GPU for DNN
9/3
Deep Learning Acceleration勉強会
中村 晃一様
おまけ:ラズパイGPUの実力
13
VGG16
ARM+NEON
7秒
Tensorflow(GPUなし)
2秒
Tiny-YOLO
ARM+NEON
2.4秒 https://www.slideshare.net/notogawa/using-raspberry-pi-gpu-for-dnn
http://qiita.com/kazunori279/items/1e23679c534a49c0e837
Neonでも十分早くできるのでは?
Using Raspberry Pi GPU for DNN
Deep Learning Acceleration勉強会
おまけ:FPGA(SDSOC)奮戦中
14
データ量が固定でないとバース
トできない
アクセスがシーケンシャルじゃな
いとバーストできない
Conv2D
13x13
Conv2D
416x416
Conv2D
208x208
同じ回路をいくつもつくらないと駄目><
データ量で動き変わるぞ・・・
Zynq
7020
c
w
h
DLのコンボリューションは一次元多い!
FP16のくせに、回路規模減らない
回路はいらない
速度でない
1サイクル1時間コース
DSP 741MHz
おまけ:FPGA(SDSOC)奮戦中
15
データ量が固定でないとバース
トできない
アクセスがシーケンシャルじゃな
いとバーストできない
Conv2D
13x13
Conv2D
416x416
Conv2D
208x208
同じ回路をいくつもつくらないと駄目><
Zynq
7020
c
w
h
DLのコンボリューションは一次元多い!
FP16のくせに、回路規模減らない
回路はいらない
速度でない
同じ回路をいくつもつくらないと駄目><
データ量で動き変わるぞ・・・
1サイクル1時間コース
Deep LearningのFPGA実装に、SDSOCはやめとけ
(少なくとも今は・・・)
DSP 741MHz
ご静聴ありがとうございました。
16

More Related Content

Fpgax20170924

Editor's Notes

  1. テンサーフローユーザーグループ関西 パソナテック公認キャラ