v0.1.0 · 정식 공개

EulerNPU

FPGA에 NPU를 쉽게 올리는 툴 — 1차 목표는 FPGA 시장, ASIC은 장기 목표

YAML로 NPU를 정의해 실제 FPGA에서 동작. 스펙 한 장으로 작은 NPU를 검증·합성하고 Zynq 계열 FPGA에서 동작시키는 추론 우선(inference-first) NPU 풀스택입니다.

실 FPGA에서 실리콘 검증된 NPU 3종. 같은 컴파일러로 키워드 스포팅 · 산업 결함 진단 · 소형 LLM(FFN-on-NPU)이 실제 보드(QMTECH XC7Z020, Zynq-7000 계열)에서 silicon으로 동작 — 시뮬레이션이 아닙니다.

spec → compile → bitstream → 실 FPGA, 단일 CLI. 145개 연산자(18 그룹), INT4/INT8 양자화, 6개 보드 타겟, 15개 공개 CLI 서브커맨드로 전 사이클을 같은 흐름에서.

145
연산자 (18 그룹)
6
보드 타겟
3종
실리콘 검증 NPU
15
CLI 서브커맨드

1차 목표는 FPGA 시장입니다. Zynq 계열에서 세 종류의 NPU가 이미 실리콘 위에서 동작합니다 — 키워드 스포팅, 산업 결함 진단, 소형 LLM 추론. FPGA 시장 자체가 이미 큰 규모이고, 산업·엣지 응용에서 실측 성능을 낼 수 있는 지점입니다. 같은 컴파일러 출력은 장기적으로 ASIC 타깃으로도 확장 가능합니다.

Open Source · Silicon-Verified

실제 FPGA에서 돌아가는 NPU 3종

같은 컴파일러 · 같은 보드(QMTECH XC7Z020, Zynq-7000) — 서로 다른 NPU 3개를 합성·실측 검증

KWS (키워드 스포팅)

DS-CNN + 16-layer GRU + FC를 INT8로 양자화. 풀그래프 NPU IP(kws_npu_top) 합성, 90 MHz @ DSP 45% / BRAM 24%.

정확도11/11 (CPU↔NPU 100% 일치)
가속8.07× vs CPU (3.17 ms/추론)
스트리밍200프레임 5.166 s · 38.7 inf/s

xsdb 부팅 6단계 + UART로 11/11 정확도 · 8.07× 가속 · 키워드별 신뢰도 출력.

CWRU 베어링 결함 진단

진동 FFT → 3×Conv1D + MaxPool + GAP + 2×FC INT8. bearing_npu_top IP, 90 MHz @ DSP 86% / BRAM 12%.

정확도40/40 (CPU↔NPU 100% 일치)
가속11.13× vs CPU (≈4 ms/추론, 252 inf/s)
실시간 모니터200윈도우 · 리콜 100% · 오경보 0%

Demo 1 — 정확도 검증. 40개 테스트 샘플 분류 표 (클래스별 CPU/NPU 사이클·11.13× 가속).

Demo 2 — 실시간 모니터. 200윈도우 스트림 (결함 클래스·신뢰도, 리콜 100% · 오경보 0%).

nanoGPT LLM (FFN-on-NPU)

nanoGPT 10.77M(D=384·6 layer, TinyShakespeare). FFN(fc1 → gelu → fc2)만 NPU 오프로드, 나머지는 ARM — XC7Z020에서 LLM이 도는 하이브리드 L2 구성.

검증CPU↔NPU 텍스트 5/5 비트 단위 일치
리소스DSP 9% · BRAM 2% · LUT 17% (FFN 전용)
의의Zynq-7000 보드에서 LLM 추론 분할 가능성 실증

Demo 1 — 비트 단위 일치. 5개 프롬프트 × 16자 생성 — CPU↔NPU 텍스트 5/5 일치 검증.

Demo 2 — 라이브 스트림. 50자 ROMEO 프롬프트 생성 — FFN-on-NPU 하이브리드 라이브 추론.

