15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5Stack LLM8850 モジュールを Raspberry Pi 5 で動かしてみた(LLM編)

Last updated at Posted at 2025-10-05

Maker Faire Tokyo 2025 の スイッチサイエンス さんのブースで、QLK(急に LLM8850モジュールが 来たので)

M5Stack LLM8850 について

M5Stack LLM8850 は、AXERA社 の AX8850 チップを搭載した組み込み向けのAIアクセラレータモジュールです。

2025/10/04現在、AX8850の商品説明ページは見つからなかったんですが、公式から発表にあたって出ていたニュース記事はありました。

中国語が読めないので、ChatGPTに翻訳・要約してもらった内容はこちら。

算子命令セット+データフローマイクロアーキテクチャ設計により、従来 GPU と比べて 10 倍の能効比(性能/消費電力比)を達成し、AI 計算コストを産業レベルで受け入れ可能な水準に引き下げる

発表された AX8850 チップの特徴は以下の通り:

組み込み構成:8コアの A55 CPU、24 TOPs@INT8 の高算力 NPU
サポート機能:H.264/H.265 エンコード・デコード、64bit LPDDR4x、eMMC v5.1/SPI Flash、2系統 Ethernet、1系統 USB 3.0、2系統 USB 2.0、2系統 HDMI 出力
利点(コア売り点)
  1. 完備した算子命令セット:AI アルゴリズムの進化に対応可能
  2. 高性能異種マルチコアアーキテクチャ+プログラマブルなデータフローマイクロアーキテクチャ
  3. テンソル核(tensor core)での最適化、ベクトル核との組み合わせで Transformer や BEV アルゴリズムをサポート
  4. SDMA(ストリーミング DMA)や異種マルチコア間ハードウェア協調、前後処理のための豊富な CV(コンピュータビジョン)算子
  5. ハードウェア的スケジューリングによるデータ依存性最適化、無駄な消費電力を削減
  6. ソフトウェアスタック/ツールチェーンも成熟しており、モデル展開が迅速で、開発者の適用負荷を下げる

と、ここまで書いて思いましたが、こっちの方がわかりやすいです()

AXERAのNPU(今回のAX8850など)で動作できるモデルはAxModelという形式ですが、変換済みのモデルは公式のものが HuggingFace に上がっています。

セットアップ

ハードウェアの組み立てと、環境設定を行います。

ハードウェアの組み立て

今回用意したハードウェアは以下の通り。

  • M5Stack LLM8850 モジュール
  • Raspberry Pi 5 8GB RAM
  • Raspberry Pi M.2 HAT+
  • Raspberry Pi 5 アクティブクーラー

特に、LLM8850をRaspberry Piに接続するのにM.2 HAT+が必須です。ご注意ください。

組み立て自体は接続していくだけなので特に難しくありません。
私は東京ビッグサイトから新橋に向かうBRTの中で組み立て終わりました。

M.2 HAT+ だけ、付属の貫通ピンヘッダーでかさ増ししないとアクティブクーラーと接触するので気をつけてください。

ストレージ/OSの準備

microSDカードを用意し、PCで Raspberry Pi Imager を使用してOSを書き込みます。
OSは公式の Raspberry Pi OS (64-bit)を選びました。

Screenshot 2025-10-06 at 0.31.02.png

microSDは、ある程度容量があった方がいいです。
量子化されているとはえ、AIのモデルデータを複数ダウンロードするからです。
例えば、比較的軽量な Qwen3-0.6Bでもトータルで2.32GB使用します。4Bだと6GBほど使います。

Screenshot 2025-10-06 at 0.35.59.png

私は、手元に32GBしかなかったので、32GBをとりあえず使いましたが、色々試すのであれば64GB以上の方が安心だと思います。

Raspberry Pi 上の環境設定

基本的に、公式の手順通りに進めれば大丈夫です。

1. パッケージの更新

$ sudo apt update && sudo apt full-upgrade

2. EEPROM のバージョンを確認

$ sudo rpi-eeprom-update
*** UPDATE AVAILABLE ***

Run "sudo rpi-eeprom-update -a" to install this update now.

To configure the bootloader update policy run "sudo raspi-config"

BOOTLOADER: update available
   CURRENT: Mon 23 Sep 13:02:56 UTC 2024 (1727096576)
    LATEST: Thu  8 May 14:13:17 UTC 2025 (1746713597)
   RELEASE: default (/usr/lib/firmware/raspberrypi/bootloader-2712/default)
            Use raspi-config to change the release.

