ディープ・ラーニングを解説する書籍などは数多ありますが、それをハードウエア化するための情報は少ないような気がします。本企画ではこの書籍にある画像認識(推論)のソフトウエアを徐々にハードウエア化していきたいと思います。
●なぜハードウエア化するのか
近年ディープラーニングが注目を集めており、そろそろ身の回りの電気製品にも導入されようかという勢いです。
上述の書籍にあるプログラムは「Python」という言語で書かれており、パソコンでディープラーニングを体感することができます。しかし、パソコンを電気製品に組み込むわけにはいきません(図1-01)。
●CPUにディープラーニングは重過ぎる・・・そこでFPGA
一般の電気製品(以下「組み込み機器」と呼ぶ)にはたいていCPU(マイコン)が入っており、それが演算や制御を行います。
CPUは安価で小型ですが、「逐次処理」であり一つ一つの計算を順番に行います(図1-02(a))。したがってその高速化には限界があります。
「FPGA」はField Programmable Gate Arrayの略で、「現場でプログラムできるロジックの塊」です。「並列処理」が可能で、同図(b)のように複数の計算を同時に行えます。本企画ではこのFPGAでのディープラーニングのハードウエア化を目指します。
●FPGAにはAND/ORゲートや乗算器が敷き詰められている
FPGAというデバイスにはあらかじめANDゲート, ORゲートやフリップ・フロップといった論理素子(ゲート)が多数敷き詰められており、それらを適宜配線します(図1-03)。
またFPGAでは乗算器、加算器、メモリなども自由に配線して使用することができます(図1-04)。ディープラーニングでは大量の積和演算が必要ですが、FPGAならそれらを同時に(並列に)行うことが可能になります。
●VHDLでハードウエアを記述する
FPGAの開発にはHDL(Hardware Description Language)という言語を使用します。HDLには主にVHDLとVerilogがありますが、本企画では前者を使用します。Pythonで書かれたプログラムをVHDLに移植してFPGAに実装するまでのプロセスや、性能を向上させるための勘所を伝えたいと思います。
|