FPGAで機械学習の推論部分を高速に処理する方法を調べた結果、シンプルなサンプルコードは存在しないことが分かりました。そこで、HDLを使ってランダムフォレストをFPGAに実装しソフトウェアと比較しております。詳細な検証方法や使用した環境は下記内容をご確認ください。
FPGAに機械学習モデルを実装する方法とは
「FPGAに機械学習の推論部分を実装し高速に処理を行う」という技術は耳にしたことがありましたが,漠然としたイメージがあるだけで実際にどのように実装していくのかということは知りませんでした。調べてみると,高位合成を用いた手法や,学術研究として開発されたアクセラレータとしてのアーキテクチャは存在するようですが,シンプルなサンプルコードの形で存在するものはないようです。
検証
今回はHDLを使って機械学習モデルをFPGAに実装することにしました。まずはシンプルに定番の「ランダムフォレストを用いたMNIST手書き文字のクラス分類(画像の手書き文字を当てる)」をFPGAに実装して推論を行い,ソフトウェアの実装と比較してみます。結果を先に書くと,組み合わせ回路を用いたランダムフォレストの推論器をIntel Cyclone Vにて120個のALMで実装でき,入力・出力間の遅延(処理時間)は約22ns(ソフトウェアは1.4ms)となりました。
検証に際して用意した環境は以下です。
FPGAボード:Terasic社 DEO-CV / Intel Cyclone V E 5CEBA4F23C7NFPGA開発環境:Quartus Prime Lite 20.1FPGA開発言語:Verilog HDLシミュレータ:ModelSim Intel FPGA Starter Edition 2020.1PC:CPU AMD Ryzen 7 1700x / RAM 32GB / SATA SSDソフトウェア・ライブラリ:Windows 10 / Python 3.6.2 / scikit-learn 0.23.2
では実際にどのように検証したのか詳しくみていきましょう。
続きはこちらから……
https://developers.gmo.jp/10288/