我在懒猫算力仓上跑了 DeepSeek V4,然后跟"慢"死磕了三天
8 月 28 号晚上,我在懒猫算力仓上把 DeepSeek V4 Flash 跑起来了。
配置说出去还挺唬人的:两台 Jetson Thor T5000 组分布式,单台 128GB 统一内存,官方 CLI 3.0.8 一键部署,跑 vLLM,320K 上下文。
内网端点通的那一刻,还挺有成就感的。
然后我发起了第一个真实请求。
然后我等了四十五秒。
那个请求是要一句三十字的介绍。
三十个字。四十五秒。
我盯着屏幕,血压开始爬升。
接下来的三天,我把这套服务里里外外翻了一遍。
排查结束之后,速度问题解决了。但比解决方案更值钱的,是过程中我发现的一件事——
所谓"模型慢",根本不是一个问题。
是三个。
而且这三个问题的原因毫无关系,解法也毫无关系。
混在一起解决,就是白费劲。
第一个问题:解码速度,是硬件路线的天花板
先看最硬的指标:解码速度。
实测下来,每秒 20 到 27 个 token。
我调了各种参数。
纹丝不动。
深挖之后才发现根因:Thor 的 MGBE 互联加这套量化方案,在 vLLM 里没有原生的 FP4 计算路径,走的是 Marlin 解量化的迂回路线——每一层都带着额外的解压开销。
这是硬件路线决定的,调参救不了。
所以我做了个决定:这段,认了,停止投入,等上游适配。
别觉得这是认输。性能优化里最大的浪费,就是在一个没有解的层面反复使劲。
知道哪里没救,本身就是巨大的节省——我的精力全部腾给了后面两个真问题。
第二个问题:首字延迟,是编译器在冷启动
再看首字延迟:10 到 13 秒。
这个数字里有相当一部分,来自一个特别容易被忽略的机制。
vLLM 第一次运行某类计算时,要靠 Triton 即时编译计算内核。
一次性开销。编完就正常了。
也就是说,"服务重启后头几分钟特别卡"不是 bug。
是 Triton 在冷启动。
解法简单到离谱:服务就绪之后,自动发几个预热请求,把编译开销提前消耗掉。
三行脚本。
从此这个现象彻底消失。
第三个问题:最有戏剧性的来了
前面两个都是"慢",但都还在容忍范围内。
真正让我血压拉满的,是有一类任务,明显"想"得特别久。
就是开头说的那句三十字的介绍:45 秒。
我把它逐层拆开测量,发现了一个让我哭笑不得的事实——
DeepSeek V4 默认开启深度思考。
回答之前,它先在内部写了一大段推理。
那个三十字的问题,它先打了一千二百五十多个字的草稿。
烧掉 1252 个 thinking token。
然后才开始回答我。
解法是一个请求参数的事:在 body 里加 chat_template_kwargs: {"thinking": false}。
同样的题目,重测:
46.8 秒,变成 1.75 秒。
27 倍。
finish reason 正常,输出质量,没有任何区别。
三天排查里最贵的归因,花了一天多。
而最便宜的优化,只是一个请求参数。
顺手还排掉一个雷
排查过程中还撞见一个衍生坑,值得单独说一句。
给 max_tokens 设小了的时候,DeepSeek V4 会先把思考 token 烧完,预算耗尽,正文一个字没写——接口返回成功,content 是空的。
排查这种"返回成功但内容为空"的问题,比排查报错恶心十倍。
解法:思考类任务 max_tokens 给到 256 以上,或者直接关思考。
又是同一个开关。
最后,沉淀成一套测量方法
这三天结束之后,我给自己立了个规矩:以后任何推理服务上线,先把一次请求拆成三段来测。
第一个字出来之前(TTFT)——查网络、排队、编译预热。解法是预热和缓存。
吐字的速度(decode)——看硬件路线。先确认天花板在哪,别跟物理较劲。
吐字之前的"思考"(reasoning)——查配置开关。这里经常藏着最便宜的提速。
三段的解法空间完全不同,互不相干。
所以下次你遇到"这模型太慢了",别急着换硬件。
先归段。
不归段的优化,就是碰运气。
这个道理放到产品上也一样成立:用户说"你们产品好卡"——首屏慢、操作慢、任务处理慢,是完全不同的三个团队、三套解法。
把主观的"慢"翻译成可测量的分段指标,是性能工作的第一步。
写在最后
这三天踩的坑不止这些:双机组网的启动顺序竞态、端口残留导致的连锁崩溃,够我再写一篇的(已经写了,见双机部署实录)。
而排查手法本身,站在两篇旧文的肩膀上:推理服务变慢排查立的规矩是"配置即假设,当前状态必须可审计";静默降级那次学的是"信探针,不信自述"。
这次那 27 倍的数字,就是金丝雀对照测出来的,不是体感。
如果你也在懒猫算力仓或者别的盒子上跑过本地大模型,踩过什么离谱的坑,来聊聊。
顺便说一句,后来我的调优记录还被平台的自动更新覆盖过一次——那次的事,又是另一篇了。
← 返回博客列表 · 相关阅读:双机分布式 vLLM 部署实录 · 前缀缓存调优被静默回滚