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 준비도 체크리스트를 순서대로 보여주고, 파이프라인을 두 번 실행해 비트 단위 결정론(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-7020 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의 8가지 핵심 설계 철학

Inference-first학습이 아닌 추론 실행에 최적화된 연산자 세트
Operator-first연산자가 1급 시민 — 모든 기능이 연산자 중심
Spec-drivenYAML 선언형 스펙으로 그래프를 정의, 코드가 아닌 데이터
Compile-once한 번 컴파일, 여러 타겟(CPU/FPGA)에서 실행
Artifact-centric.npuart 단일 파일로 재현 가능한 배포
Simulation-first실제 하드웨어 전에 호스트에서 완전 검증
DType-aware티어 기반 dtype 시스템으로 정밀도/성능 트레이드오프 명시
CLI-native모든 워크플로우가 CLI 서브커맨드로 자동화 가능

튜토리얼

단계별 가이드로 EulerNPU를 빠르게 익히세요

튜토리얼은 공개 예정입니다.

설치 및 시작하기

EulerNPU를 설치하고 첫 번째 연산자 그래프를 실행하세요

설치

pip install -e ".[dev]"

# 첫 번째 그래프 실행
eulernpu validate examples/tiny_mlp/graph.json
eulernpu compile examples/tiny_mlp/graph.json -o tiny.npuart
eulernpu run tiny.npuart

요구 사항

Python 3.10+, NumPy

선택: ONNX 임포트, Zynq-7000 / UltraScale+ 보드 (FPGA 타겟)

EulerNPU로 NPU 추론 파이프라인을 시작하세요

연산자 그래프에서 FPGA 추론까지, 단일 CLI로.

GitHub에서 시작하기 문의하기