독자적인 추론 라이브러리 없이 RK3588 NPU 런타임 구축: Qwen3.5-4B에서 ~10 tok/s 달성 (벤더 SDK 대비 약 2배 빠름)
I built an RK3588 NPU runtime without any proprietary inference libraries: Qwen3.5-4B at ~10 tok/s, ~2x faster than vendor SDK.
핵심 요약
Rockchip RK3588 NPU에서 독자적인 라이브러리 없이 LLM 추론을 가속화하는 오픈소스 엔진이 공개되었습니다.
- 오픈소스 엔진 — 벤더의 폐쇄형 라이브러리 없이 Rust와 C++로 직접 구현됨
- 성능 향상 — 벤더 SDK 대비 Prefill은 2.5배, Decode는 2배 가까운 속도 향상
- 다양한 기능 — OpenAI 호환 API, 스트리밍, 툴 콜링 및 이미지 입력 지원
- 모델 호환성 — Qwen3.5-4B, Granite-4.2-3B, MiniCPM5-2B 등 검증된 체크포인트 제공
RK3588 보드 가지고 있으면, NPU 제대로 써먹을 수 있는 방법 하나 알려줌.
내가 open_rknpu2_lm_infer를 만들었는데, 이게 Rockchip RK3588 NPU용 로컬 LLM 추론 엔진임.
Rockchip에서 제공하는 그 폐쇄적인 유저스페이스 추론 라이브러리 없이도 잘 돌아감. 상단부는 Rust로 짰고, NPU 연산자는 C++로 코딩했음. 블랙박스 같은 거 없으니까 호스트 추론 코드랑 NPU 연산자 실행부 직접 읽고, 수정하고, 마음대로 뜯어고칠 수 있음.
이제 이미지 입력이랑 선택적 MTP 추론 가속(speculative decoding)을 지원하는 Qwen3.5-4B도 돌아감. 게다가 존나 빠름!
Github: https://github.com/happyme531/open_rknpu2_lm_infer
- RKLLM 1.3.1이랑 간단 비교
| Qwen3.5-4B test | RKLLM 1.3.1 | open_rknpu2_lm_infer MTP1 |
|---|---|---|
| Prefill, 512-token prompt | 58.35 tok/s | 147.83 tok/s |
| Prefill, 3,800-token prompt | 54.03 tok/s | 139.92 tok/s |
| Decode after 512 tokens | 5.54 tok/s | 10.61 tok/s |
| Decode after 3,800 tokens | 4.57 tok/s | 9.90 tok/s |
현재 지원 기능:
-
터미널 채팅이나 OpenAI 호환 API 지원 (스트리밍, 툴 콜링, 프리픽스 캐싱 포함)
-
텍스트 추론과 함께 Qwen3.5-4B 이미지 입력 지원
-
Qwen3-4B, Qwen3.5-4B, Granite-4.2-3B, MiniCPM5-2B 체크포인트 검증 완료
-
ARM64 리눅스용 빌드 바이너리 및 양자화 모델 링크 제공
추가 예정 기능:
-
DFlash 및 DSpark 추론 가속
-
전문가 프리페칭(expert prefetching)이 적용된 MiniCPM-V 4.7 35a3
RK3588 보드 쓰는 형들, 보드랑 램 구성별로 결과가 어떻게 나오는지 비교해보고 싶음. 본인 보드 정보, 드라이버 버전, 모델, 속도 같은 거 공유 좀 해줘. 문제 생기면 이슈 열어주고.
써보고 괜찮으면 GitHub 스타 하나씩 박아주라!

