NPU 추론 합성 및 시뮬레이션 스택
연산자 그래프(spec.yaml)를 123개 연산자(13개 그룹)로 구성하고, 검증 및 컴파일을 거쳐 .npuart 아티팩트를 생성합니다. 호스트 CPU 레퍼런스 런타임 또는 Zynq-7020 FPGA 보드에서 추론을 실행하며, 프로파일링, 캐시 압축, 캘리브레이션까지 단일 CLI로 수행합니다.
Open Source123개 연산자, 10종 DType, spec.yaml에서 FPGA 추론까지
NPU 추론에 필요한 연산자를 13개 그룹으로 체계화했습니다.
| 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 |
| MoE/Sparse | TopKRouter, ExpertDispatch, LoadBalanceLoss |
| Recurrent | LSTM, GRU, SRU |
| Graph | Concat, Split, Reshape, Transpose, Gather, Scatter |
| Multimodal | CrossAttention, VisionProjection, AudioMel |
| Quantization | Quantize, Dequantize, FakeQuantize |
| 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 Reference | 호스트 NumPy 런타임 (의존성 없이 즉시 실행) |
|---|---|
| Zynq-7020 | XC7Z020 FPGA, AXI-Lite MMIO 트랜스포트 |
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 — 12개 서브커맨드로 전체 워크플로우를 수행합니다
| 명령어 | 설명 |
|---|---|
eulernpu info | 플랫폼, 지원 연산자, dtype 정보 표시 |
eulernpu validate | spec.yaml 연산자 그래프 검증 (dtype, shape, 연결) |
eulernpu compile | spec.yaml을 .npuart 아티팩트로 컴파일 |
eulernpu run | .npuart 아티팩트를 CPU 레퍼런스 또는 FPGA에서 실행 |
eulernpu sim | 사이클 정확도 시뮬레이션 (레이턴시 예측) |
eulernpu profile | 연산자별 실행 시간, 메모리 사용량 프로파일링 |
eulernpu explain | 연산자 그래프 구조, 의존성, 스케줄 시각화 |
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.12+, NumPy
Zynq-7020 보드 (FPGA 타겟)