EulerNPU

NPU 추론 합성 및 시뮬레이션 스택

연산자 그래프(spec.yaml)를 123개 연산자(13개 그룹)로 구성하고, 검증 및 컴파일을 거쳐 .npuart 아티팩트를 생성합니다. 호스트 CPU 레퍼런스 런타임 또는 Zynq-7020 FPGA 보드에서 추론을 실행하며, 프로파일링, 캐시 압축, 캘리브레이션까지 단일 CLI로 수행합니다.

Open Source

핵심 기능

123개 연산자, 10종 DType, spec.yaml에서 FPGA 추론까지

123개 연산자 (13개 그룹)

NPU 추론에 필요한 연산자를 13개 그룹으로 체계화했습니다.

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
MoE/SparseTopKRouter, ExpertDispatch, LoadBalanceLoss
RecurrentLSTM, GRU, SRU
GraphConcat, Split, Reshape, Transpose, Gather, Scatter
MultimodalCrossAttention, VisionProjection, AudioMel
QuantizationQuantize, Dequantize, FakeQuantize
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 — 특정 연산자

컴파일 타겟

CPU Reference 호스트 NumPy 런타임 (의존성 없이 즉시 실행)
Zynq-7020 XC7Z020 FPGA, AXI-Lite MMIO 트랜스포트

컴파일 파이프라인

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 — 12개 서브커맨드로 전체 워크플로우를 수행합니다

명령어 설명
eulernpu info플랫폼, 지원 연산자, dtype 정보 표시
eulernpu validatespec.yaml 연산자 그래프 검증 (dtype, shape, 연결)
eulernpu compilespec.yaml을 .npuart 아티팩트로 컴파일
eulernpu run.npuart 아티팩트를 CPU 레퍼런스 또는 FPGA에서 실행
eulernpu sim사이클 정확도 시뮬레이션 (레이턴시 예측)
eulernpu profile연산자별 실행 시간, 메모리 사용량 프로파일링
eulernpu explain연산자 그래프 구조, 의존성, 스케줄 시각화
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.12+, NumPy

Zynq-7020 보드 (FPGA 타겟)

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

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

GitHub에서 시작하기 문의하기