Ryuz's tech blog

FPGAなどの技術ブログ

SOTAなモデルと戦うな

はじめに

AI研究でFPGAを使おうとする初学者の方へ、せっかく高い意欲をもってFPGAに興味を持ってくださった若者が辛い思いをしないよう、繰り返しになる部分もありますが書いておきたいと思います。

  • 「FPGAを使って面白いモデル改善をして実装までやりました!」
  • 「ふーん、で SOTA なモデルより何% 精度良くなったの?」

で、辛い目に合う若手を、もう何人見てきたことか。

意義深いことやってる筈なんですが、ちゃんと説明できないので折角の成果が認めてもらえないし、FPGAなんか知らない人には何やってるんだかよくわからないということが起こってしまうわけです。

もっとも、AI モデルをやってるのか、計算機アーキテクチャをやってるんだか、よくわからないまま、なんとなく「AIやりたい、FPGA面白そう」で深く整理しないまま手あたり次第手を動かしてる側にも問題はあるのですが(苦笑)。

リコンフ8策みたいな高尚なことは書けませんが、私も少し持論を書いてみるわけです。

SOTAなモデルと戦うな

で、表題に戻るんですが、FPGA で GPU や AI専用LSI と精度競争しても勝てるわけないんだから、前提をちゃんと置くべきなんです。

じゃあ何と戦うのか、条件を同じにした 従来のモデル と戦うべきだと思うわけです。

例えば昨今 フィジカルAI みたいなバスワードが流行ってますが、例えばあなたが数万円ぐらいの FPGA をターゲットにしていて、積和演算のできる DSP が 200個 ぐらい入っていたとしましょう。

ピクセルクロック 200MHz ぐらいで画像処理するとして、40G MAC/s 程度の演算リソースという事になります。

「今はFPGAで評価してるが、ASIC化して数百円で数百mW のチップで出来る事も視野に研究している」みたいなエクスキューズを挟むのもありでしょう。

実際、従来のモデルで 40G MAC/s で出来る事は極めて限定的で、著しく fps が下がったり、恐ろしく低精度な結果しか出ないでしょう。

30fps ぐらいで動かそうもんなら MNIST ぐらいならまだいいですが、CIFAR-10 クラスでも SOTA からは程遠い精度しか出ないはずです。

そういったものをまず定義して、特殊領域に AI を入れ込むことがいかに難しいかを先に述べて、そこを改善することの意義を述べましょう。

しばしこの辺りが全く述べられてない論文を書いてしまい、査読段階で「SOTAなネットとの比較を載せるべきだ」という指摘を食らって馬鹿正直に比較するリバイスをしてしまい拒絶される愚を見かけるわけですが、そこで行うべきは「SOTAなネットと比較する意味がない」ことをちゃんと書くことと、SOTAなモデルの技法であっても 同じ条件下ではろくでもない性能しか出ない ことをちゃんと示す事だと思うわけです。

FPGA のメリット

FPGAを使って AI をやるメリットは

  • 低遅延でリアルタイムに演算できる
  • CPUやGPUに存在しないデータ型を自由に定義できる(特に強い量子化や非線形表現)
  • 並列演算だけでなくパイプライン演算もできる
  • ヘテロジニアスな計算機も作れる
  • 特殊なセンサーデバイスとセットでディープセンシング出来る

などなど、いろんなものがあります。

そもそも GPU 上で研究と学習が行われている多くの従来モデルは、アンコンシャスバイアス的にGPUで効率が良くなるようにモデル設計されてるわけですから、それをそのままこういう特殊領域に持ってきたら碌なことにならないわけです。

如何に碌でもないことが起こるか最初にボコボコに叩いて、課題を挙げまくりましょう。

「あなた方が高価で発熱しまくるGPUで研究してるモデルは、いざコストと生産性に追われてる現場のおじちゃんおばちゃんには何一つ役に立ってないんだぞ」と(オブラートに包んで)きっちり言い返しておきましょう(笑)。

出発点が違うんだという事をしっかり主張しないと、お互い違う物差しで不毛な議論をすることになり、誰も幸せになりません。

リアルタイムコンピューティング的な解

で、当サイトは「低遅延でリアルタイムに演算できる」を最重視しているわけですが、結局、成果を見る側に下記の立ち位置の違いを理解してもらえる説明を如何にできるかだと思うわけです。

私の取り組みの原点は低遅延処理ですが、低遅延の為にハイサンプリングレートにすると、時間変化に対して連続性が生じるのでアルゴリズムが変わる、という事が起こり、それらをAIモデルに反映させるには計算機アーキテクチャごと再設計しないといけないけど、それは確かに成果があるという事です。

予想外にバズったつぶやきを下記に張りますが、同じようなことが AIモデルでも結構いろいろ出来るので、そういう研究って面白いのですが、そういう背景をうまく説明しないと 「SOTAなネットの方がよっぽど精度良いよ???」となってしまうAI研究者は多いので、ちゃんと万人に分かるように説明する ってとっても大事なのです。

おわりに

まあ、なにより、研究してる本人が、自分がやってることが他分野の人にどう見えてるのか客観的に理解することが大事なんだとは思います。

そうはいっても、AIも大変だし、FPGAのツールにも振り回されるし、悪戦苦闘して、なんか動かすのに精いっぱい となってテンパってる学生にそこまで求めるのも酷なのかもしれませんが、折角の成果が評価されないのも もったいない ですので少しでもうまく伝えるテクニックを考えてあげることが出来ればと思う次第です。