EulerNPU

NPU 推論合成・シミュレーションスタック

エッジ AI のための推論優先(inference-first)NPU フルスタックです。オペレータグラフ(spec.yaml)を 138 個のオペレータ(17 グループ)で構成し、検証・コンパイルを経て .npuart アーティファクトを生成します。ホスト CPU リファレンス(cpu_ref)、機能 NPU シミュレータ(npu_sim)、Zynq-7000(XC7Z020)・Zynq UltraScale+(ZU3EG/ZU9EG)FPGA で推論を実行し、INT4/INT8 量子化・プロファイリング・キャッシュ圧縮・キャリブレーションまで単一 CLI で行います。チップとモデルを YAML で設計し、シリコンなしで遅延・メモリ・電力を証明します。

Open Source

デモ — Project 3: Embodied Multimodal AI SoC

ヒューマノイド/ロボットブレイン SoC が EulerNPU シミュレータで推論される実際のターミナルデモ

リファレンスチップ Project 3 — Embodied Multimodal AI SoC は、ビジョン + LiDAR + 言語 + 固有受容(proprioceptive)状態を一つの NPU で並列融合し、Diffusion Policy(16-step horizon · 14-DOF)でモーター行動を生成するロボットブレインチップです。138 個のオペレータ全体を単一パイプラインで使用し、INT4 MoE 重みを適用します。デモは 5 段階のサブシステムコンパイルログ → 並列パイプライン実行 → 結果表 → 14 関節の軌道 → FPGA 準備度チェックリストの順に表示し、パイプラインを 2 回実行してビット単位の決定性(bit-exact)を確認します。

ターゲットZynq UltraScale+ ZU9EG FPGA @ 300 MHz
予算遅延 ≤ 150 ms · 電力 ≤ 3 W (INT4)
サブシステムビジョン(ViT) · LiDAR BEV(PointPillar) · 言語(GQA) · 状態(Mamba SSM) · 行動(MoE + Diffusion Policy)
検証cpu_ref ↔ npu_sim 数値一致(L∞ < 1e-4) · ビット単位の決定性

※ Project 3 は 138 個のオペレータカバレッジと FPGA 準備度の検証のための縮小・合成リファレンスモデルです。数値は ZU9EG 予算(≤150 ms / ≤3 W)を基準に表記しています。

コア機能

138 個のオペレータ、10 種の DType、spec.yaml から FPGA 推論まで

138 個のオペレータ (17 グループ、A–Q)

NPU 推論に必要なオペレータを 17 グループに体系化しました。spec 0.5.0 で効率アテンション・ビジョンエンコーダ・ディフュージョン・スペキュレイティブデコーディングのグループが追加されました。

Core MathMatMul, Add, Mul, Div, Sqrt など基本数学演算
ActivationReLU, GELU, SiLU, Sigmoid, Softmax など
NormalizationLayerNorm, RMSNorm, BatchNorm, GroupNorm
Conv/VisionConv2D, DepthwiseConv, Pool, Resize, Patch
Sequence/AttentionScaledDotProduct, MultiHeadAttention, RoPE, ALiBi
Efficient Attention NEWFlashAttention, SlidingWindowAttention, MultiQueryAttention(GQA)
MoE/SparseTopKRouter, ExpertDispatch, LoadBalanceLoss
RecurrentLSTM, GRU, SRU
GraphConcat, Split, Reshape, Transpose, Gather, Scatter
MultimodalCrossAttention, VisionProjection, AudioMel
Vision Encoder NEWPatchEmbed, ClsTokenPrepend, ImageNorm
Diffusion NEWTimestepEmbed, NoiseSample, DDIMStep, CFGScale, FlowMatchStep
Speculative Decoding NEWTokenAcceptance, DraftVerify, PrefixCacheLookup/Store
QuantizationQuantize, Dequantize, FakeQuantize, PackInt4/UnpackInt4
Mamba/SSMSelectiveScan, Discretize, SSMConv
Cache CompressKVCacheCompress, SlidingWindow, H2O
AutonomyPointCloud, BEVProject, TrajectoryPredict

10 種の DType システム

精度と性能の要求に応じて 3 段階のティアに分類されます。

Tier 0 (必須) fp32, int32 — すべてのオペレータで対応
Tier 1 (推奨) fp16, bf16, int8, uint8 — ほとんどのオペレータで対応
Tier 2 (拡張) int16, int4, fp8_e4m3, fp8_e5m2 — 特定のオペレータ

