広がり続ける FPGA の応用と人工知能への活用 (1)

画像認識

みなさん、こんにちは!最近は人工知能や AI、機械学習、ディープラーニングといった言葉をいろいろな場面で目にする機会が多くなりましたね。それと同時にもしかするとみなさんが今まであまり馴染みのなかった FPGA という単語に触れる機会も増えてきたのではないでしょうか。

本コースではこれから活躍が一層期待されるこれら2つのテクノロジーについてわかりやすく解説し、実際に使えるまでを目指したいと思います。

人工知能 (AI) を FPGA で実現する!

AI を概観する

「人間のような知能をつくる技術」と言われる人工知能にはさまざまな手法がありますが、特に FPGA が効果的な分野を中心に概観してみましょう。

人工知能とディープラーニング概観

脳内にある神経細胞 (ニューロン) とそのつながりを数式的モデルで表現したものがニューラルネットワークです。ディープラーニング (深層学習) はニューラルネットワークの層を構成することによって特徴量の抽出を可能にする技術で、画像、文字、音声などさまざまな認識技術に応用されています。

画像認識は静止画や動画に対して分類 (Classification)、検出 (Detection)、セグメンテーション (Segmentation; 検出および分類した物体の領域を識別) や顔認識、顔認証、姿勢推定などをおこなう技術が含まれており、ADAS (先進運転支援システム)、自動運転システム、監視カメラや入門チェックなどのセキュリティシステム、工場での品質チェックなど幅広い分野に応用され始めていることをご存知のかたも多いと思います。

分類

検出
セグメンテーション

姿勢推定
顔認識

スマートフォンやAI スピーカでお馴染みの音声認識は、チャットボット、ロボット、AI 通訳機や動画テロップのリアルタイム生成などで活用されていますし、文字認識は OCR などで活用され、業務効率の改善に役立っています。本稿の後半に AI の具体的な応用事例をいくつか取り上げます。

AI に関する研究は特に近年進展が著しく、ここで取り上げた以外にもさまざまな手法があります。興味のあるかたは書籍や文献などでぜひ深く調べてみてください!

FPGA を使って実現しよう!

AI はあらゆる産業で応用され始めていますが、FPGA を活用して AI を実現すると、どのような効果を得ることができるのでしょうか。

(1) 遅延時間とスループットの両立

CPU、GPU などのプロセッサを使って高いスループット (時間当たりの処理能力) を実現するためには、データ数 (画像認識の場合には画像の枚数) をある程度まとめてから処理をおこなうバッチ処理が必要になります。この場合、データ数がまとまるまでの待ち時間が発生するため、事象が発生してから処理が終わるまでの待ち時間が長くなってしまいます。遅延時間とスループットの両立は事象発生から判断、反応までの遅延時間がクリティカルな自動運転や ADAS などではとても重要な条件となります。

CPU/GPUの場合
FPGA の場合

(2) 消費電力の低減

消費電力が特に重要となるケースはおもに2つに分類できます。ひとつは電力供給源がバッテリーである場合、もうひとつは非常に高い処理能力が要求される場合です。

前者はバッテリー寿命を伸ばしたいことは当然ですが、バッテリーからの供給電源容量にそもそも制約がある場合も少なくありません。後者は限られた設置スペースや予算で高い性能を得るために複数のアクセラレーションカードを1台のサーバーに実装したい、しかし消費電力が大きいとそれに伴って発生する熱の制約によって密な実装ができず、結果的に1台あたりのサーバーの性能を思ったほど向上できない場合が挙げられます。

FPGA はそれぞれのニーズに適合したハードウェアを構成することで性能あたりの消費電力効率を大幅に向上できます。さらにひとつの FPGA デバイス内で異なるディープラーニングのモデルを独立して同時に運用することが可能なため、ひとつの FPGA で物体検出、セグメンテーション、姿勢推定などを同時に高い性能で効率良く実現することが可能です。

(3) エッジとクラウドの双方に実装が容易

AI の推論の実装をエッジ側にするか、クラウド側にするか、といった判断が必要な場合があります。クラウド側で継続的に学習を行う必要があり、その結果をエッジに渡すしくみがある場合は推論はエッジ側に実装する選択肢があります。この場合、クラウド側に推論を実行させてエッジ側で結果をもらう場合と比較して遅延時間を短くできる可能性があります。クラウドと接続していないときでも推論を実行できる点もメリットでしょう。しかしこのような仕組みを整えることが難しい場合や学習の結果を一箇所に蓄積して集中的に処理を行いたい場合にはクラウド側で推論を実行する選択があります。エッジとクラウドで同一の開発環境が整っていると、状況に応じて比較的容易に相互の移行が可能になります。

