Deepseek V4 Flash 在两块 Nvidia 4090d 48G (ada) 上以 vLLM 运行,速度约 105 t/s

Reddit r/LocalLLaMA 工具

摘要

技术文章:详细介绍如何使用自定义Triton内核和vLLM在两块Nvidia 4090d GPU上运行DeepSeek V4 Flash,在262k上下文环境下实现约105 tokens/秒的推理速度。

TLDR: 我(借助 AI)用 Triton 重新实现了所有仅支持 Blackwell 的内核(DeepGEMM、FlashInfer 稀疏 MLA、块缩放 FP8),因为它们在 sm89 上根本不存在。对于并行智能体工作流,性能提升 2-3 倍。下面是对比 llama-server 与 vLLM 的基准测试。 我受到帖子 https://www.reddit.com/r/LocalLLM/comments/1utoh2r/deepseek_v4_flash_160_ts_on_rtx_6000_blackwell_96/ 的启发。我有相似数量的显存,但分布在两台 4090d 48G GPU 上(Dell R740,已启用 p2p 补丁 https://github.com/Duanyll/open-gpu-kernel-modules/tree/595.71.05-p2p-48g)。Ada 不支持,所以我必须找到运行 vLLM 的方法,因为 llama.cpp 的速度对我来说不够快。 首次运行会将 DeepSeek-V4-Flash 压缩至 ~IQ2 以便装入 96 GB 显存,可能需要 60 分钟,具体取决于硬件。如果只有单 GPU,请在下面的第 4 步使用环境变量 `TP=1` 和 `GPUS='\"device=0\"'`。 获取模型: ``` huggingface-cli download deepseek-ai/DeepSeek-V4-Flash --local-dir ~/models/DeepSeek-V4-Flash ``` 构建 vLLM-Moet(~SM89 镜像): ``` git clone https://github.com/iSevenDays/vLLM-Moet && cd vLLM-Moet DOCKER_BUILDKIT=1 docker build -f Dockerfile.sm89-v0251 -t vllm-moet-sm89:v0251 . ``` 启动: ``` MTP_TOKENS=1 FORCE_RESIDENT=1 NETWORK=host MEM_GB=28 RESIDENCY=gpu TP=2 GPUS='\"device=0,1\"' ./docker/serve_sm89_ds4.sh ``` 我使用 vLLM 时获得了 262k 上下文和更好的并发性,相比 llama.cpp 有明显优势。运行 llama.cpp(今天的最新版本 + https://github.com/ggml-org/llama.cpp/pull/21067/)时,我使用以下命令将模型完全装入显存: ``` /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% 确定性能还可以继续提升。
查看原文

相似文章

Deepseek V4 Flash 在 RTX 5090 MoE 上运行

Reddit r/LocalLLaMA

用户分享了在 RTX 5090 上使用 llama.cpp 的一个分支运行 DeepSeek-V4-Flash (Q2_K) 的优化基准测试结果,实现了 21.3 token/秒的生成速度和 100 万上下文大小。