2023 年 12 月 6 日より後のバージョン(Mon 23 Sep 13:02:56 UTC 2024)ですが、Latestも出てから時間経っているので、念の為更新をかけておく。

raspi-config を開き、Advanced Options > Bootloader Version(ブートローダーバージョン)で Latest(最新)を選択し、更新を実行する

Screenshot 2025-10-05 at 9.21.50.png

$ sudo raspi-config
*** CREATED UPDATE /usr/lib/firmware/raspberrypi/bootloader-2712//latest/pieeprom-2025-08-27.bin  ***

   CURRENT: Mon 23 Sep 13:02:56 UTC 2024 (1727096576)
    UPDATE: Wed 27 Aug 19:01:47 UTC 2025 (1756321307)
    BOOTFS: /boot/firmware
'/tmp/tmp.kad0w6Yryi' -> '/boot/firmware/pieeprom.upd'

UPDATING bootloader. This could take up to a minute. Please wait

*** Do not disconnect the power until the update is complete ***

If a problem occurs then the Raspberry Pi Imager may be used to create
a bootloader rescue SD card image which restores the default bootloader image.

flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -w /boot/firmware/pieeprom.upd
Verifying update
VERIFY: SUCCESS
UPDATE SUCCESSFUL

# rpi-eeprom-update を実行して、ファームウェアを最新バージョンに更新します。
$ sudo rpi-eeprom-update -a
*** PREPARING EEPROM UPDATES ***

BOOTLOADER: update available
   CURRENT: Mon 23 Sep 13:02:56 UTC 2024 (1727096576)
    LATEST: Wed 27 Aug 19:01:47 UTC 2025 (1756321307)
   RELEASE: latest (/usr/lib/firmware/raspberrypi/bootloader-2712/latest)
            Use raspi-config to change the release.
   CURRENT: Mon 23 Sep 13:02:56 UTC 2024 (1727096576)
    UPDATE: Wed 27 Aug 19:01:47 UTC 2025 (1756321307)
    BOOTFS: /boot/firmware
'/tmp/tmp.E6AGeeBvln' -> '/boot/firmware/pieeprom.upd'

UPDATING bootloader. This could take up to a minute. Please wait

*** Do not disconnect the power until the update is complete ***

If a problem occurs then the Raspberry Pi Imager may be used to create
a bootloader rescue SD card image which restores the default bootloader image.

flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -w /boot/firmware/pieeprom.upd
Verifying update
VERIFY: SUCCESS

再起動して反映

$ sudo reboot

3. LLM8850の認識確認

PCIバスにつながっているデバイスを確認する

$ lspci
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 30)
0001:01:00.0 Multimedia video controller: Axera Semiconductor Co., Ltd Device 0650 (rev 01)
0002:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 30)
0002:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge

Multimedia video controller: Axera Semiconductor Co., Ltd Device 0650 (rev 01) がLLM8850のことなので、認識できている。

LLM-8850 Card ドライバインストール

ドライバのインストールにはビルドツールが必要なので、インストールしておく。

# ミニマムでは、gcc、make、patch、linux-header-$(uname -r) が必要
$ sudo apt install -y gcc make patch linux-headers-$(uname -r)
gcc はすでに最新バージョン (4:14.2.0-1) です。              
gcc は手動でインストールしたと設定されました。
make はすでに最新バージョン (4.4.1-2) です。
make は手動でインストールしたと設定されました。
patch はすでに最新バージョン (2.8-2) です。
patch は手動でインストールしたと設定されました。
linux-headers-6.12.47+rpt-rpi-2712 はすでに最新バージョン (1:6.12.47-1+rpt1) です。
linux-headers-6.12.47+rpt-rpi-2712 は手動でインストールしたと設定されました。
Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

# 念の為、build-essential も確認
$ sudo apt install -y build-essential
build-essential はすでに最新バージョン (12.12) です。       
Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

aarch64 deb パッケージを取得する。

# パッケージを追加
$ sudo wget -qO /etc/apt/keyrings/StackFlow.gpg https://repo.llm.m5stack.com/m5stack-apt-repo/key/StackFlow.gpg
$ echo 'deb [signed-by=/etc/apt/keyrings/StackFlow.gpg] https://repo.llm.m5stack.com/m5stack-apt-repo axclhost main' | sudo tee /etc/apt/sources.list.d/axclhost.list


