FPGAでAI技術を用いた画像認識を試したく、コンテストに参加しています。
ハード・ソフトの環境構築など、実装するための準備をまとめてみました。
FPGAでAIの開発を始める・試してみたい方に参考になれば幸いです。
FPGAでAIの実装にチャレンジ!コンテスト準備編
FPGAでAIの実装にチャレンジしたく、現在コンテストに参加中です。
参加しているコンテストは経済産業省が主催している「第5回AIエッジコンテスト」です。
現在はモデル・アーキテクチャー共に設計・検討中です。
この記事もまだ途中で随時更新中です。
→コンテストもほぼ終わりましたので、参加した感想・忘備録を書きました。
書いている人のFPGAの経験
この記事を書いている人のFPGAの経験としては一般的なレベルです。
仕事ではハードウェア・回路設計が専門で、趣味でもFPGAを触っています。
- FPGAを使ったハードウェア言語(VHDL・Verilog)やC言語の経験
- FPGAを使った画像信号処理の経験
趣味のブログ記事でもFPGAのネタを何個か紹介していますが、代表例を挙げておきます。
●VerilogやIPを使ったFPGAからの画像出力(リンク先はこちら)
●C言語とソフトCPU使ったカメラからの画像信号出力
FPGAでMIPI CSI-2のカメラを動かしてみた。準備編!
FPGA評価ボードの紹介を外部の勉強会で発表したこともあります。
書いている人のAI・エッジの経験
Edge TPUを使った画像認識、クラウドで機械学習のモデル作成などの経験はあります。
ただし、FPGAを使ったAIハードウェアの実装は筆者も初経験です。
手順をブログに残すことで、筆者同様にAI開発を始める人の助けになればと考えています。
趣味のブログ記事でのAI関連の代表例を紹介しておきます。
●クラウド(GCP)でエッジ用の機械学習のモデル作成(リンク先はこちら)
KaggleのデータセットをAutoML Visionでエッジに組み込む
●Edge TPUとPythonを使った画像認識(リンク先はこちら)
AIと画像認識の事例!Pythonでプログラミングして試してみた
AIの勉強会でEdge TPUを紹介したこともあります。
RISC-Vで開発するコンテスト
今回の「第5回AIエッジコンテスト」ではRISC-Vを使ってAI開発するコンペとなります。
「RISC-V」とはCPUのアーキテクチャーの名称です。
(IntelとかArmとは別のものです。オープンソースで流行りつつあります)
現状だと開発アプローチとしては、FPGAかそれ以外の2種類なると思います。
今回の記事はメインにFPGAで開発する準備を進めていきます。
RISC-VをFPGAで開発する
FPGAは中身のハードウェアを自由に構成できるため、RISC-Vも実装可能です。
今回のコンテストではRISC-Vリファレンス環境が提供されています。
現在リファレンス環境をベースにテスト中です。
またテスト終わりましたら、ベンチマークして記事にしたいと思います。
RISC-Vを搭載したCPUで開発する
(2021年の時点で)世の中にはRISC-Vが搭載されたCPUも多く出回っています。
その中で比較的に入手しやすいのは「K210」かとは思います。
「第5回AIエッジコンテスト」ではアイデア賞でFPGA以外の機器でも応募できます。
また何処かでK210を使った画像認識をした内容を紹介したいと考えています。
Xilinxの開発環境を用意する
FPGAで画像認識するためにも、開発環境を用意していきます。
(筆者の記事は覚書レベルのため、参考記事をよく見ることをおすすめします)
今回のコンペの処理速度を競うプラットフォームとしては下記となっています。
・Avnet社 Ultra96-V2 FPGAボード
ボードのFPGAがXilinx製(Zynq UltraScale+ MPSoC ZAU3EG SBVA484)です。
参考記事
全体的に開発環境を整える上で参考させていただいた記事は下記です。
(特に一番上の記事がVitis AIを使う上で非常に参考になりました)
この場を借りて御礼申し上げます。
https://qiita.com/lp6m/items/4117a3bab185afedfd5f
https://www.acri.c.titech.ac.jp/wordpress/archives/12393
https://marsee101.blog.fc2.com/blog-entry-4852.html
また公式ドキュメントも役立ちました。
Ultra96-V2の手順ではありませんが、一連の手順が記載されています。
「Vitis ソフトウェア プラットフォームのインストール」の章が参考になると思います。
https://www.xilinx.com/support/documentation/sw_manuals_j/xilinx2020_1/ug1400-vitis-embedded.pdf
PCのストレージ容量は増強しておく
Vitis AI含めてXilinxの開発環境用にかなりのPCのストレージ容量を使いました。
- Xilinx開発環境のダウンロードしたファイル容量…約40GB
- 実際にインストールした容量…約150GB
- 他リファレンスデザイン等々…数十GB
自宅のPCでコンテストに参加する方が大半かと思います。
必要に応じてPCのストレージ容量を増強しておくことをおすすめします。
(筆者はPCのDドライブにSSDを増設しました)
PCのメモリは8GBだと厳しかった
Vitisの公式ドキュメントにはメモリ容量が最低32GBという記載もあります。
個人PCの環境でメモリ32GB以上のPCを用意できる人は少ないと思います。
筆者が現在テストしているPCのメモリは8GBですが、少し厳しいです。
(また何処かのタイミングでメモリを増強したいと思います。)
VitisにはLinuxの環境が必要
開発環境も種類ありますが、今回はソフトウェア開発する「Vitis」をメインに紹介します
AIのような開発を「Vitis」で行う場合にはLinuxの環境が必要です。
しかし、筆者もですが「自宅にWindowsのPCしか無いよ」という方も多いと思います。
※C,C++など使った基本的なソフト開発はWindowsでも対応できます。(リンク先はこちら)
LinuxのPCを持っていない方でも大丈夫です。
WSL2というWindows上でLinuxを走らせるシステムを使うことで対応できます。
(WSL2…Windows Subsystem for Linux 2)
WindowsのPCで環境構築
筆者は市販のWindowsのノートPCでLinuxを動かして、開発しています。
一般的なノートPCでもコンテストに参加可能です。
- WSL2
- Ubuntu 18.04 LTS
- MobaXterm
- Vitis 2020.2
WSL2をインストール
WSLのインストールに関しては、既にネットに多くの有力記事がありますので省略します。
またdockerの環境も使いますのでインストールしておきます。
WSL2・docker関連で特に参考にさせていただいたネット記事は下記です。
https://astherier.com/blog/2020/07/install-wsl2-on-windows-10-may-2020/
https://kahoo.blog/howto-wsl2-docker-install/
Vitisをインストール
Xilinxのソフトウェア開発環境(Vitis)を用意します。
ダウンロードはXilinxのホームページからダウンロードできます。
今回筆者が用意したVitisは最新版ではなく、「2020.2」を使用しています。
後述しますが、今回使用するAvnetのボードのプラットフォームの入手を楽するためです。
PetaLinuxをインストール
PetaLinuxに関してもインストールしときます。
ダウンロードに関してはVitisと同じ箇所から可能です。(PetaLinuxの欄から入手できます)
Dドライブにはインストールできず、ホームディレクトリで対応しています。
色々事前のライブラリのインストールが必要でした。
何が必要かはインストール実行すると、足りないものが表示されるので対応します。
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
XRTをインストール
XRTに関しては、最初は公式ページのGithubのソースからビルドしようと試みました。
ただ色々インストールが必要でハードルが高かったため、諦めました。
下記記事を参考にして、メーカ純正のボードのXRTファイルでインストールしました。
https://marsee101.blog.fc2.com/blog-entry-4705.html
Vitis AIをインストール
AI開発をする「Vitis AI」に関しては下記Githubのリンク先にあります。
docker環境含めてインストール手順が記載されています。
Ultra96-V2のプラットフォームをダウンロード
Aventのホームページから、Ultra96-V2のボードの環境をダウンロードできます。
「Reference Designs」のタグから入手できます。
このプラットフォームが2020.2までしかないので、VitisのVerも一応合わせています。
まとめ
参加しているコンテストは経済産業省が主催している「第5回AIエッジコンテスト」です。
FPGAを使ったAIの開発できる貴重なコンテストです。
現在はモデル・アーキテクチャー共に設計・検討中です。
この記事もまだ途中で随時更新中です。
→コンテストもほぼ終わりましたので、参加した感想・忘備録を書きました。
コメント