近刊『高位合成によるFPGA回路設計』まえがき公開
2022年2月下旬発行予定の新刊書籍、『高位合成によるFPGA回路設計』のご紹介です。
同書の「はじめに」を、発行に先駆けて公開します。
***
はじめに
2015年10月、GoogleのAlphaGOが人間に勝ったというニュースが世界中を駆け巡りました。これを機に、深層学習(Deep Learning)技術の進展と相まって、世は一気にAIブームになったように感じます。「コンピュータが人間に勝った」という事実が耳目を集め、コンピュータが人間を超えるという、シンギュラリティもまことしやかに語られるようになりました。また、時期を同じくして、GPUベンダーのNVIDIAが、AIデバイスメーカーの雄として露出を高めていくことになります。画像をピクセルごとに高速に処理するために、単純な演算コアを内部に多数もち、並列に計算することに特化したGPUが、単純な積和演算を並列に実施する深層学習の計算構造に適していたため、
という構図は、そのまま
に置き換わり、NVIDIAが時代の寵児として扱われていくことになりました。
このころ、右を向いてもGPU、左を向いてもGPU、報道を見てもGPU、外に出てもGPU、というGPU一辺倒の世の中に対して、次第にざわついた感情をもつようになりました。そんななかで目にしたのが、日本経済新聞2017年7月27日朝刊の記事です。
人間の脳の消費エネルギー21ワットに対して、AlphaGoの消費電力は25万ワットであるため、人に置き換えると1万2000人分になる、というのが記事の主旨です。数字の正確性はともかく、人間に勝つために多大な消費電力を要していることは確かです。潤沢な計算機資源を使って、消費電力を気にせず組めるシステムであればよいのですが、ロボットや監視カメラなど、エッジ側で知能処理を行う場合には、消費電力は重要な要素となってきます。バッテリー駆動のシステムであれば、バッテリーの大きさや重さと、システムの稼働時間のトレードオフを考慮しなくてはなりません。
GPUは消費電力が多量であるとともに、発熱も大きく、エッジ側で知能処理を行うには最適なデバイスとはいえません。
ロボットをはじめとする組込み機器を扱ってきた筆者としては、「深層学習=GPU」一択かのような風潮に違和感を覚えていました。「何か違うな」と。そんななかで出会ったのが、FPGA(Field Programmable Gate Array)です。某所にて見たデモの衝撃は、いまでも鮮明にまぶたに焼き付いています。
デモの内容は、以下のようなものでした。
一般的な画像フィルタ処理のデモでしたが、結果は衝撃的でした。
「これだ!」と思いました。処理の速さもさることながら、「オープンソースとして世に出ているもの」をFPGA化できる、ソフトウェア処理をFPGA化できる、というのがポイントです。これができるのであれば、FPGAコア同梱のSoC上でのソフトウェア処理を、処理負荷の高い部分だけFPGA側に追い出すことができます。しかも、追い出した後のCPUで別の処理を実行できます。後述するように、FPGAは、CPUやGPUのように大きな消費電力はかからず、並列計算も得意なので、深層学習にも向いています。したがって、エッジ向き、組込み機器向きの知能処理デバイスである、ということです。
これでようやく、「深層学習=GPU」一択から
という選択肢もある、ということで、腹に落ちた感じがしました。
しかし、いざ取り組んでみると、難物でした。FPGAはもともと電気回路設計のために使われてきたデバイスなので、デバイスベンダーのマニュアルはソフトウェアエンジニアが読み解くには困難であり、また一般書籍もほとんどない状況のなか、試行錯誤することになりました。これが、本書を執筆することを思い立った理由です。ソフトウェアエンジニアの知識からFPGAの世界に踏み込めるように、ソフトウェアエンジニア視点の書籍を作りたい、と考えました。
本書の構成は、以下のとおりとなっています。
第1、2章で本書のモチベーションとFPGAの概論を説明したあと、第3章以降では、実際に読者に手を動かしながら進められる構成としています。ソフトウェアロジックをFPGA実装するためには、「ハードウェア指向アルゴリズム」を工夫する必要があります。「ハードウェア指向アルゴリズム」が高位合成の肝なので、そのための手順を第3、4章で示しています。第3、4章を順に追っていけば、読者のみなさんが高位合成でソフトウェアロジックをFPGAに落とすことができます。一方、ベンダーのライブラリを使うと、「ハードウェア指向アルゴリズム」を自分で作らなくても、深層学習を動かして試すこともできます。第5章がライブラリの使い方となっています。したがって、地に足をつけてじっくりと取り組みたい方は、第1章から順に追ってください。手っ取り早く動かしたい方は、第1、2章のあとに、第5章に飛んでもかまいません。
また、Appendixには、評価ボードの開発環境構築の手順などを掲載しました。開発環境構築は、マニュアルやウェブの記事を見ながらでも行うことはできますが、試行錯誤を重ねることになるので、手順としてまとめました。
本書が、ソフトウェアエンジニアがFPGAに取り組む入り口となれば幸いです。
***
高位合成の初歩からSLAMや深層学習の実装までカバーした、待望の入門書!
小型で省電力ながらも高性能なFPGAは、自動車やロボットなどでのエッジ処理に適したデバイスとして期待されています。とくに近年では、「高位合成」という、C/C++などの高級言語からFPGAの回路を組み上げる技術が発展しています。これによって、より手軽に、通常のソフトウェア開発と近い感覚でFPGAの開発に取り組むことが可能になっています。
本書では、はじめてFPGAに触れる人でも実用的な知能処理の実装ができるように、基礎的な知識から応用例まで丁寧に解説しています。FPGAに興味のあるソフトウェアエンジニアの方々や、より効率的な開発をしたい組込みエンジニアの方々にもおすすめです。
〈本書の特長〉
●簡単なプログラムを通して、高位合成のポイントを一つ一つ説明しています。さらに、実践的なアプリケーションの例として、SLAMの実装について解説しています。
●自身の手でゼロから開発するだけでなく、より高性能な処理を可能にするため、さまざまなライブラリがベンダーから提供されています。その活用例として、深層学習の実装について解説しています。
●システム実装の考え方やアーキテクチャの知見といった基礎事項も要点を押さえて解説しているので、はじめてFPGAに触れる人でも無理なく学ぶことができます。
この記事が気に入ったらサポートをしてみませんか?