🩻

RaspberryPi5用のHailo 8L + NVMeボード試す

2024/08/10に公開

以前の投稿で、Raspberry Pi 5用のNVMe拡張ボードのセットアップを試してみて、ストレージの大容量&高速化できたのですが、その後も各社から拡張ボードがたくさん発売されてます。

https://zenn.dev/usagi1975/articles/2023-12-29-000_raspi5_boot_nvme

AI Bundle (Hailo 8L) for Raspberry Pi 5

同時期にHailoの拡張ボードが発売されたのは知ってましたが、ストレージが使えなくなるので、スルーしていたところ、両方使えてかつバンドルされたボードが発売されたので早速購入してみました。

下記のPiHutで購入。Paypal決済だと送料が12ユーロでした。(1ユーロ幾らだっけ?)

https://thepihut.com/products/ai-bundle-hailo-8l-for-raspberry-pi-5

正面図。写真にないけど、5mmぐらいの金属マウントとネジが4セット付いてます。
Hailoが既に取り付けてあります。

背面図。特に何もなし。

説明書も何もないですが、ラズパイの裏に設置するタイプなので、ヒートシンクとは干渉しないです。

Hailo 8Lの近影。NVMe 2230 A+E Keyタイプです。

Hailo 8L とは

HailoAIアクセラレータの拡張モジュールで割と前から発売されてます。NVMeタイプなのでこういったボードがないと接続できなくて産業向けでなかなか手が出ないボードでした。

Raspberry Pi 5がPCI接続できるようになり、これと組み合わせて、やっと個人レベルで使えるようになってきたと思います。GPUよりもずっと省電力なので、エッジとかノートPCとかに増設するイメージですかね。(ただし、Raspberry Pi 5自体がかなり消費電力が高い)

https://hailo.ai/ja/products/ai-accelerators/hailo-8l-m-2-ai-acceleration-module-for-ai-light-applications/#hailo8lm2-overview

下記資料にもありますが、演算能力は13TOPSです。

https://hailo.ai/files/hailo-8l-m-2-et-product-brief-en/

エッジデバイス TOPS
Hailo 8L 8.0
MilkV Duo 256M 1.0
Jetson Orin Nano 40.0
Jetson Nano 0.5
Kakip (Renesas RZ/V2H) 80.0

ホントはKakip待ってるんですが、4月発売って言いながらまだ発売されない。
値段もおそらく3万円以上ですかね。。待ちきれなくてこっちに手を出してしました。

https://www.kakip.ai/products/renesas-rz-v2h-2gb-4gb-8gb-ram/

Raspberry Pi 5に基板のセットアップを行う

この基板の販売ページにセットアップのリンクがあったので、確認したところ以前自分が試した方法よりもずっと簡単にできそうでしたので、概要だけリストすると、

  1. SDカードでラズパイ起動して、ファームウェアのアップデート (sudo rpi-eeprom-update)
  2. SDカードを抜いて、基板とM.2ストレージをラズパイに接続
  3. 有線LANを接続して、電源ON

だけで、ドライブを認識すると、ネットワークからOSインストールしてくれそうです。
自分が以前やった方法は、Bootの優先順位を変更したり、一旦Windowsに外付けでM.2ストレージを接続してインストールしたりしてましたが、上記のほうがお手軽でおすすめです。

あと、起動時にnvmeストレージが見つからないエラーが出て進まない場合、フラットケーブルの接続を今一度確認したほうが良いです。私は最初これが出て、「初期不良!?」って疑いました。

基板の取り換え作業は完了。前使ってたボードも一緒に撮影。

今回は一からOSセットアップは面倒だったので省略しましたが、基板入れ替えしてもそのまま認識しました。

とりあえず、製造元にあったリンク手順を以下に貼り付けておきます。

  • ラズパイ5のファームウェアアップデート

https://pineboards.io/blogs/tutorials/how-to-update-the-firmware-on-your-raspberry-pi-5

  • ドライブへのネットワークインストール

https://pineboards.io/blogs/tutorials/how-to-flash-an-nvme-boot-drive-with-raspberry-pi-5

Hailoのツールキットインストールと確認

ハードが無事セットアップできて、OS起動できたら早速Hailoが機能しているか、ドライバのインストールとカメラを使ったテストをやってみます。

とりあえずHailo関連を一式インストールします。

  • Hailo カーネルデバイスドライバーとファームウェア
  • HailoRT ミドルウェア ソフトウェア
  • Hailo Tappas コア後処理ライブラリ
  • Hailorpicam-apps後処理ソフトウェアのデモステージ
> sudo apt install hailo-all -y

カメラもセットアップします。今回はRaspiカメラを使います。なんかフラットケーブルの規格変わってますね。古いやつよりも本体側は細いです。ケーブルない人は購入が必要。

カメラもセットアップしたら一旦再起動します。

> sudo reboot

再起動したら、Hailoとカメラがとりあえず認識しているか確認する。
hailoは以下のコマンドの結果のようなものが出力されていればとりあえずOKです。

> hailortcli fw-control identify

Executing on device: 0000:04:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.17.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8L
Serial Number: HLDDLEB235101768
Part Number: HM21LB1C2KAE
Product Name: HAILO-8L AI ACC M.2 A+E KEY MODULE EXT TMP

> dmesg | grep -i hailo

