DeepSeek-V4-Flash W4A16+FP8 with MTP self-speculation: 85 tok/s @ 524k on 2×
요약
DeepSeek-V4-Flash 모델을 2개의 RTX PRO 6000 Max-Q 환경에서 구동했을 때, 524k 컨텍스트 길이에서 85.52 tok/s의 높은 처리 속도를 달성했습니다. 이 과정에서 MTP 헤드 로딩 문제와 vLLM의 CustomAllreduce 사용 시 발생하는 데드락 문제를 해결하기 위해 `--disable-custom-all-reduce` 플래그를 반드시 적용해야 합니다. 또한, 최적의 성능을 위해서는 특정 NCCL 튜닝과 패치된 vLLM 포크 사용이 필수적입니다.
핵심 포인트
- DeepSeek-V4-Flash는 524k 컨텍스트 길이에서 높은 처리 속도(85.52 tok/s)를 보여줍니다.
- Max-Q 워크스테이션 환경에서는 CustomAllreduce로 인한 데드락을 방지하기 위해 `--disable-custom-all-reduce` 플래그 사용이 필수적입니다.
- 최적의 성능과 안정성을 위해서는 패치된 vLLM 포크와 특정 NCCL 튜닝(NCCL_PROTO=LL 등)이 요구됩니다.
- 모델 로드 시 MTP 헤드 관련 문제 해결 및 `--speculative-config` 설정에 주의해야 합니다.
요약 (TL;DR): DeepSeek-V4-Flash는 2개의 RTX PRO 6000 Max-Q에서 524k 컨텍스트 길이(ctx)에서 85.52 tok/s 및 128k 단일 스트림에서 약 111 tok/s로 구동됩니다.
pasta-paul의 DeepSeek-V4-Flash-W4A16-FP8 양자화(quant)는 훌륭하지만, MTP 헤드가 로드 시점에 조용히 제거되는 문제(HF transformers has it in _keys_to_ignore_on_load_unexpected)가 있습니다. 따라서 `--speculative-config '{
만약 Max-Q 워크스테이션 카드를 사용한다면: 반드시 --disable-custom-all-reduce 플래그를 전달해야 합니다.
vLLM의 CustomAllreduce는 CUDA P2P(NCCL_P2P_DISABLE와 무관)를 사용하며, PCIe 전용 Max-Q 토폴로지에서는 post-graph eager warmup 단계에서 데드락에 빠집니다.
이 플래그가 없으면 엔진은 gpu_worker.py:619에서 무한한 shm_broadcast.py:681 No available shared memory broadcast block 경고와 함께 멈춥니다. Server 변형 버전에는 NVLink가 있어 이 문제가 발생하지 않습니다.
Max-Q에서 디코딩 TPS 비용을 0으로 유지하면서 TTFT를 약 155ms에서 약 91ms로 낮추는 NCCL 튜닝:
NCCL_PROTO=LL NCCL_ALGO=Ring NCCL_MIN_NCHANNELS=8
NCCL_NTHREADS=512
실행 방법
패치된 vLLM 포크가 필요합니다. 기본(Vanilla) 버전으로는 DSV4-Flash 양자화 모델을 로드할 수 없습니다. 기본 작업 공간은 https://github.com/pasta-paul/dsv4-flash-w4a16-fp8입니다.
여기에 MTP 패치를 적용합니다.
vllm serve LordNeel/DeepSeek-V4-Flash-Acti-MTP-W4A16-FP8 \
--tensor-parallel-size 2 --kv-cache-dtype fp8 --block-size 256 \
--max-model-len 524288 --max-num-seqs 2 \
--gpu-memory-utilization 0.93 \
--tokenizer-mode deepseek_v4 \
--tool-call-parser deepseek_v4 --enable-auto-tool-choice \
--reasoning-parser deepseek_v4 \
--trust-remote-code \
--disable-custom-all-reduce \
--speculative-config '{
- TP=2만 가능합니다. TP=1에서는 단일 RTX6000 pro에서 OOM(Out-of-Memory)이 발생하며, TP≥4는 상위 W4A16 MoE 스케일-샤딩 버그(vllm-project/vllm#41511)를 유발합니다.
num_speculative_tokens는 1로 제한됩니다. DSV4 flash는 정확히 하나의 MTP 헤드(num_nextn_predict_layers=1)만 탑재하고 있어, 이보다 높은 값은 더 많은 초안(drafts)을 생성하지 않습니다.- 추론 파서 주의사항.
--reasoning-parser deepseek_v4를 사용하면 출력 내용이content와reasoning_content로 분리됩니다.content만 읽는 클라이언트는
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기