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
84
LUT-Network ~その後の話~
コロナもあってどこにも発表できなかったのですが、資料だけ作ったので置いておきます。
Ryuji Fuchikami
May 07, 2022
Tweet
Share
More Decks by Ryuji Fuchikami
See All by Ryuji Fuchikami
オリジナルの深層学習で HLS Challenge にチャレンジ
ryuz88
0
580
Zynq MP SoC で楽しむエッジコンピューティング ~RTLプログラミングのススメ~
ryuz88
0
2k
Rust で RTOSを考える
ryuz88
0
95
Verilatorやってみた! ~ OpenCVでテストベンチを書いてみた ~
ryuz88
0
95
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
74
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
ryuz88
0
60
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
ryuz88
0
950
Other Decks in Technology
See All in Technology
3D生成AIのための画像生成
kosukeito
2
610
今日からはじめるプラットフォームエンジニアリング
jacopen
8
2k
Azure Maps Visual in PowerBIで分析しよう
nakasho
0
210
Dataverseの検索列について
miyakemito
1
180
MCPが変えるAIとの協働
knishioka
1
140
AOAI で AI アプリを開発する時にまず考えたいこと
mappie_kochi
1
490
Как мы автоматизировали интеграционное тестирование с Gonkey и не пожалели. Паша Егорычев, Кирилл Поляков
lamodatech
0
2k
AIと共に乗り越える、 入社後2ヶ月の苦労と学習の軌跡
sai_kaneko
1
210
2025年8月から始まるAWS Lambda INITフェーズ課金/AWS Lambda INIT phase billing changes
quiver
1
810
企業が押さえるべきMCPの未来
takaakikakei
4
980
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5.1k
Computer Use〜OpenAIとAnthropicの比較と将来の展望〜
pharma_x_tech
6
1k
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Become a Pro
speakerdeck
PRO
28
5.3k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
KATA
mclloyd
29
14k
It's Worth the Effort
3n
184
28k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.6k
Documentation Writing (for coders)
carmenintech
71
4.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Site-Speed That Sticks
csswizardry
6
540
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
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