NN系の学習済みモデルを
FPGAへ実装してみた
機械学習の勉強会(仮)
6th-Apr-2017
Michihiro Imaoka
今岡 通博
https://www.facebook.com/imaoka.micihihiro
imaoca@gmail.com,@imaoca
http://www.itmedia.co.jp/author/208685/
今岡 通博
imaoka michihiro
@imaoca
今岡⼯学事務所 個⼈事業主代表
⼗数年前は現役のプログラマーでした。当時は呼吸をする
ようにコードを書いていました。FPGAのコーディングも
SMDの半⽥付けも得意でした。最近は⽼眼も進み原稿書き
へ転進を図っている最中です。物書きで凌げるか暗中模索
の毎⽇です。
愛媛県松⼭市在住
・最近は原稿を書いていることが多い
・セキュリティ・キャンプの講師とか
・ハードウエアスタートアップ⽀援
背景
• AI FPGA神 Intel
• 型 限界
• 推論 並列化 高速化 余地
• 低消費電力/高速化
• 学習済 化
• AI 化 組込 家電
概要
5X5の⼿書き⽂字を認識する学習済みモデルの
FPGA実装を試みました。もともとPythonで書
かれたサンプルを参考にしています。先ずは
PythonからCに書き換えて、Cソースコード上
でFPGAに実装しやすいよう最適化します。
並列化箇所を⾒極め推論エンジンをハードウエ
ア記述⾔語のひとつVerilog-HDLへ移植します。
学習はCのコードで⾏い、学習済みモデルを
Verilog-HDLで吐き出しFPGAに実装します。
環境
• ubutu Sserver(Azure Iass )
• Python V2.7.1 with pandas
• gcc
• Quartus II 13.0sp1 Web Edition
• Verilog-HDL
• Intel(Altera) Cyclone IV
手順
■5X5の⼿書き⽂字を認識する学習済みモデルを⽤意。
 もともとPythonで書かれたサンプルを参考にしました。
「Neural Networkを平易に解説してみる」
http://enakai00.hatenablog.com/entry/20150108/1420719651
■Cソースコード上でFPGAに実装しやすいよう最適化します。
 ・1,-1を1,0に変換
 ・量⼦化調整(32/64bit整数は必要ない)
 ・乗算を省きます(乗算はハードウエアには負担)
■並列化箇所を⾒極め推論エンジンをVerilog-HDLへ移植
学習はCのコードで⾏い、学習済みモデルをVerilog-HDLで
吐き出します
ホップフィールド・ネットワーク (英: Hopfield network) は、
ニューラルネットワークの⼀モデルである。アメリカ合衆国の
物理学者であるジョン・ホップフィールド (J.J. Hopfield) が提
唱した[1]。ユニット(ニューロン)間に対称的な相互作⽤があ
る⾮同期型ネットワークであり、⾃然な操作によってネット
ワークのエネルギーが極⼩値をとる。元はスピンの安定条件を
もとめるモデルとして発想されたものであったが、ネットワー
クによる連想記憶のモデルとして歓迎され、ニューラルネット
ブームの⽕付け役の⼀つとなり、また後のボルツマンマシンの
元ともなった。これは統計的な変動をもちいて、エネルギーが
極⼩値ではなく最⼩値をとることを⽬指すモデルである。
出典 https://ja.wikipedia.org/wiki/
構成
学習
gcc
学習済
推論
Verilog-HDL
Quotus II
FPGA
教師
imaoca@ubuntServer:~/neural$ ./a.out
learing
####
# #
# #
# #
###
#####
#
#
# #
###
####
#
#
#
####
# #
## ##
# # #
# #
# #
example
###
# #
# #
##
###
recognition
####
# #
# #
# #
###
imaoca@ubuntServer:~/neural$
Quartus II 64-Bit Version 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition
Family Cyclone IV E
Device EP4CE6E22C8
###
# #
# #
##
###
0111000011100101001001110
####
# #
# #
# #
###
0111010010100101001001111
0
1
2
34
5 6
7
推論 実行時間
• 5X5の⽂字認識をFPGAで実装
• 推論エンジンを実装
–現在はマニュアル)
• 学習済みモデルのHDLは⾃動⽣成
–Neuro Chip Compiler
• ロジックアナライザーで計算スピードを
実測 10nS
• Cyclone IVの24%のリソースを消費
• 25クロックを要する実装では7%
–これは6502と同じHW規模
告知
• NN系機械学習 情報交換
• FPGA 主宰
– https://fpgastartup.connpass.com/event/
• TensorFlow 学習済 実装(todo)
• FPGA 実装 的 探
• 化 可能性 探
頂
• 4月18日 在京
【ご清聴ありがとうございました】
NN系の学習済みモデルをFPGAへ実装してみた
1st-Apr-2017
Michihiro Imaoka
今岡 通博
https://www.facebook.com/imaoka.micihihiro
imaoca@gmail.com,@imaoca
http://www.itmedia.co.jp/author/208685/

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