<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s]]></title><description><![CDATA[<p dir="auto">一开始在油管看老特，后来来到抡槌，追踪了很久，论坛刚成立时也加入了。</p>
<p dir="auto">一直希望能贡献点什么，但自己不是什么技术大神，只能每天看帖学习。论坛里很多大神分享的资料也给了我很大帮助。</p>
<p dir="auto">自己的平台也是这样搭建起来的：</p>
<ul>
<li>本地 LLM：Qwen3.6-27B</li>
<li>生图：FLUX.2 Dex</li>
<li>生视频：LTX-2.3</li>
<li>声音：VoxCPM2</li>
</ul>
<p dir="auto">除了人在海外，实在弄不到刘悦大神的整合包，没法继续玩下去，其他目前运行得还算稳定。</p>
<p dir="auto">请我的 Agent 整理一下，和各位前辈交流。我尽量要求内容有干货和实测数据，不要 AI 幻觉。</p>
<p dir="auto">希望能抛砖引玉，让其他使用相同配置的朋友一起讨论。<br />
也希望各位大神看到我的平台有可以优化的地方时，不吝赐教。</p>
<p dir="auto">~~下面正文 ~~</p>
<p dir="auto">折腾了半年，双 3090 NVLink + vLLM 终于调稳定了。</p>
<p dir="auto">先上数据（全部实测）：</p>
<ul>
<li>Decode：128.2 tok/s（单请求，MTP n=3）</li>
<li>Prefill：约 2094 tok/s（2K prompt，根据 TTFT 反推）</li>
<li>并发：4 个用户同时使用，系统吞吐 258 tok/s（饱和点）</li>
<li>配置：Qwen3.6-27B-heretic AutoRound INT4，vLLM 0.22.1，TP=2</li>
<li>KV cache：fp8_e5m2，block-size 16，max-num-batched-tokens 16384</li>
<li>功耗锁定 290W，单卡显存 23.4GB，256K 上下文稳定</li>
</ul>
<p dir="auto">硬件配置：</p>
<ul>
<li>MSI Suprim X 3090 + ASUS TUF 3090（LINKUP PCIe 5.0 Riser 90cm）</li>
<li>七彩虹 NVLink Bridge（4 links，双向 112 GB/s）</li>
<li>Core Ultra 9 285K / ProArt Z890-CREATOR / 64GB DDR5</li>
<li>Ubuntu 26.04 裸机运行</li>
</ul>
<p dir="auto">踩过的坑（有记录的才写）：</p>
<ol>
<li>
<ul>
<li>vision_config：Qwen3.6 的 config.json 带有 vision 字段，纯文本部署 vLLM 会崩溃，物理删除这些字段后才稳定。</li>
</ul>
</li>
<li>
<ul>
<li>block-size 16 + batched 16384：vLLM 默认 block 32 + batched 2048 对 27B 过于保守，改为 16/16384 后，256K 上下文才稳定。</li>
</ul>
</li>
<li>
<ul>
<li>FP8 KV cache：从 BF16 改为 FP8_E5M2 后，KV 内存节省一半，256K 上下文得以运行（A/B 实测无性能损失）。</li>
</ul>
</li>
<li>
<ul>
<li>ComfyUI offloading bug：视频模式存在已知问题，使用 T2V 模式绕过。</li>
</ul>
</li>
</ol>
<p dir="auto">实测补充（与社区传闻不同的地方）：</p>
<p dir="auto">MTP n=1/2/3 扫描：128.7 / 128.9 / 128.9 t/s，差异 &lt;1%；但 MTP 接受率达 77.7%，说明 MTP 本身很有效，n 值影响较小。</p>
<p dir="auto">NVLink 开启 vs 关闭（2K prompt）：decode 128.2 vs 128.8，差异在误差范围内。</p>
<p dir="auto">并发饱和：4 个用户达到 258 t/s，8 个用户开始排队（延迟从 3 秒升至 5 秒）。</p>
<p dir="auto">FP8 KV：在 Ampere 上无性能衰减，纯粹节省显存。</p>
<p dir="auto">NVLink 到底值不值？</p>
<p dir="auto">坦白说：2K prompt + decode 场景下，NVLink 差异很小。</p>
<p dir="auto">长 prompt 场景理论上 prefill 通过 NVLink 会更有优势；32K 冷 prefill 的 TTFT 实测为 15.2 秒。</p>
<p dir="auto">已经有双卡：加一条桥值得。还在考虑要不要买第二张：单卡大显存更省心。</p>
<p dir="auto">欢迎交流，互相抄作业～<br />
如果有什么建议给小弟，或者需要咨询配置，欢迎一起讨论。</p>
<p dir="auto">诚实声明（全部）</p>
<ol>
<li>Prefill 均为根据 TTFT 反推的近似值（vLLM TTFT 含固定开销），如需精确值，可使用官方 benchmark_serving.py。</li>
<li>32K prefill 仅有 1 次冷启动数据（run2/3 受到 prefix cache 命中污染，已排除）。<br />
未采用</li>
<li>NVLink OFF 的 32K 数据（存在缓存污染）。</li>
<li>MTP 接受率为 vLLM metrics 的累计值（涵盖本次测试及历史流量）。</li>
<li>无第三方对照数据（Derek/Sanj 的方法不同，无法直接比较；Andrew Zhu 的来源已失效，已删除）。</li>
</ol>
]]></description><link>https://lcz.me/topic/988/双-3090-nvlink-vllm-半年实测-qwen3.6-27b-解码-128-tok-s-并发-4-用户-258-tok-s</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 13:47:06 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/988.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jul 2026 18:19:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Sat, 08 Aug 2026 01:22:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/che" aria-label="Profile: Che">@<bdi>Che</bdi></a> 0.0% 大概率不是故障，而是「没有可命中的公共前缀」。vLLM 的 prefix cache 只在请求开头有完全相同的 token 序列时才命中，按这个顺序排查：</p>
<ol>
<li>
<p dir="auto">先确认开关。老版本（0.6 之前）要显式加 --enable-prefix-caching 才开缓存，新版本默认开。跑一下 vllm serve --help | grep prefix 看你的版本；如果是从别处抄的启动参数，注意有没有 --disable-prefix-caching。另外极老版本还要配合 --enable-chunked-prefill 才生效。</p>
</li>
<li>
<p dir="auto">自测方法：同一个 prompt 原样连发两次，第二次 hit rate 应该明显大于 0。如果第二次上去了，说明缓存本身是好的，你平时看到 0% 只是因为每次请求前缀都不同——这是正常现象，不是 bug。如果连发两次还是 0，才需要怀疑开关或配置。</p>
</li>
<li>
<p dir="auto">最隐蔽的杀手：前缀「看着一样、token 不一样」。Chat UI 如果每次在 prompt 最前面注入时间戳、随机 request id、或者带变化的系统提示词，哪怕只差一个 token，整个前缀全部失配，命中率直接归零。系统提示词要保证字节级一致，别用动态拼接。</p>
</li>
<li>
<p dir="auto">长上下文会把缓存挤爆。你这种双 3090 场景如果 max-model-len 开很大，KV cache 预算被长序列占满，LRU 淘汰非常激进，缓存条目很快被换出去，命中率自然上不去。max-model-len 按实际需要设，别贪大，给缓存留空间。</p>
</li>
<li>
<p dir="auto">/metrics 里的 hit rate 是服务启动以来的累计均值，不是最近一分钟的实时值。刚起服务、前面全是独立请求时，均值就是 0.x%，别被吓到。想验证就看 vllm:num_prefix_cache_hits 这个计数器的增量，而不是看百分比。</p>
</li>
</ol>
<p dir="auto">补充一句：TP=2 下 prefix cache 按层分片正常生效，不需要特殊处理。真正要盯的是你的请求模式——如果每个用户会话都是独立历史、没有共享的 system prompt 前缀，那这个指标低是预期行为，省下的显存留给 KV cache 更实在。</p>
]]></description><link>https://lcz.me/post/11709</link><guid isPermaLink="true">https://lcz.me/post/11709</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sat, 08 Aug 2026 01:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Fri, 07 Aug 2026 23:20:02 GMT]]></title><description><![CDATA[<p dir="auto">看到大佬的帖子才知道 vLLM 吞吐量这么大，连夜把 llama.cpp 换成了 vLLM。奇怪的是 Prefix cache hit rate: 0.0%，仍在探索中。。</p>
]]></description><link>https://lcz.me/post/11707</link><guid isPermaLink="true">https://lcz.me/post/11707</guid><dc:creator><![CDATA[Che]]></dc:creator><pubDate>Fri, 07 Aug 2026 23:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Tue, 04 Aug 2026 10:16:18 GMT]]></title><description><![CDATA[<p dir="auto">@Don zhu 你 1015 那个求助帖我也回了，补充一个这帖特有的点：这帖的场景是 NVLink + vLLM，竖装之前要先想清楚 NVLink 桥的问题。</p>
<p dir="auto">NVLink 桥是刚性件，槽距固定（3 槽/4 槽规格），一旦把一张卡竖装或者用延长线挪了位置，桥就够不着了，等于放弃 NVLink。好消息是 vLLM 的 TP=2 并不依赖 NVLink，走 PCIe 也能跑——楼上 applejuice 也说了，无桥大概损失 15-20% prefill、5-10% decode，对大多数场景可接受。</p>
<p dir="auto">所以两条路：要么两卡保持相邻槽位走 NVLink（配柔性桥），要么放弃 NVLink、把 FE 竖装/外置发挥它上下贯通的风道，TP 走 PCIe 4.0 延长线。取舍就看你要不要那 15-20% 的 prefill 收益。至于 starryskyknight 本人是不是竖装的，得等他本人答。</p>
]]></description><link>https://lcz.me/post/11404</link><guid isPermaLink="true">https://lcz.me/post/11404</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Tue, 04 Aug 2026 10:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Mon, 03 Aug 2026 23:00:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/starryskyknight" aria-label="Profile: starryskyknight">@<bdi>starryskyknight</bdi></a> 问一下这位兄弟，你是把其中的一张卡给竖起来放置了吗？我现在也有类似的问题，我一张卡是 EVGA 的三风扇的卡，另外一张卡是 NVIDIA 的 FE。如果两张卡都并排放的话，根本就没有空间了。</p>
]]></description><link>https://lcz.me/post/11352</link><guid isPermaLink="true">https://lcz.me/post/11352</guid><dc:creator><![CDATA[Don zhu]]></dc:creator><pubDate>Mon, 03 Aug 2026 23:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Sat, 01 Aug 2026 00:23:22 GMT]]></title><description><![CDATA[<p dir="auto">非常好的分享，尤其是踩坑点，VLLM吐字速度快，32k上下文prefill冷启动15.2秒，后续如何？VLLM最头疼的就是缓存机制比SG-Lang差太多。SG-Lang可以做到长上下文基本不掉速，吐字速度还是要慢于VLLM的。有空可以测试一下SG-Lang，毕竟Agent是刚需，稍微上点强度的编程也要求走长上下文，聊天走本地意义不大。</p>
]]></description><link>https://lcz.me/post/11128</link><guid isPermaLink="true">https://lcz.me/post/11128</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Sat, 01 Aug 2026 00:23:22 GMT</pubDate></item><item><title><![CDATA[Reply to 双 3090 NVLink + vLLM 半年实测：Qwen3.6-27B 解码 128 tok/s，并发 4 用户 258 tok/s on Sat, 01 Aug 2026 12:03:49 GMT]]></title><description><![CDATA[<p dir="auto">没有nvlink大概损失15-20% prefill<br />
5-10%decode</p>
]]></description><link>https://lcz.me/post/11125</link><guid isPermaLink="true">https://lcz.me/post/11125</guid><dc:creator><![CDATA[applejuice]]></dc:creator><pubDate>Sat, 01 Aug 2026 12:03:49 GMT</pubDate></item></channel></rss>