DeepSeek이 프로덕션 모델을 서비스하는 추론 엔진인 DeepInfer를 오픈소스로 공개했습니다. 이 프로젝트는 Hacker News에서 2,000점 이상의 점수를 얻으며 최고 순위에 올랐고, 저장소(repo)는 거의 즉시 16k 스타를 기록하며 큰 주목을 받았습니다.
이러한 과대광고를 제외하고, 실제로 무엇을 공개했는지 궁금합니다. 직접 읽지 않도록 제가 이 저장소를 읽어봤습니다.
개요 (What it is)
DeepInfer는 다양한 가속기(accelerators)에서 DeepSeek 모델을 구동하기 위한 Apache 2.0 추론 프레임워크입니다. 초기 지원은 정확히 하나의 모델, 즉 DeepSeek-V4.1-Flash에 국한되어 있습니다. 하드웨어 목표는 다음과 같습니다:
- NVIDIA SM100 GPU
- Huawei Ascend 950 NPU
README 파일은 그 계보에 대해 신선할 정도로 정직합니다. 이 엔진은 "원래 주로 vLLM을 기반으로 구축되었으며," SGLang과 TensorRT-LLM에서 아이디어를 차용했다는 것입니다. 따라서 이는 완전히 새로운(clean-sheet) 엔진이 아닙니다. DeepSeek의 커널 스택을 부착한 vLLM의 후손이라고 할 수 있습니다.
내부 구성 (What's inside)
커널 목록은 DeepSeek의 오픈소스 배포판 중 최고의 기술들을 모아놓은 것처럼 보입니다:
- FlashMLA: 다중 헤드 잠재 어텐션(multi-head latent attention)용 어텐션 커널
- DeepGEMM: FP8 행렬 곱셈 (GEMMs)
- DeepEP: 전문가 병렬 통신 (expert-parallel communication)
- 사용자 정의 TileLang 커널과 함께 TileKernels 및 DeepSelect
여기에 더해 다음과 같은 기능들이 포함되어 있습니다:
- 어텐션 DP / 균형 잡힌 CP, 그리고 부하 분산(load balancing)을 갖춘 MoE 전문가 병렬 처리 (EP + EPLB)
- 신뢰도 스케줄링 검증이 적용된 DSpark 추측 디코딩 (speculative decoding)
- "오버헤드 제로"를 주장하는 비동기 배치 스케줄링
- 프리필(prefill) 연산을 줄이기 위한 디코더 SWA 경계 재현 (bounded replay)
제가 실제로 관심을 갖는 기능: 결정론 (determinism)
어떤 처리량 차트보다도 두 가지 플래그가 더 중요합니다:
# 배치에 다른 요소가 무엇이든 상관없이 항상 동일한 출력
DEEPINFER_BATCH_INVARIANT=1
...
배치 불변 추론(Batch-invariant inference)이란, 같은 배치를 처리하는 다른 사용자의 요청 때문에 여러분의 출력이 변하지 않는다는 것을 의미합니다. 만약 온도(temperature) 0에서 평가가 불안정하게 작동하는 버그를 디버깅해 본 적이 있다면 이 기능이 얼마나 가치 있는지 아실 겁니다. 대부분의 엔진은 "대부분 결정론적(mostly deterministic)"이라고 말할 뿐입니다. 이 엔진은 이를 보장하는 모드가 있다고 주장합니다. 이 주장을 신뢰하기 전에 반드시 자신의 워크로드에서 검증해야 합니다.
구조화된 출력(정규 표현식, JSON 스키마, EBNF) 기능도 내장되어 있습니다.
실행 방법 (Running it)
요구 사항은 가볍지 않습니다: Linux, GCC 13+, Python 3.12, CUDA 13 (또는 Ascend의 경우 CANN 9.2).
export DEEPINFER_ACCELERATOR=nvidia
./build.sh
python examples/offline_inference.py
DEEPINFER_HF_MODEL_DIR=/path/to/DeepSeek-V4.1-Flash-1017를 사용하여 로컬 가중치에 연결하세요.
빠진 부분 (기대하기 전에 읽어보세요)
이것은 드롭인(drop-in) 서빙 스택이 아닙니다. README에는 이 릴리스가 대규모 서빙을 위한 핵심 기능을 갖춘 오프라인 추론에 관한 것이라고 명시되어 있으며, 다음 기능들은 명시적으로 제외하고 있습니다:
- KV 캐시 관리 (KV cache management)
- 프리필/디코드 분리 (Prefill/decode disaggregation)
- 데이터 병렬 복제본 간 로드 밸런싱 (Load balancing across data-parallel replicas)
이것들이 바로 프로덕션 서빙의 성패를 좌우하는 부분들입니다. DeepSeek은 자체 API의 토큰 처리를 재현하기 위해
두 가지를 주목하세요. 독립적인 벤치마크를 수행하는 사람과 누락된 분해(disaggregation) 구성 요소가 도착하는 것입니다. 그때까지는, 이것이 완벽한 대체재라기보다는 매우 인상적인 레퍼런스 구현체입니다.
출처: DeepInfer GitHub 리포지토리, The Decoder의 보도, 그리고 Hacker News 스레드.