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
56
LUT-Network ~その後の話~
コロナもあってどこにも発表できなかったのですが、資料だけ作ったので置いておきます。
Ryuji Fuchikami
May 07, 2022
Tweet
Share
More Decks by Ryuji Fuchikami
See All by Ryuji Fuchikami
オリジナルの深層学習で HLS Challenge にチャレンジ
ryuz88
0
510
Zynq MP SoC で楽しむエッジコンピューティング ~RTLプログラミングのススメ~
ryuz88
0
1.8k
Rust で RTOSを考える
ryuz88
0
53
Verilatorやってみた! ~ OpenCVでテストベンチを書いてみた ~
ryuz88
0
35
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
290
Other Decks in Technology
See All in Technology
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
110
AI長期記憶システム構築のための LLMマルチエージェントの取り組み / Awarefy-LLM-Multi-Agent
iktakahiro
2
350
マイベストのデータ基盤の現在と未来 / mybest-data-infra-asis-tobe
mybestinc
2
1.9k
2024年グライダー曲技世界選手権参加報告/2024 WGAC report
jscseminar
0
200
データの信頼性を支える仕組みと技術
chanyou0311
6
1.6k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
0
110
福岡新卒エンジニアの会
teba_eleven
1
190
OCI Data Integration技術情報 / ocidi_technical_jp
oracle4engineer
PRO
1
2.6k
Team Dynamicsを目指すウイングアーク1stのQAチーム
sadonosake
1
210
신뢰할 수 있는 AI 검색 엔진을 만들기 위한 Liner의 여정
huffon
0
540
Datachain会社紹介資料(2024年11月) / Company Deck
datachain
4
17k
AI機能の開発運用のリアルと今後のリアル
akiroom
0
250
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
For a Future-Friendly Web
brad_frost
175
9.4k
KATA
mclloyd
29
14k
RailsConf 2023
tenderlove
29
890
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
505
140k
Documentation Writing (for coders)
carmenintech
65
4.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Being A Developer After 40
akosma
86
590k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
360
Into the Great Unknown - MozCon
thekraken
32
1.5k
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