EulerNPU

FPGA に NPU を手軽に載せるツール — 次のステップは ASIC

YAML で NPU を定義し、実機の FPGA で動作。 スペック一枚で小さな NPU を検証・合成し、Zynq-7000 上で動作させる推論ファースト(inference-first)な NPU フルスタックです。

実機 FPGA(Zynq-7000)で検証された NPU 3 種類。 同じコンパイラで、キーワードスポッティング・産業向け故障診断・小型 LLM(FFN-on-NPU)が QMTECH XC7Z020 ボード上で silicon として実証されました — シミュレーションではありません。

spec → compile → bitstream → 実機 FPGA、単一 CLI で。 138 個のオペレータ(17 グループ)、INT4/INT8 量子化、4 個のバックエンド(cpu_ref・npu_sim・zynq_ps・zynq_pl_stub)、15 個の CLI サブコマンドで、全サイクルを同じ流れで。

3種類
FPGA 検証 NPU
138
オペレータ (17 グループ)
4
バックエンド
15
CLI サブコマンド

FPGA 検証は ASIC の前段階です。 Zynq-7000 上で 3 種類の NPU がすでにシリコン上で動作 — キーワードスポッティング、産業故障診断、小型 LLM 推論。次のステップは同じ EulerNPU コンパイラ出力での ASIC 合成です。

Open Source · FPGA-Verified

実機 FPGA で動く 3 種類の NPU

同じコンパイラ・同じボード(QMTECH XC7Z020、Zynq-7000)—— 異なる 3 つの NPU を合成し実機検証

KWS(キーワードスポッティング)

DS-CNN + 16 層 GRU + FC を INT8 で量子化。フルグラフ NPU IP(kws_npu_top)合成、90 MHz @ DSP 45% / BRAM 24%。

精度11/11(CPU↔NPU 100% 一致)
高速化CPU 比 8.07×(3.17 ms/推論)
ストリーミング200 フレーム 5.166 s · 38.7 inf/s

xsdb 6 段階ブート + UART で 11/11 精度・8.07× 高速化・キーワードごとの信頼度を出力。

CWRU ベアリング故障診断

振動 FFT → 3×Conv1D + MaxPool + GAP + 2×FC INT8。bearing_npu_top IP、90 MHz @ DSP 86% / BRAM 12%。

精度40/40(CPU↔NPU 100% 一致)
高速化CPU 比 11.13×(約 4 ms/推論、252 inf/s)
リアルタイム監視200 ウィンドウ · 再現率 100% · 誤報 0%

Demo 1 — 精度検証。40 サンプルの分類表(クラスごとの CPU/NPU サイクル・11.13× 高速化)。

Demo 2 — リアルタイム監視。200 ウィンドウストリーム(故障クラス・信頼度、再現率 100% · 誤報 0%)。

nanoGPT LLM(FFN-on-NPU)

nanoGPT 10.77M(D=384・6 層、TinyShakespeare)。FFN(fc1 → gelu → fc2)のみ NPU にオフロードし、残りは ARM — XC7Z020 で LLM が動くハイブリッド L2 構成。

検証CPU↔NPU テキスト 5/5 ビット単位一致
リソースDSP 9% · BRAM 2% · LUT 17%(FFN 専用)
意義Zynq-7000 ボードで LLM 推論分割の可能性を実証

Demo 1 — ビット単位一致。5 プロンプト × 16 文字生成 — CPU↔NPU テキスト 5/5 一致検証。

Demo 2 — ライブストリーム。50 文字 ROMEO プロンプト生成 — FFN-on-NPU ハイブリッドのライブ推論。

※ 3 プロジェクトはすべて同一の EulerNPU コンパイラ出力をそのまま合成した実シリコン結果です(シミュレーションではありません)。ボード: QMTECH XC7Z020 CLG484-1(Zynq-7000)、PL クロック 90–100 MHz、ARM Cortex-A9 PS。同じ流れで次のステップは ASIC 合成です。

検証された道

FPGA で実証した後、同じ流れで ASIC へ

完了 ・ 公開
FPGA 検証
KWS ・ 故障診断 ・ LLM
Zynq-7000 実測
長期目標
Sovereign NPU
AI 推論チップ主権化
エッジ ・ オンデバイス

なぜ FPGA から始めるか。 ASIC テープアウト前に同じコンパイラ・同じ spec で実機動作を検証することが、コスト・リスクを最も合理的に下げる経路です。EulerNPU は全体フローを一つの CLI ツールチェーンで支援します。

コア機能

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

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

NPU 推論に必要な全演算を 17 グループに体系化。効率アテンション(FlashAttention・GQA)、ビジョンエンコーダ、MoE/Sparse、Diffusion、Speculative Decoding など最新アーキテクチャのカバレッジを含みます。

▶ 17 グループ全リストを表示
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で始める お問い合わせ