クラウドとエッジ

(4) 最新技術に短期間で対応できる

すでに触れたように AI に関する研究は特に近年進展が著しく、優れた理論が次々と発表されています。最新の優れた理論をより効果的に実装するためにハードウェアのアーキテクチャも短期間での更新が求められます。

一例として、推論は重みやアクティベーションの変数に16ビットや8ビットの INT 型データを使用することが最近までのトレンドでしたが、これらに4ビット INT 型データを使用して必要な計算リソースを削減することにより、識別精度を下げることなく小さな消費電力でスループットを向上することができるといった記事が最近リリースされました。FPGA を使用することで、このように次々と発表される優れた最新技術に短期間で対応することが可能になります。

イノベーションの速度がシリコンサイクルを上回る

さらに FPGA を活用して AI を実現することはエンジニアにとって次の効果があると考えています。

(5) さまざまな産業に役立つ技術を深く幅広く身に着けることができる

別の回で解説するように、AI の実装は昨今の FPGA 開発環境では C、C++、Pythonといったプログラミング言語で実現できます。しかし FPGA を使えるエンジニアとしてさらに上を目指したい、周辺機能のハードウェアもひとつの FPGA にインテグレーションしたい、といった場合には Verilog や VHDL といったハードウェア記述言語 (HDL; Hardware Description Language) を身に着ける機会を得ることができます。最近の記事にも取り上げられていますが、AI は今後さまざまな産業で活用され、人材不足が予測されています。特に日本では AI 関連の技術がわかりハードウェアも使いこなすことができるエンジニアの人材不足は重要な課題として認識されており、国家としても企画などさまざまな対策に取り組んでいます。これらの技術を習得することはエンジニアにとって将来活躍できる領域を広げるためにも有益な選択ではないかと思います。

FPGA とは

ここまで FPGA について説明なく話しを進めてしまいました! FPGA について馴染みのないかたのため、FPGA に関する基礎的な知識は下記のページが参考になります。
https://japan.xilinx.com/japan/fpga-koza.html

第4章の内容は古く更新されていないようですが (ゴメンナサイ!)、第1章~第3章はまとまっていて参考になります。余談ですが、第1章「ASIC と ASSP の領域を取り込む FPGA」にある FPGA 雑学コラム「FPGA の生みの親は?」は FPGA のみならず半導体の歴史を知るうえで大変興味深いですね。

AI における FPGA の応用事例

それでは AI における FPGA の応用事例をいくつか見てみましょう。

ひとつめは大手ショッピングサイトを運営するクラウドベンダーの事例です。サイトにアップされる商品画像をチェックするためにそれまでの方法では処理能力、コストとも難しくなり、代替えのソリューションを模索していました。FPGA によるソリューションを導入することで処理性能の向上と75% のコスト削減を同時に実現しました。

FPGAの導入により画像認識スループットの向上と75%のコスト削減を同時に実現

ふたつめに紹介する事例は監視カメラ、セキュリティシステムです。200万台の監視カメラの画像分析と音声認識を同時にリアルタイムに実現するために FPGA を搭載したアクセラレータ PCI カードを導入しました。その結果、画像認識のスループット3倍、音声認識のスループット16倍、消費電力1/10削減を実現しました。

セキュリティシステム

最後に取り上げる事例は IoT とクラウド です。電力供給のインフラが整っていない地域で絶滅が危惧される動物を保護するためのモニタシステムを実現しました。

太陽電池で駆動するカメラ内に低消費電力な FPGA を組込み、推論モデルは Amazon SageMaker で構築してエッジカメラにデプロイします。エッジシステムは画像をクラウドに送らずエッジ側で実行した画像認識の結果のみを必要なときにクラウドに送信することで消費電力の低減を実現しています。興味のあるかたは日本語による解説動画をぜひご覧ください。

クラウドとエッジ推論のAWS Greengrassによる連携

まとめ

今回は FPGA を活用して AI を実現するとどのようなメリットがあるかについて概観しました。また、実際の応用事例をいくつか取り上げました。

次回はこれらのメリットを実現するしくみと開発環境について少し踏み込んで解説を予定しています。このコースの後半の回には FPGA を使用したディープラーニングを無料で体験できる環境の紹介を予定しています。

ザイリンクス株式会社
堀江義弘

タイトルとURLをコピーしました