소비자용 하드웨어에서 744B 파라미터 AI 모델을 스트리밍하는 CUDA 엔진을 구축했습니다
요약
WISP는 MoE 모델의 전문가 가중치를 SSD에서 스트리밍하여 소비자용 하드웨어에서도 대규모 AI 모델을 실행할 수 있게 하는 CUDA 가속 엔진입니다. 비동기 파이프라인과 압축된 MLA 어텐션을 통해 메모리 한계를 극복하고 높은 처리량을 제공합니다.
핵심 포인트
- MoE 모델의 특성을 활용해 필요한 전문가 가중치만 실시간 스트리밍
- Double-Buffer 비동기 파이프라인으로 데이터 로딩과 계산 시간 중첩
- Absorbed MLA 구현을 통해 KV 캐시 사용량을 획기적으로 절감
- 투기적 디코딩(Speculative Decoding) 적용으로 유효 처리량 2.2~2.8배 향상
- 소비자용 RAM(25GB) 환경에서 744B 파라미터 모델 실행 가능
WISP — 실행될 수 없는 것을 스트리밍하다
지난주 JustVugg가 Colibrì를 공개했습니다. 이는 디스크에서 전문가 가중치 (expert weights)를 스트리밍함으로써 744B 파라미터 모델이 25GB의 소비자용 RAM에서 실행될 수 있음을 증명한 2,400줄의 순수 C 엔진입니다.
그것은 저에게 큰 충격을 주었습니다. 그래서 저는 그 개념을 바탕으로 무언가를 만들었습니다.
이것이 바로 WISP입니다.
문제점
세계에서 가장 큰 오픈 소스 AI 모델들 — GLM-5.2 (744B), DeepSeek-V3 (671B), Kimi K3 (2.8T) — 은 실행을 위해 데이터 센터 하드웨어를 필요로 합니다. 이를 로컬에서 실행하려는 대부분의 사람들은 즉시 벽에 부딪힙니다.
표준적인 접근 방식들은 모두 동일한 트레이드오프 (tradeoff)를 가집니다: 모델이 들어갈 때까지 공격적으로 양자화 (quantize) 하거나, 아니면 실행하지 않거나.
두 옵션 모두 접근성을 위해 지능을 희생합니다.
통찰 (Credit: JustVugg / Colibrì)
MoE (Mixture-of-Experts, 전문가 혼합) 모델은 모든 토큰에 대해 모든 파라미터를 활성화하지 않습니다. GLM-5.2는 토큰당 약 5.4%를 활성화합니다. Kimi K3는 약 1.8%를 활성화합니다.
이는 모델 전체를 RAM에 담을 필요가 없음을 의미합니다. 단지 적절한 전문가들을 충분히 빠르게 스트리밍하기만 하면 됩니다.
토큰 도착
↓
모델 자체의 라우터 (router)가 활성화할 전문가를 선택
↓
먼저 VRAM 확인 → 캐시되어 있다면 즉시 실행
↓
그 다음 RAM → 캐시되어 있다면 빠르게 실행
↓
그 다음 NVMe SSD → 콜드 (cold) 상태라면 스트리밍
↓
LRU 캐시가 자주 사용되는 전문가를 자동으로 상위 계층으로 승격
한 도메인에서 1015분 정도 지나면, 캐시는 별도의 설정 없이도 8592%의 히트율 (hit rate)로 스스로 조직화됩니다. 완전히 자동입니다.
WISP가 추가로 제공하는 것
Colibrì는 순수 C를 사용하여 하나의 모델 (GLM-5.2)에 대한 개념 증명을 완료했습니다.
WISP는 이를 완전한 CUDA 가속과 함께 모든 주요 MoE 모델로 확장합니다:
흡수된 MLA 어텐션 (Absorbed MLA Attention)
GLM-5.2와 DeepSeek는 Multi-head Latent Attention을 사용합니다. WISP는 확장된 K, V 텐서 대신 압축된 c_kv를 저장하는 진정한 흡수된 MLA (absorbed MLA)를 구현합니다.
결과: 약 5MB 대신 토큰당 ~70KB의 KV 캐시 (KV cache). 이것이 RAM에서 1M 토큰 컨텍스트를 가능하게 만드는 핵심입니다.
더블 버퍼 비동기 파이프라인 (Double-Buffer Async Pipeline)
GPU가 토큰 N을 계산하는 동안 (2-8ms), C 엔진은 SSD에서 토큰 N+1의 예측된 전문가 (experts)를 고정된 RAM (pinned RAM)으로 로드합니다 (0.1-0.3ms). 전송 과정은 계산 시간 내에 완전히 숨겨집니다. GPU는 결코 기다리지 않습니다. GPUDirect Storage는 필요하지 않습니다.
동일 계열 투기적 디코딩 (Same-Family Speculative Decoding)
동일한 계열의 소형 모델이 3개의 토큰을 동시에 초안(draft)으로 작성합니다. 메인 모델은 단 한 번의 병렬 순전파 (forward pass)를 통해 3개 모두를 검증합니다. 39-55%의 수락률 (acceptance rate)에서, 이는 품질 저하 없이 2.2-2.8배의 유효 처리량 (effective throughput)을 제공합니다 (Leviathan et al. 2023).
모든 것의 자동 설정 (Auto-Config Everything)
WISP는 첫 실행 시 하드웨어를 프로파일링하고 최적의 VRAM/RAM/SSD 분할을 자동으로 계산합니다. 심지어 모니터가 GPU에 연결되어 있는지 아니면 메인보드에 연결되어 있는지를 감지하여 그에 따라 VRAM을 예약합니다.
스택 (The Stack)
Python → 오케스트레이션 (orchestration) (다운로드, 변환, 구성)
C → 핫 패스 (hot path) (토큰당 64-1504개의 전문가 페치 (expert fetches))
CUDA → 수학 연산 (math) (어텐션 (attention), 라우팅 (routing), FFN, 투기 (speculation))
세 개의 레이어. 각각 하나의 작업.
지원 목록
| 모델 | 파라미터 (Parameters) | 토큰당 활성 (Active/token) | 상태 |
|---|---|---|---|
| GLM-5.2 | 744B | 40B | ✅ 준비 완료 |
| ... |
실제 벤치마크 — RTX 5070에서 Mixtral-8x7B 실행
검증 환경: R7 9800X3D | RTX 5070 12GB |
32GB DDR5-6000 | PCIe 4.0 NVMe (4.34 GB/s)
Cold tok/s: 0.75 tok/s (측정치)
캐시 히트율 (Cache hit rate): 단 80개 토큰 이후 68.8%
전문가 페치 (Expert fetches): 토큰당 64개 (2개 전문가 × 32개 레이어)
전체 256개 전문가: RAM에 완전히 수용 (14.3GB)
웜업 (warm-up) 이후: SSD 읽기 0회
왜 Mixtral이 GLM-5.2보다 느릴까요?
Mixtral 전문가 = 개당 99MB.
GLM-5.2 전문가 = 개당 17.5MB.
5.7배 더 작은 전문가 = 토큰당 5.7배 적은 데이터.
GLM-5.2는 WISP의 아키텍처가 진정으로 빛을 발하는 지점입니다.
이를 구축하며 얻은 교훈
교훈 1: 병목 현상은 언제나 SSD이다
캐시 히트율을 개선하거나 토큰당 바이트 수를 줄이지 못하는 모든 최적화는 노이즈에 불과합니다. 전문가 행렬 곱셈 (expert matmul)을 위한 CUDA는 9800X3D에서 거의 제로에 가까운 이점만을 제공하는데, 그 이유는 CPU가 이미 충분히 빠르기 때문입니다. NVMe가 바로 벽입니다.
Lesson 2: 모델의 라우터(Router)가 최고의 스케줄러입니다
우리는 전문가(Experts)를 수동으로 예측하거나 프리로드(Preload)하지 않습니다. 모델 자체의 라우터(Router)가 매 토큰(Token)마다 작동하며 무엇이 필요한지 정확히 알려줍니다. 우리의 LRU 캐시(LRU cache)는 이를 자동으로 학습합니다. 휴리스틱(Heuristics)도, 미리 설정된 도메인 모드(Domain modes)도 없습니다. 순수한 적응(Adaptation)뿐입니다.
Lesson 3: Windows GPU 디스플레이는 실제적인 문제입니다
모니터를 구동하는 것과 동일한 GPU에서 추론(Inference)을 실행하면 디스플레이가 블랙 스크린(Black screen) 상태가 됩니다. GPU가 두 가지 작업을 모두 수행하려다 디스플레이가 밀려나기 때문입니다. 우리는 VRAM을 예약하여 이를 자동으로 방지하는 디스플레이 자동 감지(Display auto-detection) 기능을 제공합니다. 고생하며 배운 교훈입니다.
Lesson 4: 인상적인 숫자보다 정직한 숫자가 더 중요합니다
README에는 "우리는 측정하지 않은 과장된 숫자를 발표하지 않습니다"라고 명시되어 있습니다. 모든 추정치는 추정치라고 표시됩니다. 모든 측정된 수치에는 정확한 조건이 나열되어 있습니다. 사람들은 한계에 대해 정직한 프로젝트를 신뢰합니다.
Credits
JustVugg가 만든 Colibrì가 없었다면 WISP는 존재하지 않았을 것입니다. 그는 개념 증명(Proof of concept)을 구축했고, 우리는 일반화(Generalization)를 구축했습니다.
전체 크레딧: github.com/JustVugg/colibri
Get Started
pip install wisp-engine
wisp convert --model glm-5.2 --output ./models/
wisp chat --model ./models/glm-5.2/
Requirements (요구 사항):
- 16GB 이상의 RAM
- 300GB 이상의 여유 공간이 있는 모든 NVMe SSD
- 8GB 이상의 VRAM을 가진 CUDA GPU (선택 사항, CPU 전용으로도 작동 가능)
What's Next
7월 27일 — Kimi K3의 날
가중치(Weights)가 공개됩니다. 기술 보고서(Technical report)가 발행됩니다. 우리는 KDA 어텐션(Attention)과 분위수 균형 라우터(Quantile Balancing router)를 구현합니다. WISP는 소비자용 하드웨어에서 2.8조 개의 파라미터(Parameters)를 스트리밍합니다.
v1.1
- 학습형 캐시 (사용할수록 빨라짐)
- 지속성 KV 캐시 (대화 재개 가능)
- 전문가 히트맵(Expert heatmap)이 포함된 웹 대시보드
- ROCm 지원 (AMD R9700)
- OpenAI 호환 API 서버
73개 테스트 통과. MIT 라이선스.
github.com/zeroextub-collab/wisp
Colibrì의 어깨 위에 세워졌습니다.
JustVugg는 우리에게 무엇이 가능한지를 보여주었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기