新闻详情

新闻详情

首页 / 资讯中心 / 详情

8×RTX 4090 24GB 硬刚 DeepSeek-V4-Flash-0731:从官方推理到 vLLM OpenAI API 的完整踩坑记录

发布时间:2026/9/30 7:01:14来源:尧图网络
8×RTX 4090 24GB 硬刚 DeepSeek-V4-Flash-0731:从官方推理到 vLLM OpenAI API 的完整踩坑记录
最近拿到一台独占 GPU 服务器配置是 8 张 RTX 4090。目标很简单使用官方 DeepSeek-V4-Flash-0731 权重把模型部署成可以给 OpenWebUI、RAG 和业务系统调用的 OpenAI-compatible API。真正部署以后连续遇到了 SM89、DeepGEMM、CUDA Graph OOM、KV Cache OOM 等问题。这里把完整过程记录下来。## 一、硬件- 8 × NVIDIA GeForce RTX 4090- 单卡约 24 GB总显存约 192 GB- Compute Capability8.9 / SM89- 2 × Intel Xeon Gold 6530- RAM 约 503 GiB关键点RTX 4090 是 SM89而且这台机器没有 NVLink。## 二、先验证 Docker GPUbashdocker run --rm --gpus all nvidia/cuda:13.0.0-base-ubuntu24.04 nvidia-smi确认容器可以看到全部 8 张卡。## 三、先验证官方模型先使用 DeepSeek 官方 inference code 验证模型本身bashexport TILELANG_TARGETcudaexport CUDA_HOME/usr/local/cuda-13.0export PATH$CUDA_HOME/bin:$PATHCUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 torchrun --nproc-per-node 8 generate.py --ckpt-path /data/models/DeepSeek-V4-Flash-0731-converted-mp8 --config config.json --interactive最终出现textIm DeepSeek 并可以正常聊天。这一步证明官方权重和 8 卡分布式推理本身没问题。## 四、官方 vLLM 遇到 SM89 问题最初使用textvllm/vllm-openai:latest启动 DeepSeek-V4 时遇到textUnsupported architecture排查后确认问题与 DeepGEMM 路径和 RTX 4090 的 SM89 架构有关。因此没有修改官方模型权重而是换用 SM89 runtimetextghcr.io/yhfgyyf/vllm-deepseek-v4-sm89:0.28.1rc1-vision11-sm89-sm120-cu130注意第三方的是 runtime不是模型权重。## 五、第一个坑CUDA Graph OOMSM89 runtime 已经可以进入 DeepSeek-V4 实际模型执行但 CUDA Graph capture 阶段出现textTriton Error [CUDA]: out of memory于是采用text--enforce-eager--compilation-config {cudagraph_mode:NONE}## 六、第二个坑KV Cache OOM继续启动后出现textAvailable KV cache memory: 0.16 GiB32768 tokens 需要约 1.7 GiB KV Cache因此 vLLM 无法启动。最终增加text--cpu-offload-gb 8终于成功。## 七、最终运行参数textTP8EPenabledmoe-backendautoattention-backendFLASHINFER_MLA_SPARSE_DSV4kv-cache-dtypefp8_ds_mlablock-size256max-num-seqs1max-num-batched-tokens2048gpu-memory-utilization0.90cpu-offload-gb8enforce-eagercudagraph_modeNONEtokenizer-modedeepseek_v4reasoning-parserdeepseek_v4## 八、API Server 成功启动日志出现textStarting vLLM server on http://0.0.0.0:8000Application startup complete.健康检查bashcurl http://127.0.0.1:19090/health返回 HTTP 200。模型bashcurl http://127.0.0.1:19090/v1/models返回textDeepSeek-V4-Flash-0731OpenAPItexthttp://SERVER_IP:19090/openapi.jsonChatbashcurl http://SERVER_IP:19090/v1/chat/completions -H Content-Type: application/json -H Authorization: Bearer YOUR_API_KEY -d {model: DeepSeek-V4-Flash-0731,messages: [{role: user, content: 你好请简单介绍一下自己。}],max_tokens: 100}## 九、为什么不直接追求 1M Context模型配置里的最大上下文长度不等于当前硬件实际能够提供的 KV Cache。这台 8×4090 的 GPU 显存已经非常紧张因此生产参数需要结合实际 KV Cache、CPU Offload、并发和业务请求长度测试。## 十、下一步性能压测当前参数首先追求稳定textmax-num-seqs1max-num-batched-tokens2048下一步应该实测text1 / 2 / 4 / 8 ... 并发观察- TTFT- ITL- tokens/s- 总吞吐- GPU 利用率- KV Cache- CPU Offload- OOM最终找到这台 8×4090 的实际最佳配置。## 总结这次真正有价值的不是一条启动命令而是完整的排障路径text8×4090→ Docker GPU→ 官方模型→ 官方 inference 成功→ 官方 vLLM→ SM89 / DeepGEMM 问题→ SM89 runtime→ CUDA Graph OOM→ Eager→ KV Cache OOM→ CPU Offload→ vLLM API Server→ OpenAI-compatible API下面是本次实际验证成功的 Docker 启动命令。 bash docker run --rm --gpus all \ --ipchost \ --shm-size32g \ -p 19090:8000 \ -v /data/models/DeepSeek-V4-Flash-0731:/model:ro \ ghcr.io/yhfgyyf/vllm-deepseek-v4-sm89:0.28.1rc1-vision11-sm89-sm120-cu130 \ --model /model \ --served-model-name DeepSeek-V4-Flash-0731 \ --trust-remote-code \ --tensor-parallel-size 8 \ --enable-expert-parallel \ --moe-backend auto \ --attention-backend FLASHINFER_MLA_SPARSE_DSV4 \ --kv-cache-dtype fp8_ds_mla \ --block-size 256 \ --max-num-seqs 1 \ --max-num-batched-tokens 2048 \ --gpu-memory-utilization 0.90 \ --cpu-offload-gb 8 \ --enforce-eager \ --tokenizer-mode deepseek_v4 \ --reasoning-parser deepseek_v4 \ --compilation-config {cudagraph_mode:NONE} \ --host 0.0.0.0 \ --port 8000 重要公开文章和 GitHub 不要发布真实 API Key、公司内网 IP、密码等生产信息。第三方 runtime 也应在生产使用前自行审阅来源、代码、许可证和安全性。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