# 取得したパッケージでアップデート
$ sudo apt update
ヒット:1 http://deb.debian.org/debian trixie InRelease
ヒット:2 http://deb.debian.org/debian trixie-updates InRelease                                       
ヒット:3 http://deb.debian.org/debian-security trixie-security InRelease                                                           
取得:4 https://repo.llm.m5stack.com/m5stack-apt-repo axclhost InRelease [2,813 B]                                                  
無視:5 https://repo.llm.m5stack.com/m5stack-apt-repo axclhost/main arm64 Packages                                    
取得:5 https://repo.llm.m5stack.com/m5stack-apt-repo axclhost/main arm64 Packages [423 B]
ヒット:6 http://archive.raspberrypi.com/debian trixie InRelease
3,236 B を 1秒 で取得しました (3,893 B/s)
パッケージはすべて最新です。                               
Notice: リポジトリ 'https://repo.llm.m5stack.com/m5stack-apt-repo axclhost InRelease' がアーキテクチャ 'armhf' をサポートしないため設定ファイル 'main/binary-armhf/Packages' の取得をスキップ

追加したパッケージ情報を使用し、LLM8850(Axera)のモジュールをインストールする。

# DKMSをインストールし、LLM8850のモジュールを入れれるようにする
$ sudo apt install dkms
Installing:                                                 
  dkms

提案パッケージ:
  menu

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 60.3 kB
  Space needed: 244 kB / 22.0 GB available

取得:1 http://deb.debian.org/debian trixie/main arm64 dkms all 3.2.0-1 [60.3 kB]
60.3 kB を 0秒 で取得しました (730 kB/s)
以前に未選択のパッケージ dkms を選択しています。
(データベースを読み込んでいます ... 現在 126940 個のファイルとディレクトリがインストールされています。)
.../archives/dkms_3.2.0-1_all.deb を展開する準備をしています ...
dkms (3.2.0-1) を展開しています...
dkms (3.2.0-1) を設定しています ...
Created symlink '/etc/systemd/system/multi-user.target.wants/dkms.service''/usr/lib/systemd/system/dkms.service'.
man-db (2.13.1-1) のトリガを処理しています ...

# LLM8850(Axera)のモジュールをインストールする
pi@llm8850:~ $ sudo apt install axclhost
Installing:                                                 
  axclhost

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 56.0 MB
  Space needed: 0 B / 22.0 GB available

取得:1 https://repo.llm.m5stack.com/m5stack-apt-repo axclhost/main arm64 axclhost all 3.6.4 [56.0 MB]
56.0 MB を 3秒 で取得しました (16.5 MB/s)
以前に未選択のパッケージ axclhost を選択しています。
(データベースを読み込んでいます ... 現在 126968 個のファイルとディレクトリがインストールされています。)
.../axclhost_3.6.4_all.deb を展開する準備をしています ...
axclhost (3.6.4) を展開しています...
axclhost (3.6.4) を設定しています ...
Creating symlink /var/lib/dkms/axclhost/1.0/source -> /usr/src/axclhost-1.0
The kernel is built without module signing facility, modules won't be signed

Building module(s)....... done.
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/axcl_host.ko.xz
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/ax_pcie_host_dev.ko.xz
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/ax_pcie_mmb.ko.xz
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/ax_pcie_msg.ko.xz
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/ax_pcie_net_host.ko.xz
Installing /lib/modules/6.12.47+rpt-rpi-2712/updates/dkms/ax_pcie_p2p_rc.ko.xz
Running depmod... done.
Need manual execute: source /etc/profile

LLM8850(Axera)のデバイス管理ツールを起動し、インストールに問題無いか確認する。

# 環境変数の更新を即時反映する
$ source /etc/profile

# デバイスの管理ツールで確認する
$ axcl-smi
+------------------------------------------------------------------------------------------------+
| AXCL-SMI  V3.6.4_20250822020158                                  Driver  V3.6.4_20250822020158 |
+-----------------------------------------+--------------+---------------------------------------+
| Card  Name                     Firmware | Bus-Id       |                          Memory-Usage |
| Fan   Temp                Pwr:Usage/Cap | CPU      NPU |                             CMM-Usage |
|=========================================+==============+=======================================|
|    0  AX650N                     V3.6.4 | 0001:01:00.0 |                145 MiB /      945 MiB |
|   --   46C                      -- / -- | 1%        0% |                 18 MiB /     7040 MiB |
+-----------------------------------------+--------------+---------------------------------------+

+------------------------------------------------------------------------------------------------+
| Processes:                                                                                     |
| Card      PID  Process Name                                                   NPU Memory Usage |
|================================================================================================|

動作確認

公式のモデルベンチマーク機能を使用して、動作確認を行います。

これは、モデルのベンチマークコマンド axcl_run_model を使用し、 AX8850用

