변호사의 과도한 GPU 활용기, 3편: 2x DGX Spark + 3090 서버로 돌리는 DeepSeek-V4.1-Flash
Lawyer with too many GPUs, part 3: DeepSeek-V4.1-Flash on 2x DGX Spark + an old 3090 box. 2,600+ tok/s prefill to 256K, 322 tok/s structured output, full stack and raw data published
핵심 요약
변호사가 DGX Spark와 3090 서버를 조합해 DeepSeek-V4.1-Flash의 성능을 극대화한 벤치마크와 구축기를 공유했습니다.
- 하드웨어 구성 — 2개의 DGX Spark와 3090 서버를 RDMA로 연결하여 추론 및 스펙큘레이티브 드래프팅 수행
- 성능 지표 — 256K 컨텍스트까지 2,600+ tok/s의 프리필 속도와 322 tok/s의 구조화된 출력 달성
- 기술적 특징 — NVMe 기반 프리픽스 캐시와 시스템 RAM을 활용한 Engram 테이블 오프로딩으로 효율성 증대
- 공개 자료 — 벤치마크 코드, 실행 스크립트, 원시 데이터 등 전체 스택을 깃허브에 공개
V100 서버 쓰던 변호사다. 결국 DGX Spark 두 대 질렀다. 중년의 위기는 계획대로 아주 잘 진행 중이다.
이전이랑 똑같다. 여전히 변호사질 하면서 Claude Code로 다 돌리고 있고, 벤치마크 돌려서 표 만들고 글 쓰는 것도 Claude Code가 다 도와줬다. 난 PLI Labs 설립자 Nick Mermiges 변호사다. 아래 레포가 우리 거다.
세팅: DeepSeek-V4.1-Flash-1017, 2.75 bpw EXL3, Spark 두 대에 vLLM 텐서 병렬로 물렸다. 핵심은 세 번째 박스인데, 3090 박힌 내 EPYC 서버가 Spark 두 대를 위해 다음 두 가지 일을 한다.
-
시스템 RAM에 Engram 테이블 올려두고 RDMA로 쏴줌.
-
NVLink로 묶인 3090 두 장에서 DSpark 추론 드래프터 돌림.
덕분에 Spark 메모리 여유 생겨서 KV 캐시로 1.93M 토큰 정도 확보했다. Spark NVMe에 프리픽스 캐시도 박아놔서 150K 프롬프트는 서버 재부팅해도 살아있다. 첫 토큰 나오는 데 58.6초 걸리던 게 2.58초로 줄었다.
수치. MiaAI의 sparkDash 프로토콜을 그대로 구현해서 가장 대중적인 2x Spark 빌드랑 1:1 비교 가능하게 맞췄다. Spark 2300 MHz, 3회 반복, 중앙값 기준이다.
| Test | 1 stream | 4 streams (total) |
|---|---|---|
| Structured output (JSON) | 138 tok/s | 322 tok/s |
| Code | 110 tok/s | 192 tok/s |
| Prose, temp 0, thinking off | 66 tok/s | 130 tok/s |
| Prose, thinking on (temp 0.7) | 56 tok/s | 105 tok/s |
Prefill (sparkDash 방식):
| Prompt | tok/s |
|---|---|
| 4K | 2,827 |
| 32K | 2,667 |
| 128K | 2,650 |
| 256K | 2,618 (first token in 100 s) |
비교하자면:
-
MiaAI는 8K~128K 구간에서 2,065–2,155, bertholomus는 2,439–2,568 나오는데, 이 부분은 내 빌드가 압승이다.
-
4 스트림 코드 성능은 192로 MiaAI의 166보다 높다.
내가 밀리는 부분, 솔직하게 까겠다:
