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人形机器人 / 机器人大脑 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 推理
把 NPU 推理所需的算子体系化为 17 组。spec 0.5.0 新增了高效注意力、视觉编码器、扩散、推测解码等算子组。
| Core Math | MatMul, Add, Mul, Div, Sqrt 等基础数学运算 |
|---|---|
| Activation | ReLU, GELU, SiLU, Sigmoid, Softmax 等 |
| Normalization | LayerNorm, RMSNorm, BatchNorm, GroupNorm |
| Conv/Vision | Conv2D, DepthwiseConv, Pool, Resize, Patch |
| Sequence/Attention | ScaledDotProduct, MultiHeadAttention, RoPE, ALiBi |
| Efficient Attention NEW | FlashAttention, SlidingWindowAttention, MultiQueryAttention(GQA) |
| MoE/Sparse | TopKRouter, ExpertDispatch, LoadBalanceLoss |
| Recurrent | LSTM, GRU, SRU |
| Graph | Concat, Split, Reshape, Transpose, Gather, Scatter |
| Multimodal | CrossAttention, VisionProjection, AudioMel |
| Vision Encoder NEW | PatchEmbed, ClsTokenPrepend, ImageNorm |
| Diffusion NEW | TimestepEmbed, NoiseSample, DDIMStep, CFGScale, FlowMatchStep |
| Speculative Decoding NEW | TokenAcceptance, DraftVerify, PrefixCacheLookup/Store |
| Quantization | Quantize, Dequantize, FakeQuantize, PackInt4/UnpackInt4 |
| Mamba/SSM | SelectiveScan, Discretize, SSMConv |
| Cache Compress | KVCacheCompress, SlidingWindow, H2O |
| Autonomy | PointCloud, BEVProject, TrajectoryPredict |
按精度与性能需求分为 3 个层级。
| Tier 0 (必需) | fp32, int32 —— 所有算子均支持 |
|---|---|
| Tier 1 (推荐) | fp16, bf16, int8, uint8 —— 大多数算子支持 |
| Tier 2 (扩展) | int16, int4, fp8_e4m3, fp8_e5m2 —— 特定算子 |
| cpu_ref | 主机 NumPy 参考实现(无依赖即可立即运行) |
|---|---|
| npu_sim | 功能仿真 + 执行 trace + 逐算子周期/MAC/延迟估计 |
| zynq_ps | Zynq ARM PS 执行 |
| zynq_pl_stub | FPGA PL 卸载分析 / 仿真 |
| Zynq-7000 | XC7Z020, AXI-Lite MMIO 传输 |
|---|---|
| Zynq UltraScale+ | ZU3EG, ZU9EG (INT4 / 高性能目标) |
从YAML规格到可部署的.npuart文件
声明式YAML规格文件经过验证、IR转换和优化后,编译为.npuart(NPU Archive)格式。
| 输入 | spec.yaml — 声明式计算图定义 |
|---|---|
| 验证 | 算子兼容性、数据类型、形状推断检查 |
| IR | 中间表示——图优化、算子融合 |
| 输出 | .npuart 二进制——可直接在运行时加载 |
编译后的.npuart文件可在模拟器或Zynq-7020 FPGA硬件上运行。
| 模拟器 | 周期精确模拟,支持性能分析 |
|---|---|
| FPGA | Zynq-7020 AXI-Lite MMIO运行时 |
| 性能分析 | 逐层延迟、内存带宽、利用率报告 |
单一入口点 eulernpu —— 15 个子命令覆盖完整工作流(支持 --lang ko|en|zh|ja|es)
| 命令 | 说明 |
|---|---|
eulernpu info | 显示平台、支持算子与 dtype 信息 |
eulernpu validate | 校验 spec.yaml 算子图(JSON-Schema + 23 条语义规则) |
eulernpu migrate-spec NEW | 0.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 NEW | INT8/INT4 权重量化(--weight-bits 4) |
eulernpu profile | 逐算子执行时间、内存占用分析 |
eulernpu explain | PL 卸载 + 内存规划,图调度可视化 |
eulernpu board smoke | 确认 FPGA 开发板连接与基本运行 |
eulernpu calibrate | 量化校准数据采集与应用 |
eulernpu benchmark | 运行延迟/吞吐量基准测试 |
eulernpu replay | 回放已保存的执行 trace |
eulernpu compress-cache | 应用并校验 KV 缓存压缩配置 |
EulerNPU遵循的核心设计理念
YAML规格文件定义计算图——无需编写底层代码,编译器处理所有优化。
能力矩阵在编译前检查每个算子的数据类型和硬件约束,避免运行时错误。
在部署到FPGA之前,通过周期精确模拟器验证正确性和性能。
通过分步指南快速掌握EulerNPU
教程即将公开。
安装EulerNPU并编译您的第一个模型
Python 3.10+, NumPy
可选:ONNX 导入、Zynq-7000 / UltraScale+ 开发板(FPGA 目标)