数据集格式怎么选?从CSV到TFRecord的工程化实践指南 2026/9/30 7:54:23

数据集格式怎么选?从CSV到TFRecord的工程化实践指南

平时做数据相关的工作,打交道最多的就是数据集和数据集格式。刚开始入行时,我拿到一份数据就习惯性用 pd.read_csv() 一把梭,不管它是图像、文本还是传感器数据。后来踩了不少坑,才意识到数据集格式这个东西,往小里说…

阅读更多 →
银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南 2026/9/30 7:54:23

银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南

简介:本资源面向在银河麒麟操作系统上部署版本控制服务的运维与开发人员,聚焦于从源码编译搭建完整SVN环境这一典型场景,帮助读者解决国产化平台下组件依赖复杂、配置项繁多的问题。压缩包内共1个docx文档,约202KB,以图…

阅读更多 →
OpenHarmony上Flutter应用的数据备份恢复实战指南 2026/9/30 7:54:23

OpenHarmony上Flutter应用的数据备份恢复实战指南

1. 项目定位:为什么在鸿蒙上用Flutter做生活助手 先交代一下背景。我最近在做一个基于 OpenHarmony 的生活助手类 App,名字暂定叫“简生活”,核心功能是记日常、管待办、存小账本。跨端框架选的 Flutter,原因很简单:Op…

阅读更多 →
CentOS 7 VMware剪贴板失效的根因与open-vm-tools正确配置 2026/9/30 7:54:23

CentOS 7 VMware剪贴板失效的根因与open-vm-tools正确配置

1. 复制粘贴失效不是“没装好”,而是根本没走对路径 在 CentOS 7 虚拟机里,你右键选中一段文字,按 CtrlC,再切到主机 Windows 上按 CtrlV——结果什么都没粘出来;或者反过来,从 Windows 复制 Excel 单元格&…

阅读更多 →
开源积木式AI搭建工具实测:可视化拖拽构建智能应用 2026/9/30 7:54:23

开源积木式AI搭建工具实测:可视化拖拽构建智能应用

我最近在开源社区里翻到一个狠东西:一个把 AI 应用搭建硬生生做成“拼积木”的开源工具。它号称是北半球首个开源积木式 AI 搭建工具,说实话,刚看到“北半球首个”这种前缀的时候我是有点将信将疑的,但把一个可视化拖拽的工具下载…

阅读更多 →
体育馆场地预约系统实战:uni-app+Django+Flask全栈开发 2026/9/30 7:54:17

体育馆场地预约系统实战:uni-app+Django+Flask全栈开发

去年帮一位做羽毛球馆的朋友改造预约流程,他原来的方式是微信群接龙前台纸质登记,一到周末就撞单,客服电话被问到崩溃。后来我用微信小程序uni-app做前端,Python DjangoFlask 搭后端,交付了一套体育馆场地预约综合管理…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