
Deepseek V4 Flash 모델을 두 개의 Nvidia 4090d 48G GPU에서 vLLM으로 구동한 성능 분석
요약
Nvidia 4090d GPU 환경에서 DeepSeek-V4-Flash 모델을 vLLM으로 구동하기 위한 최적화 방법과 성능 분석을 다룹니다. Blackwell 전용 커널을 Triton으로 재구현하여 Ada 아키텍처에서도 성능을 극대화하는 기술적 접근법을 제시합니다.
핵심 포인트
- Nvidia 4090d 2개를 활용한 DeepSeek-V4-Flash 구동 및 성능 비교
- Blackwell 전용 커널(DeepGEMM 등)을 Triton으로 재구현하여 성능 2~3배 향상
- llama.cpp 대비 vLLM 사용 시 더 긴 컨텍스트와 높은 동시성 확보 가능
- vLLM-MoE 빌드를 통한 SM89 아키텍처 최적화 가이드 제공
요약: 저는 (AI의 도움을 받아) Blackwell 전용 커널(DeepGEMM, FlashInfer sparse-MLA, 블록 스케일링 FP8)을 Triton으로 재구현했습니다. 왜냐하면 이들이 sm89 아키텍처에는 존재하지 않기 때문입니다. 그 결과 병렬 에이전트 워크플로우에서 성능이 2~3배 향상되었습니다.
llama-server 대 vLLM 비교 벤치마크: 저는 [IMG:N] 포스트(https://www.reddit.com/r/LocalLLaMA/comments/1utoh2r/deepseek_v4_flash_160_ts_on_rtx_6000_blackwell_96/)에서 영감을 받았습니다. 저도 비슷한 양의 VRAM을 가지고 있지만, Dell R740에 장착된 두 개의 4090d 48G GPU에 분산되어 있으며 p2p 패치(https://github.com/Duanyll/open-gpu-kernel-modules/tree/595.71.05-p2p-48g)가 활성화되어 있습니다. Ada 아키텍처는 지원되지 않았기 때문에, 저는 vLLM을 실행할 방법을 찾아야 했고, llama.cpp의 속도로는 충분하지 않았습니다. 첫 번째 실행에서는 DeepSeek-V4-Flash를 약 iq2로 압축하여 96GB VRAM에 맞추는데, 하드웨어에 따라 최대 60분이 걸릴 수 있습니다. 단일 GPU만 사용하는 경우, 아래 단계 4에서 환경 변수 TP=1 및 GPUS='"device=0"'를 사용하십시오.
모델 다운로드: hf download deepseek-ai/DeepSeek-V4-Flash --local-dir ~/models/DeepSeek-V4-Flash<br>vLLM-Moet 빌드 (~SM89 이미지):<br>git clone https://github.com/iSevenDays/vLLM-Moet && cd vLLM-Moet<br>DOCKER_BUILDKIT=1 docker build -f Dockerfile.sm89-v0251 -t vllm-moet-sm89:v0251 .<br>MTP_TOKENS=1 FORCE_RESIDENT=1 NETWORK=host MEM_GB=28 RESIDENCY=gpu TP=2 GPUS='"device=0,1"' ./docker/serve_sm89_ds4.sh<br><br>llama.cpp와 비교했을 때 vLLM을 실행하면 262k 컨텍스트와 더 나은 동시성을 얻고 있습니다. llama.cpp를 실행할 때는 (오늘의 메인 버전 + https://github.com/ggml-org/llama.cpp/pull/21067/) 모델 전체를 VRAM에 맞추기 위해 아래 명령어를 사용했습니다.
/root/llama.cpp/build/bin/llama-server --model /root/antirez/ds4/gguf/DeepSeek-V4-Flash-IQ2XXS-w2Q2K-AProjQ8-SExpQ8-OutQ8-chat-v2-imatrix.gguf -ngl 99 -np 1 --n-cpu-moe 0 --split-mode layer -ts 43,43 -fit on -fa on -c 262144 --cache-type-k q8_0 --cache-type-v q8_0 --temp 1.0 --top-p 1.0 --min-p 0.0 --host 0.0.0.0 --port 8002 --jinja --reasoning-preserve --no-mmap --prefetch-weights 1 --chat-template-kwargs '{"reasoning_effort":"max"}' 이 모델을 vLLM에 맞추고 모든 이점을 얻으려면 아마 다른 방법이 없을 것입니다. 성능은 여전히 개선될 수 있다고 99% 확신합니다. 제출자: /u/iSevenDays [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기