DeepSeek V4 Flash를 로컬에서 실행해보고 싶었지만, 컨텍스트 길이가 길어질수록 터무니없는 양의 VRAM을 요구한다는 것을 발견했습니다 (~1M 컨텍스트에서 약 256GB). 알고 보니 DSA lightning indexer가 proper llamacpp 지원이 부족했기 때문이었습니다. 조금 조사해 보니 이 문제를 해결하기 위한 upstream PR이 있었지만 (u/fairydreaming님께 감사드립니다, PR #24231), 그곳에서도 아직 모델 그래프(model graph)에 연결되지 않았고 CUDA 경로(CUDA path)도 없습니다. 그래서 제가 직접 이를 연결하고 오늘 아침 CUDA 커널(CUDA kernel)을 패치했으며, 이와 유사한 것을 실행하려는 다른 분들에게 도움이 될까 하여 공유합니다.
하드웨어: RTX 5090, 9950X3D, 96GB DDR5
모델: DeepSeek-V4-Flash, antirez가 만든 mixed Q8/Q4/Q2 양자화 (quant)
이전 / 이후 (256K 컨텍스트):
[IMG:0]
이전
- Compute buffer ~67 GiB (OOM - 메모리 부족)
- Prefill 56 t/s
- Decode ~14 t/s
- 1M 컨텍스트 불가능 (~256GB)
이후
- Prefill 56 t/s
- Decode ~14 t/s
- 1M 컨텍스트 가능
검증된 프리셋 (Validated presets):
| 컨텍스트 (Context) | Prefill | Decode | 피크 VRAM (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 |
*1M 컨텍스트에서 32GB 5090의 낮은 ubatch 사용 - 전체 ~9GB VRAM이 주어진다면 거의 풀 스피드(full speed)가 나와야 함
정확성 (Correctness): needle-in-haystack 테스트로 짧게 검증했습니다. 100K 토큰 문서의 10%/50%/90% 깊이에 무작위 사실을 심어두었을 때, 모델이 매번 정확하게 찾아냈습니다. 또한 512K 및 1M의 더 어려운 50% 깊이에서도 정확하게 찾아냈습니다.
소스 + 빌드 지침 + 전체 설명: https://github.com/spencer-zaid/llama.cpp/blob/deepseek-lid-cuda/docs/deepseek-v4-lid-cuda.md
브랜치 (Branch): https://github.com/spencer-zaid/llama.cpp/tree/deepseek-lid-cuda
사전 빌드된 바이너리는 없습니다 (단일 GPU인 RTX 5090에서 테스트됨). 필요할 경우를 대비해 문서에 빌드 지침이 포함되어 있습니다.
제출자: /u/da_dragon321