Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LUT-Network ~その後の話~
Search
Ryuji Fuchikami
May 07, 2022
Technology
0
58
LUT-Network ~その後の話~
コロナもあってどこにも発表できなかったのですが、資料だけ作ったので置いておきます。
Ryuji Fuchikami
May 07, 2022
Tweet
Share
More Decks by Ryuji Fuchikami
See All by Ryuji Fuchikami
オリジナルの深層学習で HLS Challenge にチャレンジ
ryuz88
0
520
Zynq MP SoC で楽しむエッジコンピューティング ~RTLプログラミングのススメ~
ryuz88
0
1.8k
Rust で RTOSを考える
ryuz88
0
56
Verilatorやってみた! ~ OpenCVでテストベンチを書いてみた ~
ryuz88
0
36
Fast and Light-weight Binarized Neural Network Implemented in an FPGA using LUT-based Signal Processing and its Time-domain Extension for Multi-bit Processing
ryuz88
0
46
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
ryuz88
0
50
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
ryuz88
0
340
Other Decks in Technology
See All in Technology
AIチャットボット開発への生成AI活用
ryomrt
0
170
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
410
Can We Measure Developer Productivity?
ewolff
1
150
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
220
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
130
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
65
4.4k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Making Projects Easy
brettharned
115
5.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Scaling GitHub
holman
458
140k
Building an army of robots
kneath
302
43k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Fireside Chat
paigeccino
34
3k
Statistics for Hackers
jakevdp
796
220k
Producing Creativity
orderedlist
PRO
341
39k
Speed Design
sergeychernyshev
25
620
Transcript
LUT-Network ~その後の話~ 2022/05/07 Ryuji Fuchikami 渕上 竜司
これまでの経緯とか 私が LUT-Network を FPGAX#11 (2019/02/02)で発表させ ていただいて2年以上が経ちました。 その後、夏のAI EdgeハードウェアMeetup in
福岡 で発表したり SWEST21で発表していただいたり。 そして、@FIssiki様の多大なるご協力のもと、ICCE2019(Berlin)にて発 表できました(私日本で仕事してたので、当日何もしてませんが)。 BinaryBrain も Ver4.2.2 となり Star もいっぱい頂きました PyPI のダウンロード数もそこそこ有難いレベルに(感謝) 2
改めて LUT-Network の本質を 再考してみます 3
(ある工夫を加えることで) デジタル回路は微分可能 という話 4
微分可能なものは そのままDeep学習可能 5
微分可能な条件とは… 観測したときにアナログ値の確率で1が観測されるバイナリ値に変換すること 6 例) ⊿Σ変調や、D級アンプなどもこの一例である
Stochastic演算 7 1110111101 0100111010 0100111000 1の出現率0.8 1の出現率0.5 0.8×05 = 0.4
お互いに相関無く確率的にのみ1/0が現れるデータであれば、 ANDゲート1個で出現確率の乗算が出来る 1の出現率0.4 バイナリ変調済みデータ列はゲート1個で乗算できる可能性がある
この考えをFPGAのLUTに適用すると… 8
Stochastic-LUT モデル 9 - * - x0 x1 * W0
binarize * * W1 * * W2 * * W3 1 1 + y 2入力LUTの例 x0-x1 を入力する確率変数. W0-W3 をテーブル値とする W0 が参照される確率 : (1 - x1) * (1 - x0) W1 が参照される確率 : (1 - x1) * x0 W2 が参照される確率 : x1 * (1 - x0) W3 が参照される確率 : x1 * x0 y = W0 * (1 - x1) * (1 - x0) + W1 * (1 - x1) * x0 + W2 * x1 * (1 - x0) + W3 * x1 * x0 値をすべて観測時に0と1のどちらかの値に決まる確率変数として確率値をFP32で扱います。 この計算グラフは微分可能であるため、誤差逆伝播が可能です。 6入力LUTのグラフは図示すると巨大になるので作成していませんが、同様に作成可能です。 確率的LUTモデルを用いることで、一度に非常に多くのバイナリ値を計算したのと同じ効果が得られるため、 micro-MLPよりも高速/高精度な結果が得られます。W値はそのままLUT化できます。 (詳しくは ICCE2019 の発表資料などをご参照ください)
Stochastic-LUTモデルの内部のパラメータ 10 input[n-1:0] output LUTテーブルは入力数nに対してn次元を持ち、その中で連続体として振舞います。 上記は2入力LUTにXORを学習させた場合の模式図です。 内部の状態テーブルを参照する形式を取るために、パーセプトロンモデルと違っ て単独でテーブルをXOR形状に学習することも可能です 2入力LUTをXOR学習させた場合の例
入力データのStochastic化と計算機効率 肝はオーバーサンプリング (⊿Σ変調やD級アンプ、高速度カメラなど) 11 データがバイナリ量子化され周波数が上がる (空間軸情報の時間軸への拡散) データ:演算比が 1:1 に近づき LSI内のトランジスタの演算器割り当て比率が上がり
効率の高い計算機が作れる
計算機効率とデータ帯域の例 10M sample/s のデータに 160MHzの演算器を割り当てた場合、 演算器は16回再利用しないと効率が出ない 12 16個の係数を演算器にリロードするために、 メモリ/シーケンサ/DMAなどの回路リソースを消費 (計算機効率ダウン)
16倍にオーバーサンプリングして160M sample/s とすれば すべてが専用計算気にできるのでリソースの100%を演算器に割り当て可能 (FPGAの場合、係数をすべてLUTに織り込める)
いったんまとめると • Stochastic性を使うとデジタル回路は直接Deepで学習で きる • アナログ値にStochastic性を持たせるためにバイナリ変調 (オーバーサンプリング)を掛けると空間の情報を時間に拡散 できる ⇒ 情報の濃度を変えずにデータ:演算比率を変えられる
• データ:演算比率が 1:1 になると効率の高い計算機アー キテクチャが可能になる(係数が固定でき、係数入れ替えの ための回路が不要になる) • LUT-Net が嵌まるアプリではFPGAで大変効率のいい機 械学習が使える可能性がある 13
手書き数字(MNIST)認識の実験事例紹介 14 xc7z020clg400-1 こんな微小リソース量で 認識が1ミリ秒の遅延でできてます MNISTコア単体性能 CNN時318,877fps カメラも含めたシステム動作1000fps
認識精度に対する高い省リソース性 15 https://twitter.com/Ryuz88/status/1318874376062685184 「何に対して高いの?」と言われると困るのですが、 当時(ICCD2020)の同条件の発表より、早い段階(ICCE2019)で 小サイズ/高認識率を発表していたわけで…
BinaryBrain の話 • どうやって学習させるの? となったときに 6入力1出力のLUTモデルが 細かすぎて、cuBLAS とか使って速く書くのが困難。 • なので、PyTorch
とか Tensorflow でやるのは困難 • 仕方がないから自作しました → BinaryBrain • 現在 RNN 対応とかもしつつ Ver 4 を公開中 • https://github.com/ryuz/BinaryBrain 16
当時実験できていたこと 17 分類器(Classification) MNIST 手書き文字 認識率 99% CIFAR-10 一般物体10種 認識率60%
Auto Encoder Regression 特徴化とそこからの画像生成 重回帰分析のフィッティング
今少し手を付けていたもの 18 https://ryuz.hatenablog.com/entry/2021/08/12/120436 • RNNっぽいことに手を出して、行けそうな雰囲気は確認 • DMAとか書くのがめんどくさくて実装確認が進んでいない • 試しに HLS
向けに C言語出力させてみたがHLSのコンパイルが進まないので断念中
おわりに • FPGAでしか扱えないリアルタイム信号処理領域は依 然として存在する • FPGAは大規模化は依然続いており、ケースによって はルールベースのアルゴリズムではもてあます程度の規模 • LUT-Network は先に回路リソースを固定して、その範
囲でベストエフォートな認識性能を出すよう学習可能 • 既にFPGAを使っていて、SOTAな認識はいらないがルー ルベースでは到達できない微妙なレンジが狙いたいとき、 LUT-Net は結構よいソリューションでは?。 19
• 著者アクセス先 • 渕上 竜司 (Ryuji Fuchikami) • e-mail :
[email protected]
• Web-Site : http://ryuz.my.coocan.jp/ • Blog. : http://ryuz.txt-nifty.com/ • GitHub : https://github.com/ryuz/ • Twitter : https://twitter.com/Ryuz88 • Facebook : https://www.facebook.com/ryuji.fuchikami • YouTube : https://www.youtube.com/user/nekoneko1024 20