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 上运行推理,并通过单一 CLI 完成 INT4/INT8 量化、性能分析、缓存压缩与校准。用 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 准备度检查清单,并通过运行两次管线确认逐位确定性(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 功能仿真 + 执行 trace + 逐算子周期/MAC/延迟估计
zynq_ps Zynq ARM PS 执行
zynq_pl_stub FPGA PL 卸载分析 / 仿真

FPGA 开发板配置

Zynq-7000 XC7Z020, AXI-Lite MMIO 传输
Zynq UltraScale+ ZU3EG, ZU9EG (INT4 / 高性能目标)

编译管线

从YAML规格到可部署的.npuart文件

spec.yaml → IR → .npuart

声明式YAML规格文件经过验证、IR转换和优化后,编译为.npuart(NPU Archive)格式。

输入 spec.yaml — 声明式计算图定义
验证 算子兼容性、数据类型、形状推断检查
IR 中间表示——图优化、算子融合
输出 .npuart 二进制——可直接在运行时加载

运行时

编译后的.npuart文件可在模拟器或Zynq-7020 FPGA硬件上运行。

模拟器 周期精确模拟,支持性能分析
FPGA Zynq-7020 AXI-Lite MMIO运行时
性能分析 逐层延迟、内存带宽、利用率报告

CLI 参考

单一入口点 eulernpu —— 15 个子命令覆盖完整工作流(支持 --lang ko|en|zh|ja|es

命令 说明
eulernpu info显示平台、支持算子与 dtype 信息
eulernpu validate校验 spec.yaml 算子图(JSON-Schema + 23 条语义规则)
eulernpu migrate-spec NEW0.4 → 0.5 规格自动迁移
eulernpu compile将 spec.yaml 编译为 .npuart 工件
eulernpu run在 cpu_ref/npu_sim/zynq 后端运行 .npuart 工件
eulernpu sim功能仿真 + 周期/MAC/延迟估计
eulernpu generate NEW自回归 token 生成(KV 缓存)
eulernpu quantize NEWINT8/INT4 权重量化(--weight-bits 4
eulernpu profile逐算子执行时间、内存占用分析
eulernpu explainPL 卸载 + 内存规划,图调度可视化
eulernpu board smoke确认 FPGA 开发板连接与基本运行
eulernpu calibrate量化校准数据采集与应用
eulernpu benchmark运行延迟/吞吐量基准测试
eulernpu replay回放已保存的执行 trace
eulernpu compress-cache应用并校验 KV 缓存压缩配置

设计原则

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上开始 联系我们