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)を選びました。
microSDは、ある程度容量があった方がいいです。
量子化されているとはえ、AIのモデルデータを複数ダウンロードするからです。
例えば、比較的軽量な Qwen3-0.6Bでもトータルで2.32GB使用します。4Bだと6GBほど使います。
私は、手元に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(最新)を選択し、更新を実行する
$ 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
------------------------------------------------------
ドライバが入ったことでファンコントローラも有効になったのか、ファンの回転音がかなり静かになります。
追加のセットアップ
モデルの取得に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
実行したところ、問題なく動きました。いくつか試しましたが、だいたい13〜14トークン/秒ほどのようです。
終わりに
駆け足ですが、公式手順に沿ってセットアップができ、LLMモデルが動くところまで確認できました。
この後はTTSやマルチモーダルモデルも試したいと思いますが、手元に5.1V 3AのACアダプタしかなくて不安なため、5Aのものを入手してから続きはやりたいと思います。
Next: