FPGAに機械学習モデルを実装する – ランダムフォレストによるクラス分類

「FPGAに機械学習の推論部分を実装し高速に処理を行う」という技術は耳にしたことがありましたが,漠然としたイメージがあるだけで実際にどのように実装していくのかということは知りませんでした。調べてみると,高位合成を用いた手法や,学術研究として開発されたアクセラレータとしてのアーキテクチャは存在するようですが,シンプルなサンプルコードの形で存在するものはないようです。

今回はHDLを使って機械学習モデルをFPGAに実装することにしました。まずはシンプルに定番の「ランダムフォレストを用いたMNIST手書き文字のクラス分類(画像の手書き文字を当てる)」をFPGAに実装して推論を行い,ソフトウェアの実装と比較してみます。結果を先に書くと,組み合わせ回路を用いたランダムフォレストの推論器をIntel Cyclone Vにて120個のALMで実装でき,入力・出力間の遅延(処理時間)は約22ns(ソフトウェアは1.4ms)となりました。

検証に際して用意した環境は以下です。

  • FPGAボード:Terasic社 DEO-CV / Intel Cyclone V E 5CEBA4F23C7N
  • FPGA開発環境:Quartus Prime Lite 20.1
  • FPGA開発言語:Verilog HDL
  • シミュレータ:ModelSim Intel FPGA Starter Edition 2020.1
  • PC:CPU AMD Ryzen 7 1700x / RAM 32GB / SATA SSD
  • ソフトウェア・ライブラリ:Windows 10 / Python 3.6.2 / scikit-learn 0.23.2

では実際にどのように検証したのか詳しくみていきましょう。

続きはこちらから……

採用情報

関連記事