FPGAとAIとお勉強

数年前に、ディープラーニングを発端とする何度目かのAIブームが起こりました。

画像認識や音声認識、将棋などのルールに基づいた推論により多くの実用的な技術も生まれています。スマートスピーカーや、スマートフォンなどで使われている音声認識もそうです。これらは既にブームとは無関係に生活の一部に入り込んでいます。

そんな中で、AIをFPGAに組み込む方法もまた数年前から行われています。

CPUよりGPU、GPUよりもFPGAの方がAIを実装するのに適しているからだという主張です。これは単純に、現在のディープラーニングの方式では乗算機を大量に使うため、乗算機の数が多いデバイスのほうが短時間で判定出来るという理由からです。

デバイスのラインナップもそれを意識しているのか、Kintex-7シリーズでは最大でもDSPブロック数は1920だったのが、Kintex UltraScale+では3528と倍近くに増えています。

開発ボードでよく見かけるZynq-7020が持っているDSPブロックが220だった頃を思えば隔世の感すらあります。

そんな、速度に優れたFPGAですが、あまり欠点についての説明は聞きません。というか、意図的にそれは別の装置の仕事だから、になっています。

その仕事とは、学習機能です。

元々、学習機能は莫大なデータを必要とします。

メモリ、ストレージ、ハードディスク。呼び名はいろいろありますが、FPGAどころか、家庭で使う程度のパソコンでは持ち切れないデータ量が必要です。

Google翻訳は年々精度が上がっています。これは翻訳にかけられたデータを蓄積し、その莫大なデータで学習させているからです。

https://www.internetacademy.jp/it/programming/programming-basic/google-translation-algorithm.html

https://www.crosslanguage.co.jp/blog/nmt-smt-rbmt/

FPGAはデバイスです。1つのICの中にそれほどの学習データを入れ込むことは出来ません。FPGAの外にSDRAMやSSDを繋げてもまだまだ不足です。話しにもなりません。

結果、FPGAにおけるAIというのは「学習済みのアルゴリズムを実装する」という方法しかありません。

映画や小説でイメージするAIの「使っているうちに学習していく」機能はFPGAには実装出来ません。あくまで、学習済みの、固定化されたアルゴリズムの実装です。

学習データの更新は、外からアップデートを掛けてデータを入れ替えることになります。

アップデートで入れ替えるなら他のプログラムと変わらないじゃない、どの辺がAIなの? という気分になります。まあ、プログラムの中身がAI技術で作られたデータというだけなので、間違ってはいません。

『FPGAでAIをやる!』

なんて言うと、全く未知の技術を身に着けないといけないように聞こえますが、ロジック実装というレベルでは今までとなんにも変わらなかったりします。

ニュースでは「AIが分かるハードウェア技術者が」なんて煽り方をしているものも少なくありません。でも、AIの学習データを作るのはサーバーだったりクラウドだったりでハードウェア技術者の手が届かないところで作られるのです。

概要くらいは知っておいたほうが良いとは思いますが、なにやら大上段に構えてるだけで、現実を見ていないように思えてしまいます。

一時期「フルスタックエンジニア」なんていうパワーワードがありました。「万能の人」なんてどこにも居ませんけどね。それと同じ臭いがします。

この記事が気に入ったらサポートをしてみませんか?