reComputer RK3576 で DEEPX DX-M1 M.2 アクセラレータを使用する
DEEPX DX-M1 は、3 個の NPU コアとオンボード LPDDR5 メモリを備えた M.2 PCIe AI アクセラレータです。このチュートリアルでは、reComputer RK3576 でカードを検出し、搭載ファームウェアに適合する Runtime をビルドし、Runtime の初期化と NPU の状態を確認します。
このガイドで使用するカードのファームウェアは v1.6.0 で、DX-RT v2.6.0 と組み合わせて使用します。
システム構成
| 項目 | 構成 |
|---|---|
| ホスト | reComputer RK3576 Dev Kit |
| OS | Armbian unofficial 26.05.0-trunk、Debian 12(bookworm) |
| カーネル | 6.1.115-vendor-seeed-rk3576 |
| アクセラレータ | DEEPX DX-M1A M.2、4 GB クラス LPDDR5 |
| PCIe デバイス | 1ff4:0001 |
| ネゴシエートされたリンク | PCIe Gen2 x1 |
| NPU ドライバ | dxrt-driver-dkms 2.4.1-2 |
| カードファームウェア | v1.6.0 |
| Runtime | DEEPX のソースタグからビルドした DX-RT v2.6.0 |
PCIe ドライバをインストールする
DEEPX ソフトウェアダウンロードページから AArch64 Linux 用 DX-All-Suite v2.4.2 をダウンロードし、RK3576 にコピーします。アーカイブを展開して dx-runtime ディレクトリに移動します。
tar -xzf dx-all-suite_v2.4.2.tar.gz
cd dx-all-suite/dx-runtime上記の構成に合うドライバを選択してインストールします。この手順では PCIe ドライバのみをインストールし、カードのファームウェアは変更しません。
ln -sfn 2.4.1 dx_rt_npu_linux_driver/release/latest
./install.sh --target=dx_rt_npu_linux_driver --exclude-fw
sudo reboot再起動後、次のハードウェア確認に進みます。互換性のある DX-RT ユーザー空間ライブラリは、現在のスイートからインストールせず、後の手順で個別にビルドします。
ハードウェアとドライバを確認する
DX-M1 を M.2 PCIe スロットに装着して RK3576 を起動し、PCIe デバイスを確認します。
lspci -nnk -s 01:00.0
ドライバが作成したデバイスノードを確認します。
ls -l /dev/dxrt0
/dev/dxrt0 があれば、PCIe ドライバがアクセラレータを初期化しています。存在しない場合は、DX-RT をビルドまたは実行する前にドライバを修正してください。
互換性のある DX-RT をビルドする
DX-RT v3.3.0 はファームウェア v2.5.2 以降を必要とするため、ファームウェア v1.6.0 のカードを初期化できません。DX-RT v2.6.0 の最低要件はファームウェア v1.5.9 であり、このカードと互換性があります。
ビルドツールをインストールします。
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build python3-dev git正確な DX-RT タグをクローンします。CMake は pybind11 v2.12 を要求するため、先に浅いクローンを作成します。
cd ~
git clone --branch v2.6.0 --depth 1 https://github.com/DEEPX-AI/dx_rt.git
cd dx_rt
git clone --depth 1 --branch v2.12 https://github.com/pybind/pybind11.git extern/pybind11RK3576 の AArch64 CPU 向けに設定してビルドします。
cmake -S . -B build_aarch64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.aarch64.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DPython_EXECUTABLE="$(command -v python3)"
cmake --build build_aarch64 --parallel 4このコマンドはシステムの DX-RT インストールを変更しません。最初の確認では、ビルドディレクトリのバイナリと共有ライブラリを直接使用します。
export LD_LIBRARY_PATH="$HOME/dx_rt/build_aarch64/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
$HOME/dx_rt/build_aarch64/bin/dxrt-cli -s
Runtime サービスを確認する
ビルドしたサービスを起動する前に、互換性のない DX-RT サービスを停止します。次のコマンドは 20 秒後に自動終了し、systemd ユニットをインストールしません。
sudo systemctl stop dxrt
timeout --signal=TERM 20s "$HOME/dx_rt/build_aarch64/bin/dxrtd"初期化に成功すると次のメッセージが表示されます。
[DXRT_SVC][DxrtService] Initialized Devices count=1
[DXRT_SVC][DxrtService] Initialized Scheduler
[DXRT_IPC][DxrtService] Initialized IPC Serverこれらのメッセージが表示されれば、Runtime はドライバを開いて DX-M1 を初期化できています。
NPU の状態を監視する
DX-RT v2.6.0 の dxrt-cli には監視モードがあります。次のコマンドは 1 秒ごとに状態を取得し、3 秒後に終了します。
timeout --signal=INT 3s "$HOME/dx_rt/build_aarch64/bin/dxrt-cli" -m 1
監視画面には、3 個の NPU コアの電圧、クロック、温度、DVFS 状態が表示されます。
Model Zoo をインストールする(任意)
利用可能なモデルを参照するには、展開済みの DX-All-Suite ディレクトリから Model Zoo パッケージと Python 依存関係をインストールします。
sudo apt-get install -y python3-venv
cd ~/dx-all-suite/dx-modelzoo
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
dxmz list
dxmz info resnet50_224x224DXNN モデルは、生成に使用された DX-COM と DX-RT のバージョンに依存します。モデルを実行する前に、DEEPX Model Zoo ページでモデル、Runtime、ファームウェアの互換性を確認してください。このガイドでは DX-RT v2.6.0 とファームウェア v1.6.0 を使用します。
トラブルシューティング
lspciに1ff4:0001がない:電源を切って M.2 モジュールを取り付け直し、M.2 PCIe スロットとボード設定を確認します。/dev/dxrt0がない:dx_dma_pcieドライバのロード状態と対応バージョンを確認します。- ファームウェア
v1.6.0で DX-RT 3.x の初期化に失敗する:検証済みの v2.6.0 を使用するか、正確なモジュール revision に対して DEEPX が提供する移行手順だけを使用します。 dxtopが未定義シンボルまたは互換性のないサービスを報告する:別世代の DX-RT 用です。上記の v2.6.0dxrt-cli -m 1を使用するか、バージョンが一致したツール一式を導入します。