[    2.004466] hailo: Init module. driver version 4.17.0
[    2.028358] hailo 0000:04:00.0: Probing on: 1e60:2864...
[    2.028368] hailo 0000:04:00.0: Probing: Allocate memory for device extension, 11600
[    2.028389] hailo 0000:04:00.0: enabling device (0000 -> 0002)
[    2.028398] hailo 0000:04:00.0: Probing: Device enabled
[    2.028427] hailo 0000:04:00.0: Probing: mapped bar 0 - 00000000edd39aed 16384
[    2.028436] hailo 0000:04:00.0: Probing: mapped bar 2 - 00000000fea44f30 4096
[    2.028441] hailo 0000:04:00.0: Probing: mapped bar 4 - 000000008d73562c 16384
[    2.028445] hailo 0000:04:00.0: Probing: Force setting max_desc_page_size to 4096 (recommended value is 16384)
[    2.028458] hailo 0000:04:00.0: Probing: Enabled 64 bit dma
[    2.028462] hailo 0000:04:00.0: Probing: Using userspace allocated vdma buffers
[    2.028471] hailo 0000:04:00.0: Disabling ASPM L0s 
[    2.028476] hailo 0000:04:00.0: Successfully disabled ASPM L0s 
[    2.221813] hailo 0000:04:00.0: Firmware was loaded successfully
[    2.248663] hailo 0000:04:00.0: Probing: Added board 1e60-2864, /dev/hailo0

カメラは、rpicam-helloというコマンドで一定時間だけ、ダイアログを表示して動画プレビューが表示されます。コンソールだけでも、以下のようにログが流れるだけですが確認できます。

もしカメラが認識してないと、そのようなエラーが出て終了します。

rpicam-hello -t 1s
[0:01:42.889000210] [3552]  INFO Camera camera_manager.cpp:313 libcamera v0.3.0+65-6ddd79b5
[0:01:42.897255265] [3555]  INFO RPI pisp.cpp:695 libpisp version v1.0.6 b567f0455680 17-06-2024 (10:20:00)
[0:01:42.914751422] [3555]  INFO RPI pisp.cpp:1154 Registered camera /base/axi/pcie@120000/rp1/i2c@88000/imx219@10 to CFE device /dev/media0 and ISP device /dev/media2 using PiSP variant BCM2712_C0
Preview window unavailable
[0:01:42.915331373] [3552]  WARN V4L2 v4l2_pixelformat.cpp:344 Unsupported V4L2 pixel format RPBP
Mode selection for 1640:1232:12:P
    SRGGB10_CSI2P,640x480/0 - Score: 4504.81
    SRGGB10_CSI2P,1640x1232/0 - Score: 1000
    SRGGB10_CSI2P,1920x1080/0 - Score: 1541.48
    SRGGB10_CSI2P,3280x2464/0 - Score: 1718
    SRGGB8,640x480/0 - Score: 5504.81
    SRGGB8,1640x1232/0 - Score: 2000
    SRGGB8,1920x1080/0 - Score: 2541.48
    SRGGB8,3280x2464/0 - Score: 2718
Stream configuration adjusted
[0:01:42.915596116] [3552]  INFO Camera camera.cpp:1183 configuring streams: (0) 1640x1232-YUV420 (1) 1640x1232-BGGR_PISP_COMP1
[0:01:42.915714414] [3555]  INFO RPI pisp.cpp:1450 Sensor: /base/axi/pcie@120000/rp1/i2c@88000/imx219@10 - Selected sensor format: 1640x1232-SBGGR10_1X10 - Selected CFE format: 1640x1232-PC1B
#0 (0.00 fps) exp 33251.00 ag 8.83 dg 1.00
#1 (30.00 fps) exp 33251.00 ag 8.83 dg 1.00
#2 (30.01 fps) exp 33251.00 ag 8.83 dg 1.00
#3 (30.00 fps) exp 33251.00 ag 8.83 dg 1.00#19 (30.00 fps) exp 33251.00 ag 8.83 dg 1.00
#20 (30.01 fps) exp 33251.00 ag 8.83 dg 1.00
#21 (30.01 fps) exp 33251.00 ag 8.83 dg 1.00
#22 (30.00 fps) exp 33251.00 ag 8.83 dg 1.00

デモ用の設定ファイルがgithubにあるので、クローンしてrpicam-helloへパラメータとして入力することで、カメラ映像に対してHailoアクセラレータ経由で各種AI処理できる。

> git clone --depth 1 https://github.com/raspberrypi/rpicam-apps.git ~/rpicam-apps

YOLOv6の物体検知

> rpicam-hello -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov6_inference.json --lores-width 640 --lores-height 640

YOLOv8の物体検知

> rpicam-hello -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640

YOLOv5のセグメンテーション

> rpicam-hello -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov5_segmentation.json --lores-width 640 --lores-height 640 --framerate 20

YOLOv8の姿勢推定

> rpicam-hello -t 0 --post-process-file ~/rpicam-apps/assets/hailo_yolov8_pose.json --lores-width 640 --lores-height 640

Jetson Orin Nanoと比べるとAI性能は落ちるけど、トータルで半額以下?ぐらいで、
そこそこのエッジAIができると考えると、Jetsonよりお手軽感があって悪くはない気がする。
ただラズパイ5は結構発熱するのがネック。

Kakipがどれほど低温で動くかはやっぱり気になるなー。。早く発売してくれ。

Discussion