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
350
Other Decks in Technology
See All in Technology
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
220
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
270
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
2
470
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Building an army of robots
kneath
302
43k
How GitHub (no longer) Works
holman
310
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Raft: Consensus for Rubyists
vanstee
136
6.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Language of Interfaces
destraynor
154
24k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
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