llamacpp 패치 - RTX 5090에서 1M 토큰 컨텍스트로 DeepSeek V4 Flash 구동하기
llamacpp patch - DeepSeek V4 Flash running with full 1M token context locally on RTX 5090
핵심 요약
DeepSeek V4 Flash의 Lightning Indexer 문제를 해결하는 CUDA 커널 패치를 통해 RTX 5090에서 1M 컨텍스트를 성공적으로 구동함.
- CUDA 커널 패치 — llamacpp의 Lightning Indexer 미지원 문제를 해결하여 VRAM 사용량을 획기적으로 줄임
- 성능 최적화 — 1M 컨텍스트에서 256GB가 필요하던 VRAM을 3.75GB 수준으로 최적화함
- 하드웨어 검증 — RTX 5090 환경에서 1M 컨텍스트의 정확도와 성능을 성공적으로 검증함
- 오픈 소스 기여 — 빌드 지침과 소스 코드를 GitHub에 공개하여 누구나 활용 가능하도록 함
DeepSeek V4 Flash를 로컬에서 돌려보려고 했는데, 컨텍스트 길이를 좀 길게 잡으니까 VRAM을 미친 듯이 처먹더라(1M 길이에 256GB라니 말이 되냐). 알고 보니 DSA 라이트닝 인덱서가 llamacpp를 제대로 지원 안 해서 그런 거였음. 좀 파보니까 이걸 해결하려는 업스트림 PR이 있긴 하더라(u/fairydreaming 형님 고맙고, PR은 #24231 여기임). 근데 거기서도 모델 그래프에 연결이 안 되어 있고 CUDA 경로도 아직 없더라고. 그래서 오늘 아침에 내가 직접 연결하고 CUDA 커널 패치까지 끝냈다. 혹시 나처럼 이거 돌려보려는 사람 있을까 봐 공유함.
하드웨어: RTX 5090, 9950X3D, 96GB DDR5
모델: DeepSeek-V4-Flash, mixed Q8/Q4/Q2 quant by antirez
적용 전 / 후 (256K 컨텍스트):
| Metric | Before | After |
|---|---|---|
| Compute buffer | ~67 GiB (OOM) | 3.2 GiB |
| Prefill | 56 t/s | ~263 t/s |
| Decode | ~14 t/s | ~14 t/s |
| 1M context | impossible (~256GB) | works (3.75 GiB at ubatch 768) |
검증된 프리셋:
| Context | Prefill | Decode | Peak VRAM |
|---|---|---|---|
| 256K | ~263 t/s | 14 t/s | ~29 GiB |
| 512K | 256 t/s | 13.7 t/s | ~28 GiB |
| 1M | 159 t/s* | 13.7 t/s | ~31 GiB |
*32GB 5090에서 1M 돌릴 땐 ubatch 낮춰라. VRAM 9GB 정도 다 할당해주면 거의 풀 속도 나올 거임.
정확도: 니들 인 어 헤이스택(needle-in-haystack) 테스트로 대충 검증해봄. 100K 토큰 문서에 10%/50%/90% 깊이로 랜덤 팩트 심어놨는데, 모델이 전부 다 제대로 찾아내더라. 512K랑 1M짜리 빡센 50% 깊이에서도 잘 찾아냄.