※ 세 프로젝트는 모두 동일한 EulerNPU 컴파일러 출력 그대로 합성한 진짜 실리콘 결과입니다 (시뮬레이션 아님). 보드: QMTECH XC7Z020 CLG484-1 (Zynq-7000), PL 클록 90–100 MHz, ARM Cortex-A9 PS. FPGA 자체가 1차 목표 시장이고, 같은 컴파일러 흐름은 장기적으로 ASIC까지 확장됩니다.

추가 예제 데모 (스펙·시뮬 레벨)

실리콘 검증 3종 위에, 같은 컴파일러로 실험 중인 예제 도메인 4종

다음 예제들은 아직 FPGA에 올려 검증하지 않은 소프트웨어 단계입니다. 동일한 spec.yaml → npu_sim 흐름으로 기능만 확인된 상태이며, silicon 결과가 아니라는 점을 명시합니다.

Edge VLM 검사 (Vision-Language Model)

엣지 카메라 프레임을 소형 VLM으로 실시간 판독 — 이상 검출·분류 후 요약 텍스트 생성. Vision Encoder + Cross Attention + LLM head 그래프로 spec 정의.

Embodied AI SoC (임베디드 AI SoC)

휴머노이드·로봇 팔의 저지연 인지·정책 추론용 SoC 프로파일. Vision Encoder + Multimodal + Policy head 조합, KV 캐시 압축 포함.

ADAS Perception (자율주행 인지)

차량 인지 스택 — 다중 카메라 BEV Projection + PointCloud + Trajectory Predict 연산 그룹(Autonomy)을 활용한 spec 예제.

EulerDrive AX1 (차량 추론 프로파일)

EulerAtlas 차량 도메인과 정합되는 온디바이스 추론 프로파일 — ax1_sim 보드 프로파일로 정책 네트워크 시뮬레이션.

* 위 4개 예제는 컴파일러·시뮬레이터 커버리지를 확인하기 위한 참고 데모입니다. 실 silicon 검증은 위쪽 3종(KWS · 베어링 · nanoGPT)에 한정됩니다.

제품 로드맵

FPGA를 1차 목표 시장으로. 같은 컴파일러 흐름은 장기적으로 ASIC까지.

완료 · 공개
FPGA 실리콘 검증
KWS · 결함진단 · LLM
Zynq-7000 실측
장기 목표
ASIC · Sovereign NPU
동일 컴파일러로 타겟 전환
AI 추론 칩 주권화

왜 FPGA를 1차 목표로 하는가. FPGA 시장 자체가 이미 크고, 결정론적 지연·낮은 전력·현장 재구성이라는 특성 덕분에 산업 자동화·엣지 AI·안전 필수 시스템에서 실제 성능을 낼 수 있는 지점입니다. EulerNPU는 이 시장을 CLI 툴체인 하나로 지원합니다. 같은 컴파일러 흐름은 장기적으로 ASIC 타깃까지 확장 가능하며, 그 경로는 FPGA에서 이미 실측 검증된 위에서 진행됩니다.

핵심 기능

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

145개 연산자 (18개 그룹, A–R)

NPU 추론에 필요한 전 연산을 18개 그룹으로 체계화. 효율 어텐션(FlashAttention·GQA), 비전 인코더, MoE/Sparse, Diffusion, Speculative Decoding 등 최신 아키텍처 커버리지 포함.

▶ 18개 그룹 전체 목록 보기
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 보드 프로파일 (6종)

Zynq-7000 XC7Z020 (silicon-verified, AXI-Lite MMIO)
Zynq UltraScale+ ZU3EG · ZU7EV · ZU9EG (INT4 / 고성능 타겟)
Kria SOM XCK26 / KV260 (엣지 AI 개발 키트)
ax1_sim 차량 온디바이스 추론 프로파일 (시뮬)

컴파일 파이프라인

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에서 시작하기 문의하기