nn系学習済みモデルをfpgaに実装してみた

19
NN系の学習済みモデルを FPGAへ実装してみた 機械学習の勉強会() 6th-Apr-2017 Michihiro Imaoka 今岡 通博 https://www.facebook.com/imaoka.micihihiro [email protected],@imaoca http://www.itmedia.co.jp/author/208685/

Upload: imaoka-micihihiro

Post on 12-Apr-2017

216 views

Category:

Devices & Hardware


0 download

TRANSCRIPT

Page 1: NN系学習済みモデルをFPGAに実装してみた

NN系の学習済みモデルをFPGAへ実装してみた

機械学習の勉強会(仮)6th-Apr-2017

Michihiro Imaoka今岡 通博

https://www.facebook.com/[email protected],@imaoca

http://www.itmedia.co.jp/author/208685/

Page 2: NN系学習済みモデルをFPGAに実装してみた

今岡 通博 imaoka michihiro@imaoca今岡⼯学事務所 個⼈事業主代表⼗数年前は現役のプログラマーでした。当時は呼吸をするようにコードを書いていました。FPGAのコーディングもSMDの半⽥付けも得意でした。最近は⽼眼も進み原稿書きへ転進を図っている最中です。物書きで凌げるか暗中模索の毎⽇です。

愛媛県松⼭市在住

・最近は原稿を書いていることが多い・セキュリティ・キャンプの講師とか・ハードウエアスタートアップ⽀援

Page 3: NN系学習済みモデルをFPGAに実装してみた

背景

• AI FPGA神 Intel • 型 限界• 推論 並列化 高速化 余地 • 低消費電力/高速化• 学習済 化 • AI 化 組込 家電

Page 4: NN系学習済みモデルをFPGAに実装してみた

概要

5X5の⼿書き⽂字を認識する学習済みモデルのFPGA実装を試みました。もともとPythonで書かれたサンプルを参考にしています。先ずはPythonからCに書き換えて、Cソースコード上でFPGAに実装しやすいよう最適化します。並列化箇所を⾒極め推論エンジンをハードウエア記述⾔語のひとつVerilog-HDLへ移植します。学習はCのコードで⾏い、学習済みモデルをVerilog-HDLで吐き出しFPGAに実装します。

Page 5: NN系学習済みモデルをFPGAに実装してみた

環境

• ubutu Sserver(Azure Iass )• Python V2.7.1 with pandas• gcc• Quartus II 13.0sp1 Web Edition• Verilog-HDL• Intel(Altera) Cyclone IV

Page 6: NN系学習済みモデルをFPGAに実装してみた

手順■5X5の⼿書き⽂字を認識する学習済みモデルを⽤意。 もともとPythonで書かれたサンプルを参考にしました。「Neural Networkを平易に解説してみる」http://enakai00.hatenablog.com/entry/20150108/1420719651

■Cソースコード上でFPGAに実装しやすいよう最適化します。 ・1,-1を1,0に変換 ・量⼦化調整(32/64bit整数は必要ない) ・乗算を省きます(乗算はハードウエアには負担)

■並列化箇所を⾒極め推論エンジンをVerilog-HDLへ移植

学習はCのコードで⾏い、学習済みモデルをVerilog-HDLで吐き出します

Page 7: NN系学習済みモデルをFPGAに実装してみた

ホップフィールド・ネットワーク (英: Hopfield network) は、ニューラルネットワークの⼀モデルである。アメリカ合衆国の物理学者であるジョン・ホップフィールド (J.J. Hopfield) が提唱した[1]。ユニット(ニューロン)間に対称的な相互作⽤がある⾮同期型ネットワークであり、⾃然な操作によってネットワークのエネルギーが極⼩値をとる。元はスピンの安定条件をもとめるモデルとして発想されたものであったが、ネットワークによる連想記憶のモデルとして歓迎され、ニューラルネットブームの⽕付け役の⼀つとなり、また後のボルツマンマシンの元ともなった。これは統計的な変動をもちいて、エネルギーが極⼩値ではなく最⼩値をとることを⽬指すモデルである。出典 https://ja.wikipedia.org/wiki/

Page 8: NN系学習済みモデルをFPGAに実装してみた

構成

学習 gcc

学習済

推論 Verilog-HDL

Quotus II FPGA

教師

Page 9: NN系学習済みモデルをFPGAに実装してみた

imaoca@ubuntServer:~/neural$ ./a.outlearing

#### # # # # # # ###

##### # ## ####

####### ####

# ### ### # ## ## #

example

### # # # ### ###

recognition

#### # # # # # # ###imaoca@ubuntServer:~/neural$

Page 10: NN系学習済みモデルをFPGAに実装してみた
Page 11: NN系学習済みモデルをFPGAに実装してみた

Quartus II 64-Bit Version 13.0.1 Build 232 06/12/2013 SP 1 SJ Web EditionFamily Cyclone IV E

Device EP4CE6E22C8

Page 12: NN系学習済みモデルをFPGAに実装してみた
Page 13: NN系学習済みモデルをFPGAに実装してみた

### # # # ### ###

0111000011100101001001110

#### # # # # # # ###

0111010010100101001001111

0

1

234

5 6

7

Page 14: NN系学習済みモデルをFPGAに実装してみた

推論 実行時間

Page 15: NN系学習済みモデルをFPGAに実装してみた
Page 16: NN系学習済みモデルをFPGAに実装してみた
Page 17: NN系学習済みモデルをFPGAに実装してみた

• 5X5の⽂字認識をFPGAで実装• 推論エンジンを実装

–現在はマニュアル)• 学習済みモデルのHDLは⾃動⽣成

–Neuro Chip Compiler• ロジックアナライザーで計算スピードを

実測 10nS• Cyclone IVの24%のリソースを消費• 25クロックを要する実装では7%

–これは6502と同じHW規模

Page 18: NN系学習済みモデルをFPGAに実装してみた

告知

• NN系機械学習 情報交換• FPGA 主宰

– https://fpgastartup.connpass.com/event/• TensorFlow 学習済 実装(todo)• FPGA 実装 的 探

• 化 可能性 探 頂

• 4月18日 在京

Page 19: NN系学習済みモデルをFPGAに実装してみた

【ご清聴ありがとうございました】

NN系の学習済みモデルをFPGAへ実装してみた

1st-Apr-2017Michihiro Imaoka

今岡 通博

https://www.facebook.com/[email protected],@imaoca

http://www.itmedia.co.jp/author/208685/