3. SRAM
読出しレジスタ
アドレスデコーダ
p SRAMの並列性
D R A M
従来のアクセラレータ
Proc.
SRAM
Proc.
オンチップ構成
p 係数SRAM直近での軽量な演算→ 超並列化の可能性
Ø メモリ容量
F
P
1
6
⼆
値
1/16
データ
サイズ
Ø 計算資源
×
FP16乗算器:
~30k ゲート
⼆値:
XNORゲート
O (1/10k)
ワード間
⾏逐次
Word
ワード内
列並列
p ⼆値化NN [M. Courbariaux, 2016] の登場
BRein Memory: 二値化NN推論LSI
2
7. Dither NN: 量子化NNとリファレンスFPGA実装評価
p ディザ
Ø 信号処理(画像処理)で多⽤
Ø 階調表現を保って量⼦化
Ø 例:
6
p 量⼦化NNのハードウェア
Ø 活性と係数を量⼦化して軽量化
Ø 内部演算は⾼ビット精度
Ø 情報の⽋落
×
+
量⼦化
A
W
係数
活性
⾼
閾値⼆値化
ディザ
低 低
ビット
精度
8. ディザとDNN
p アルゴリズム … 誤差拡散法
Ø 量⼦化誤差を蓄積・累算
Ø 加減算のみで実現
7
⼊⼒
#1
出⼒
1
0
閾値
1
0
閾値
⼊⼒
#2
量⼦化誤差
p ハードウェア実現
Ø NNアーキテクチャは
並列化されたアキュムレータ︔
つまり加算器の集合︕
×
+
量⼦化
A W
×
+/-
量⼦化
A W
選択回路のみで実現可︕
9. Dither NN 評価
p Zynq 7000に実装評価した。追加LUT 1%未満を達成
Ø VerilogとVeriloggen [https://github.com/PyHDI/veriloggen] でサクッと並列アーキを書いた
Ø FPT’18 Best Paper Award 受賞
8
Ø “ディザ無” Act-PE Ø “ディザ有” Act-PE
ü 誤差拡散の計算にはア
キュムレータの加算器
を流⽤可能
ü 必要なのは単純な選択
回路のみ
+
0
Sign
部分和⼊⼒
Acc.
RST
活性出⼒
+
0
Sign
部分和⼊⼒
Acc.
RST
活性出⼒
ディザ
OP
PE
PE
PE
Act
Wgt.
IN OUT
PE
PE
PE
Act
Wgt.
PE
PE
PE
Act
Wgt.
10. 総括
p 基本的にはチップ屋
p FPGA as ……
Ø 研究対象そのもの︖
ü ポストFPGAを現状考えているわけではない
Ø 表現の場
ü Dither NNは実験の⼟俵にFPGAを選び、
サクッと評価した
Ø 便利な道具 →
ü 周辺回路、特にI/Fは⾃分で作りたくない︕
ü FPGAだとこの辺はラク
p FPGAに⼀⾔
Ø Programmable “Gate” Array って本当︖
9
毎度お世話になります
ZC702さん
“Descartes” チップ 測定デモ
https://youtu.be/x36MzIwpI9M