実行バックエンド (4 種)

cpu_ref ホスト NumPy リファレンス(依存なしで即実行)
npu_sim 機能シミュレーション + 実行トレース + オペレータ別サイクル/MAC/遅延推定
zynq_ps Zynq ARM PS 実行
zynq_pl_stub FPGA PL オフロード解析/エミュレーション

FPGA ボードプロファイル

Zynq-7000 XC7Z020, AXI-Lite MMIO トランスポート
Zynq UltraScale+ ZU3EG, ZU9EG (INT4 / 高性能ターゲット)

コンパイルパイプライン

spec.yaml から FPGA 推論までの 4 段階パイプライン

パイプラインの流れ

spec.yaml (オペレータグラフ定義) | v [1] Validator --- オペレータ/dtype/shape 検証、グラフ整合性確認 | v [2] Compiler --- オペレータ融合、メモリレイアウト、スケジューリング | v [3] .npuart --- シリアライズされた実行アーティファクト (オペレータ + 重み + メタデータ) | v [4] Runtime --- CPU リファレンスまたは Zynq FPGA で実行

FPGA デプロイパイプライン

ステップ1 spec.yaml を作成し eulernpu validate で検証
ステップ2 eulernpu compile で .npuart アーティファクトを生成
ステップ3 eulernpu sim でホスト上のサイクル精度シミュレーション
ステップ4 eulernpu board smoke で FPGA ボード接続を確認後 eulernpu run で実行

追加ツール

calibrate量子化キャリブレーションデータ収集
compress-cacheKV キャッシュ圧縮設定の適用
benchmarkレイテンシ/スループットベンチマーク

CLI リファレンス

単一エントリポイント eulernpu — 15 個のサブコマンドで全ワークフローを実行します(--lang ko|en|zh|ja|es 対応)

コマンド 説明
eulernpu infoプラットフォーム、対応オペレータ、dtype 情報を表示
eulernpu validatespec.yaml オペレータグラフを検証 (JSON-Schema + 23 個のセマンティック規則)
eulernpu migrate-spec NEW0.4 → 0.5 スペックの自動マイグレーション
eulernpu compilespec.yaml を .npuart アーティファクトにコンパイル
eulernpu run.npuart アーティファクトを cpu_ref/npu_sim/zynq バックエンドで実行
eulernpu sim機能シミュレーション + サイクル/MAC/レイテンシ推定
eulernpu generate NEW自己回帰トークン生成 (KV キャッシュ)
eulernpu quantize NEWINT8/INT4 重み量子化 (--weight-bits 4)
eulernpu profileオペレータ別実行時間、メモリ使用量のプロファイリング
eulernpu explainPL オフロード + メモリプラン、グラフスケジュールの可視化
eulernpu board smokeFPGA ボード接続および基本動作の確認
eulernpu calibrate量子化キャリブレーションデータの収集および適用
eulernpu benchmarkレイテンシ/スループットベンチマークの実行
eulernpu replay保存された実行トレースを再生
eulernpu compress-cacheKV キャッシュ圧縮設定の適用および検証

設計原則

EulerNPUが従うコア設計理念

宣言的ファースト

YAMLスペックファイルで計算グラフを定義——低レベルコードの記述不要、コンパイラがすべての最適化を処理します。

コンパイル前検証

ケイパビリティマトリクスがコンパイル前に各オペレータのデータ型とハードウェア制約をチェックし、ランタイムエラーを防止します。

シミュレーション先行

FPGAにデプロイする前に、サイクル精度シミュレータで正確性とパフォーマンスを検証します。

チュートリアル

ステップバイステップのガイドでEulerNPUをマスター

チュートリアルは近日公開予定です。

インストールと始め方

EulerNPUをインストールして最初のモデルをコンパイル

インストール

pip install -e ".[dev]"

# 検証してコンパイル
eulernpu validate spec.yaml
eulernpu compile spec.yaml -o model.npuart

要件

Python 3.10+, NumPy

オプション: ONNX インポート、Zynq-7000 / UltraScale+ ボード(FPGA ターゲット)

EulerNPUでNPU推論開発を始めましょう

YAMLスペックからFPGAデプロイまで、単一CLIで。

GitHubで始める お問い合わせ