EulerNPU

Pila de Sintesis y Simulacion de Inferencia NPU

Una pila NPU inference-first para IA en el edge. Compone el grafo de operadores (spec.yaml) con 138 operadores (17 grupos), lo valida y compila, y genera un artefacto .npuart. Ejecuta la inferencia en una referencia CPU del host (cpu_ref), un simulador funcional de NPU (npu_sim) y FPGAs Zynq-7000 (XC7Z020) y Zynq UltraScale+ (ZU3EG/ZU9EG), y realiza cuantizacion INT4/INT8, perfilado, compresion de cache y calibracion desde una sola CLI. Disena el chip y el modelo en YAML y prueba la latencia, la memoria y el consumo sin silicio.

Open Source

Demo — Project 3: Embodied Multimodal AI SoC

Demo real en terminal: un SoC cerebro de humanoide/robot ejecutando inferencia en el simulador de EulerNPU

El chip de referencia Project 3 — Embodied Multimodal AI SoC es un chip cerebro de robot que fusiona en paralelo vision + LiDAR + lenguaje + estado propioceptivo en una sola NPU y genera acciones motoras mediante una Diffusion Policy (16-step horizon · 14-DOF). Usa los 138 operadores en un unico pipeline y aplica pesos MoE en INT4. La demo muestra en orden el log de compilacion de los 5 subsistemas → la ejecucion paralela del pipeline → la tabla de resultados → la trayectoria de las 14 articulaciones → la lista de verificacion de preparacion para FPGA, y confirma el determinismo bit-exact ejecutando el pipeline dos veces.

TargetFPGA Zynq UltraScale+ ZU9EG @ 300 MHz
PresupuestoLatencia ≤ 150 ms · Consumo ≤ 3 W (INT4)
SubsistemasVision(ViT) · LiDAR BEV(PointPillar) · Lenguaje(GQA) · Estado(Mamba SSM) · Accion(MoE + Diffusion Policy)
VerificacionCoincidencia numerica cpu_ref ↔ npu_sim (L∞ < 1e-4) · determinismo bit-exact

※ Project 3 es un modelo de referencia reducido/sintetico para validar la cobertura de los 138 operadores y la preparacion para FPGA. Las cifras se expresan segun el presupuesto del ZU9EG (≤150 ms / ≤3 W).

138 Operadores & 10 Tipos de Datos

138 operadores, 10 DType, desde spec.yaml hasta la inferencia en FPGA

138 operadores (17 grupos, A–Q)

Los operadores necesarios para la inferencia NPU estan organizados en 17 grupos. La spec 0.5.0 anadio los grupos de Efficient Attention, Vision Encoder, Diffusion y Speculative Decoding.

Core MathMatMul, Add, Mul, Div, Sqrt y otras operaciones matematicas basicas
ActivationReLU, GELU, SiLU, Sigmoid, Softmax, etc.
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

Sistema de 10 DType

Se clasifican en 3 niveles segun los requisitos de precision y rendimiento.

Tier 0 (obligatorio) fp32, int32 — soportados en todos los operadores
Tier 1 (recomendado) fp16, bf16, int8, uint8 — soportados en la mayoria de operadores
Tier 2 (extendido) int16, int4, fp8_e4m3, fp8_e5m2 — operadores especificos

Backends de ejecucion (4)

cpu_ref Referencia NumPy del host (ejecucion inmediata sin dependencias)
npu_sim Simulacion funcional + traza de ejecucion + estimacion de ciclos/MAC/latencia por operador
zynq_ps Ejecucion en el ARM PS de Zynq
zynq_pl_stub Analisis/emulacion del offload a la PL del FPGA

Perfiles de placa FPGA

Zynq-7000 XC7Z020, transporte AXI-Lite MMIO
Zynq UltraScale+ ZU3EG, ZU9EG (target INT4 / alto rendimiento)

Pipeline de Compilacion

Desde la especificacion YAML hasta el archivo .npuart desplegable

spec.yaml → IR → .npuart

El archivo de especificacion YAML declarativo se valida, transforma a IR y optimiza antes de compilarse al formato .npuart (NPU Archive).

Entrada spec.yaml — definicion declarativa del grafo computacional
Validacion Compatibilidad de operadores, tipos de datos, inferencia de formas
IR Representacion intermedia — optimizacion de grafos, fusion de operadores
Salida Binario .npuart — cargable directamente en el runtime

Runtime

Los archivos .npuart compilados se pueden ejecutar en el simulador o en hardware FPGA Zynq-7020.

Simulador Simulacion con precision de ciclo, soporte de analisis de rendimiento
FPGA Runtime Zynq-7020 AXI-Lite MMIO
Perfilado Latencia por capa, ancho de banda de memoria, reporte de utilizacion

Referencia CLI

Unico punto de entrada eulernpu — 15 subcomandos cubren todo el flujo de trabajo (con soporte --lang ko|en|zh|ja|es)

Comando Descripcion
eulernpu infoMuestra la plataforma, los operadores soportados y la informacion de dtype
eulernpu validateValida el grafo de operadores de spec.yaml (JSON-Schema + 23 reglas semanticas)
eulernpu migrate-spec NEWMigracion automatica de specs 0.4 → 0.5
eulernpu compileCompila spec.yaml a un artefacto .npuart
eulernpu runEjecuta el artefacto .npuart en los backends cpu_ref/npu_sim/zynq
eulernpu simSimulacion funcional + estimacion de ciclos/MAC/latencia
eulernpu generate NEWGeneracion autorregresiva de tokens (KV cache)
eulernpu quantize NEWCuantizacion de pesos INT8/INT4 (--weight-bits 4)
eulernpu profilePerfilado del tiempo de ejecucion y uso de memoria por operador
eulernpu explainOffload a PL + plan de memoria, visualizacion del schedule del grafo
eulernpu board smokeVerifica la conexion de la placa FPGA y el funcionamiento basico
eulernpu calibrateRecoleccion y aplicacion de datos de calibracion para cuantizacion
eulernpu benchmarkEjecuta benchmarks de latencia/throughput
eulernpu replayReproduce una traza de ejecucion guardada
eulernpu compress-cacheAplica y valida la configuracion de compresion de KV cache

Principios de Diseno

Filosofia central de diseno de EulerNPU

Declarativo Primero

Archivos de especificacion YAML definen el grafo computacional — sin necesidad de codigo de bajo nivel, el compilador maneja todas las optimizaciones.

Validacion Pre-Compilacion

La matriz de capacidades verifica tipos de datos y restricciones de hardware de cada operador antes de compilar, previniendo errores en tiempo de ejecucion.

Simulacion Primero

Verifique la correctitud y el rendimiento con el simulador de precision de ciclo antes de desplegar en FPGA.

Tutoriales

Aprenda EulerNPU rapidamente con guias paso a paso

Tutoriales proximamente.

Instalacion y Primeros Pasos

Instale EulerNPU y compile su primer modelo

Instalacion

pip install -e ".[dev]"

# Validar y compilar
eulernpu validate spec.yaml
eulernpu compile spec.yaml -o model.npuart

Requisitos

Python 3.10+, NumPy

Opcional: importacion ONNX, placas Zynq-7000 / UltraScale+ (target FPGA)

Comience el desarrollo de inferencia NPU con EulerNPU

Desde especificacion YAML hasta despliegue FPGA, con una sola CLI.

Comenzar en GitHub Contactenos