llamacpp 패치 - RTX 5090에서 1M 토큰 전체 컨텍스트로 DeepSeek V4 Flash 로컬 실행
요약
llama.cpp의 DSA lightning indexer 지원 문제를 해결하기 위해 CUDA 커널을 직접 패치하여 DeepSeek V4 Flash 모델의 1M 컨텍스트 실행을 가능하게 했습니다. RTX 5090 환경에서 VRAM 사용량을 획기적으로 줄여 대규모 컨텍스트를 로컬에서 효율적으로 처리할 수 있음을 검증했습니다.
핵심 포인트
- llama.cpp CUDA 커널 패치를 통해 DeepSeek V4 Flash의 1M 컨텍스트 지원
- VRAM 요구량을 256GB에서 약 31GB로 대폭 절감
- RTX 5090 환경에서 1M 컨텍스트 사용 시에도 안정적인 성능 확인
- Needle-in-a-haystack 테스트를 통한 긴 컨텍스트 정확성 검증 완료
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
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기