FPGAでAIの実装にチャレンジ!コンテスト準備編

本サイトはアフィリエイト広告を利用しています。
AI

FPGAでAI技術を用いた画像認識を試したく、コンテストに参加しています。

ハード・ソフトの環境構築など、実装するための準備をまとめてみました。

FPGAでAIの開発を始める・試してみたい方に参考になれば幸いです。

 

スポンサーリンク

FPGAでAIの実装にチャレンジ!コンテスト準備編

FPGAでAIの実装にチャレンジしたく、現在コンテストに参加中です。

参加しているコンテストは経済産業省が主催している「第5回AIエッジコンテスト」です。

The 5th AI Edge Contest (Implementation Contest 3) | SIGNATE - Data Science Competition

 

現在はモデル・アーキテクチャー共に設計・検討中です。

この記事もまだ途中で随時更新中です。

→コンテストもほぼ終わりましたので、参加した感想・忘備録を書きました。

AIエッジコンテストが勉強になった(難しかった)件

AIエッジコンテストが勉強になった(難しかった)件
第5回AIエッジコンテストに参加していました。 (筆者の力量では)コンテストの課題が難しく、最後の実装まで到達できませんでした。 ただ貴重な勉強の機会になりましたし、自身への忘備録としても内容を紹介します。

 

書いている人のFPGAの経験

この記事を書いている人のFPGAの経験としては一般的なレベルです。

仕事ではハードウェア・回路設計が専門で、趣味でもFPGAを触っています。

  • FPGAを使ったハードウェア言語(VHDL・Verilog)やC言語の経験
  • FPGAを使った画像信号処理の経験

 

趣味のブログ記事でもFPGAのネタを何個か紹介していますが、代表例を挙げておきます。

●VerilogやIPを使ったFPGAからの画像出力(リンク先はこちら)

FPGAでHDMIから画像出力!フリーのIPを使ってみた

FPGAでHDMIから画像出力!フリーのIPを使ってみた
フリーのIPを使ってFPGAから画像出力してみました。 HDMIコネクタ接続のディスプレイにカラーバーを表示させています。 IPの入手方法からピンの設定まで分かりやすく手順を紹介します。

 

●C言語とソフトCPU使ったカメラからの画像信号出力

FPGAでMIPI CSI-2のカメラを動かしてみた。準備編!

FPGAでMIPI CSI-2のカメラを動かしてみた。準備編!
FPGAでカメラからMIPI CSI-2の信号を出力させてみました。 Xilinxのデフォルトで利用できるフリー(無料)のIPを使っています。 MIPI CSI-2のカメラをFPGAで動かすための準備内容を紹介します。

 

FPGA評価ボードの紹介を外部の勉強会で発表したこともあります。

 

書いている人のAI・エッジの経験

Edge TPUを使った画像認識、クラウドで機械学習のモデル作成などの経験はあります。

ただし、FPGAを使ったAIハードウェアの実装は筆者も初経験です。

手順をブログに残すことで、筆者同様にAI開発を始める人の助けになればと考えています。

 

趣味のブログ記事でのAI関連の代表例を紹介しておきます。

●クラウド(GCP)でエッジ用の機械学習のモデル作成(リンク先はこちら)

KaggleのデータセットをAutoML Visionでエッジに組み込む

KaggleのデータセットをAutoML Visionでエッジに組み込む
GoogleのAutoMLを使ってKaggleのデータセットを解析、またエッジ向けのモデルを作成してみました。機械学習の初心者の筆者でも簡単に試すことができ、非常に勉強になった旨を紹介します。KaggleのデータセットをAutoMLVisi...

 

●Edge TPUとPythonを使った画像認識(リンク先はこちら)

AIと画像認識の事例!Pythonでプログラミングして試してみた

AIと画像認識の事例!Pythonでプログラミングして試してみた
AIで画像認識させて特定の物を検出した場合には外部機器を制御するようにPythonでプログラミングしました。実際に動く物を検出しますので「人・動物の検知」「工場ラインの管理」等に応用できます。リアルタイムで動体をAI+画像認識を行う前回記事...

 

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リファレンス環境が提供されています。