pi@llm8850:~$ wget https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/ax8850_card/yolo11s.axmodel 
--2025-10-05 09:49:00--  https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/ax8850_card/yolo11s.axmodel
m5stack.oss-cn-shenzhen.aliyuncs.com (m5stack.oss-cn-shenzhen.aliyuncs.com) をDNSに問いあわせています... 47.113.74.37
m5stack.oss-cn-shenzhen.aliyuncs.com (m5stack.oss-cn-shenzhen.aliyuncs.com)|47.113.74.37|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 10491152 (10M) [application/octet-stream]
`yolo11s.axmodel' に保存中

yolo11s.axmodel                   100%[============================================================>]  10.00M  13.3MB/s 時間 0.8s     

2025-10-05 09:49:01 (13.3 MB/s) - `yolo11s.axmodel' へ保存完了 [10491152/10491152]

pi@llm8850:~$ axcl_run_model -m yolo11s.axmodel -r 10
   Run AxModel:
         model: yolo11s.axmodel
          type: 3 Core
          vnpu: Disable
        warmup: 1
        repeat: 10
         batch: { auto: 1 }
    axclrt ver: 1.0.0
   pulsar2 ver: 3.2 99cf147d
      tool ver: 0.0.1
      cmm size: 10488066 Bytes
  ------------------------------------------------------
  min =   3.373 ms   max =   3.395 ms   avg =   3.385 ms
  ------------------------------------------------------

ドライバが入ったことでファンコントローラも有効になったのか、ファンの回転音がかなり静かになります。

EE62FA71-CB28-4274-9409-C6A28B418E91_1_102_o.jpeg

追加のセットアップ

モデルの取得にgit lfsが必要なので、インストールしておいてください。

$ sudo apt install git-lfs
Installing:                                                 
  git-lfs

Summary:
  Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 3,387 kB
  Space needed: 12.2 MB / 21.8 GB available

取得:1 http://deb.debian.org/debian trixie/main arm64 git-lfs arm64 3.6.1-1+b5 [3,387 kB]
3,387 kB を 0秒 で取得しました (13.1 MB/s)
以前に未選択のパッケージ git-lfs を選択しています。
(データベースを読み込んでいます ... 現在 127265 個のファイルとディレクトリがインストールされています。)
.../git-lfs_3.6.1-1+b5_arm64.deb を展開する準備をしています ...
git-lfs (3.6.1-1+b5) を展開しています...
git-lfs (3.6.1-1+b5) を設定しています ...
man-db (2.13.1-1) のトリガを処理しています ...

$ git lfs install
Git LFS initialized.

ついでに、念の為Pythonのバージョンも確認しておきます。

$ python --version
Python 3.13.5

3.13なので、まぁ大丈夫でしょう。

LLMモデルの実行

前述の通り AxModelに変換したモデルが動きます。
M5Stackのマニュアルにあるモデル一覧はこちら。

まずは、簡単にLLMモデルを動かしてみます。

Qwen3-0.6B

まずは HuggingFaceからAxModelとTokenizerなど周辺スクリプト一式を取得。

$ git clone https://huggingface.co/AXERA-TECH/Qwen3-0.6B

取得したQwen3-0.6Bディレクトリに入り、ライブラリのインストールとTokenizerサーバの実行を行います。
この後の対話型のスクリプトを実行する際に裏でTokenizerサーバを起動したままにしておかなければならないので、ターミナルを複数立ち上げるか、screenコマンドを使う必要があります。

$ cd Qwen3-0.6B
$ python -m venv qwen
$ source qwen/bin/activate
(qwen) $ pip install transformers jinja2
(qwen) $ python qwen3_tokenizer_uid.py --port 12345
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
Server running at http://0.0.0.0:12345

上記の通り、別ターミナルかscreenで対話型スクリプトを実行します。

$ cd Qwen3-0.6B/
$ chmod +x main_axcl_aarch64 run_qwen3_0.6b_int8_ctx_axcl_aarch64.sh
$ ./run_qwen3_0.6b_int8_ctx_axcl_aarch64.sh 

Screenshot 2025-10-05 at 10.42.27.png

実行したところ、問題なく動きました。いくつか試しましたが、だいたい13〜14トークン/秒ほどのようです。

終わりに

駆け足ですが、公式手順に沿ってセットアップができ、LLMモデルが動くところまで確認できました。
この後はTTSやマルチモーダルモデルも試したいと思いますが、手元に5.1V 3AのACアダプタしかなくて不安なため、5Aのものを入手してから続きはやりたいと思います。

Next:

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?