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휴머노이드/로봇 브레인 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 | 기능 시뮬레이션 + 실행 트레이스 + 연산자별 사이클/MAC/지연 추정 |
| zynq_ps | Zynq ARM PS 실행 |
| zynq_pl_stub | FPGA PL 오프로드 분석/에뮬레이션 |
| Zynq-7000 | XC7Z020, AXI-Lite MMIO 트랜스포트 |
|---|---|
| Zynq UltraScale+ | ZU3EG, ZU9EG (INT4 / 고성능 타겟) |
spec.yaml에서 FPGA 추론까지 4단계 파이프라인
| 1단계 | spec.yaml 작성 및 eulernpu validate로 검증 |
|---|---|
| 2단계 | eulernpu compile로 .npuart 아티팩트 생성 |
| 3단계 | eulernpu sim으로 호스트에서 사이클 정확도 시뮬레이션 |
| 4단계 | eulernpu board smoke로 FPGA 보드 연결 확인 후 eulernpu run으로 실행 |
| calibrate | 양자화 캘리브레이션 데이터 수집 |
|---|---|
| compress-cache | KV 캐시 압축 설정 적용 |
| benchmark | 레이턴시/처리량 벤치마크 |
단일 진입점 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 | .npuart 아티팩트를 cpu_ref/npu_sim/zynq 백엔드에서 실행 |
eulernpu sim | 기능 시뮬레이션 + 사이클/MAC/레이턴시 추정 |
eulernpu generate NEW | 오토리그레시브 토큰 생성 (KV 캐시) |
eulernpu quantize NEW | INT8/INT4 가중치 양자화 (--weight-bits 4) |
eulernpu profile | 연산자별 실행 시간, 메모리 사용량 프로파일링 |
eulernpu explain | PL 오프로드 + 메모리 플랜, 그래프 스케줄 시각화 |
eulernpu board smoke | FPGA 보드 연결 및 기본 동작 확인 |
eulernpu calibrate | 양자화 캘리브레이션 데이터 수집 및 적용 |
eulernpu benchmark | 레이턴시/처리량 벤치마크 실행 |
eulernpu replay | 저장된 실행 트레이스를 재생 |
eulernpu compress-cache | KV 캐시 압축 설정 적용 및 검증 |
EulerNPU의 8가지 핵심 설계 철학
| Inference-first | 학습이 아닌 추론 실행에 최적화된 연산자 세트 |
|---|---|
| Operator-first | 연산자가 1급 시민 — 모든 기능이 연산자 중심 |
| Spec-driven | YAML 선언형 스펙으로 그래프를 정의, 코드가 아닌 데이터 |
| Compile-once | 한 번 컴파일, 여러 타겟(CPU/FPGA)에서 실행 |
| Artifact-centric | .npuart 단일 파일로 재현 가능한 배포 |
|---|---|
| Simulation-first | 실제 하드웨어 전에 호스트에서 완전 검증 |
| DType-aware | 티어 기반 dtype 시스템으로 정밀도/성능 트레이드오프 명시 |
| CLI-native | 모든 워크플로우가 CLI 서브커맨드로 자동화 가능 |
단계별 가이드로 EulerNPU를 빠르게 익히세요
튜토리얼은 공개 예정입니다.
EulerNPU를 설치하고 첫 번째 연산자 그래프를 실행하세요
Python 3.10+, NumPy
선택: ONNX 임포트, Zynq-7000 / UltraScale+ 보드 (FPGA 타겟)