5th_AI_Edge_Contest_Reference_implementation - Google ドライブ

 

現在リファレンス環境をベースにテスト中です。

またテスト終わりましたら、ベンチマークして記事にしたいと思います。

 

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でも対応できます。(リンク先はこちら)

Vitisのインストールを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://daimaohsx.dip.jp/wordpress/2020/12/18/easiest-and-fastest-way-to-build-an-ubuntu-desktop-environment-on-wsl2-on-windows-10/

 https://kahoo.blog/howto-wsl2-docker-install/

 

Vitisをインストール

Xilinxのソフトウェア開発環境(Vitis)を用意します。

ダウンロードはXilinxのホームページからダウンロードできます。

ダウンロード
Vivado,Vitis,VitisEmbeddedPlatform,PetaLinux,Devicemodels

 

今回筆者が用意したVitisは最新版ではなく、「2020.2」を使用しています。

後述しますが、今回使用するAvnetのボードのプラットフォームの入手を楽するためです。

sudo ./Xilinx_Unified_2020.2_1118_1232_Lin64.bin

 

PetaLinuxをインストール

PetaLinuxに関してもインストールしときます。

ダウンロードに関してはVitisと同じ箇所から可能です。(PetaLinuxの欄から入手できます)

Dドライブにはインストールできず、ホームディレクトリで対応しています。

./petalinux-v2020.2-final-installer.run --dir ~/petalinux_2020.2/

 

色々事前のライブラリのインストールが必要でした。

何が必要かはインストール実行すると、足りないものが表示されるので対応します。

 

sudo apt install -y autoconf texinfo gcc-multilib
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
sudo apt-get install libncurses5-dev libncursesw5-dev

 

XRTをインストール

XRTに関しては、最初は公式ページのGithubのソースからビルドしようと試みました。

ただ色々インストールが必要でハードルが高かったため、諦めました。

 

下記記事を参考にして、メーカ純正のボードのXRTファイルでインストールしました。

 https://marsee101.blog.fc2.com/blog-entry-4705.html

sudo apt install xrt_202020.2.9.317_18.04-amd64-xrt.deb

 

Vitis AIをインストール

AI開発をする「Vitis AI」に関しては下記Githubのリンク先にあります。

docker環境含めてインストール手順が記載されています。

GitHub - Xilinx/Vitis-AI: Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Alveo cards.
VitisAIisXilinx’sdevelopmentstackforAIinferenceonXilinxhardwareplatforms,includingbothedgedevicesandAlveocards.-GitHub-Xilinx/Vitis-AI:VitisAIisXilinx’sdevelopm...

 

Ultra96-V2のプラットフォームをダウンロード

Aventのホームページから、Ultra96-V2のボードの環境をダウンロードできます。

「Reference Designs」のタグから入手できます。

このプラットフォームが2020.2までしかないので、VitisのVerも一応合わせています。

Ultra96-V2 | Avnet Boards
Arm-based,AMDXilinxZynqUltraScale+™MPSoCDevelopmentBoard

 

まとめ

参加しているコンテストは経済産業省が主催している「第5回AIエッジコンテスト」です。

FPGAを使ったAIの開発できる貴重なコンテストです。

The 5th AI Edge Contest (Implementation Contest 3) | SIGNATE - Data Science Competition

 

現在はモデル・アーキテクチャー共に設計・検討中です。

この記事もまだ途中で随時更新中です。

→コンテストもほぼ終わりましたので、参加した感想・忘備録を書きました。

AIエッジコンテストが勉強になった(難しかった)件

AIエッジコンテストが勉強になった(難しかった)件
第5回AIエッジコンテストに参加していました。 (筆者の力量では)コンテストの課題が難しく、最後の実装まで到達できませんでした。 ただ貴重な勉強の機会になりましたし、自身への忘備録としても内容を紹介します。

コメント