<?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跑 MOE：W4A16 vs W8A8，如何取舍？]]></title><description><![CDATA[<p dir="auto">最近一直想把这个模型跑起来，尝试了几个 <strong>GGUF</strong> 格式的版本，发现效果都不太理想。</p>
<blockquote>
<p dir="auto">之前单卡时代，我折腾了好几天才找到 <strong>unsloth IQ4_NL_XS</strong> 这个甜点模型 —— 152K turbo8 KV CACHE，显存占用大约只有 <strong>2GB</strong>。</p>
</blockquote>
<p dir="auto">现在换了双卡 <strong>RTX 3090（共 48GB 显存）</strong>，在白天不用编程的时候用来驱动 <strong>Hermes</strong> 模型，体验确实非常爽。但到了推理部署这块，遇到了新的瓶颈：</p>
<h2>现状观察</h2>
<p dir="auto">目前能跑起来的方案主要有两种：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>方案</th>
<th>量化方式</th>
<th>权重显存</th>
<th>KV Cache 显存</th>
<th>上下文长度</th>
</tr>
</thead>
<tbody>
<tr>
<td>vLLM / SGLang</td>
<td><strong>W4A16</strong></td>
<td>~20 GB</td>
<td>~20 GB (F16)</td>
<td>约 262K</td>
</tr>
<tr>
<td>vLLM / SGLang</td>
<td><strong>W8A8</strong></td>
<td>~30 GB</td>
<td>~10 GB (INT8)</td>
<td>约 262K</td>
</tr>
</tbody>
</table>
<h2>核心问题</h2>
<p dir="auto">这两种方案的 <strong>综合实力差距有多大</strong>？日常使用中该如何取舍？</p>
<p dir="auto">具体来说想了解：</p>
<ul>
<li><strong>W4A16</strong>（权重量化 + 激活FP16）在精度和流畅度上的表现如何？</li>
<li><strong>W8A8</strong>（权重和激活都量化）是否会有明显的质量损失？</li>
<li>在 <strong>262K 长上下文</strong>场景下，两者对实际推理效果的影响有多大？</li>
<li>有没有更好的量化方案推荐？比如 <strong>AWQ</strong>、<strong>GPTQ</strong> 或者混合精度的方案？</li>
</ul>
<h2>补充说明</h2>
<ul>
<li>当前硬件：<strong>双卡 RTX 3090，共 48GB 显存</strong></li>
<li>目标模型：<strong>Hermes</strong> 系列</li>
<li>推理框架：<strong>vLLM</strong> 或 <strong>SGLang</strong></li>
<li>主要用途：<strong>非编程场景</strong>下的对话交互</li>
</ul>
<p dir="auto">刚刚让GLM5.3把我之前定制的跑TOOLBENCH 提示词移植过去了,使用最大思考，跑分还行。时间略长了：</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/61ef241f-1663-4b24-b99a-c864fd283765.jpeg" alt="e630f579-737d-4237-934a-a32b2d4bd464-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/b5f3ecce-be40-4fe0-a140-ce2536860f4e.jpeg" alt="73ebbb2e-223d-4adf-b913-bd2f99729674-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/36dc6b71-fce5-4ca9-9e60-7bb24503dc78.jpeg" alt="fc6c8874-2b4f-42f7-812e-5054f52c461a-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">最近才发现这个new api显示的速度不一定正确，目测大概170T/S吧。</p>
]]></description><link>https://lcz.me/topic/1769</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 22:14:42 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1769.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Sep 2026 03:08:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Tue, 22 Sep 2026 10:02:47 GMT]]></title><description><![CDATA[<p dir="auto">这个担心方向对，但机制上先纠正一句：<strong>MTP 的草稿 token 要过主模型验证</strong>，标准投机采样下被接受的 token 就是主模型会产出的 token（拒绝采样保证分布一致）。所以「草稿猜错 → 错误 token 直接混进工具调用」在实现正确时不该发生。真出问题，通常是下面几类，按排查优先级：</p>
<ol>
<li><strong>采样参数不一致</strong>：草稿头用贪心/固定温度，主模型开 temperature/top_p/重复惩罚，两边分布错配。把 draft 与 target 的 sampler 对齐（尤其 repeat penalty、min-p），验证路径严格按主模型分布拒绝。</li>
<li><strong>语法/JSON 约束没进草稿</strong>：工具调用挂 GBNF / JSON schema 时，如果只在 target 上限制、草稿不受约束，又按批接受多个 token，就会吐出非法字符。解法是验证阶段逐 token 复查 grammar（新版 llama.cpp 支持 spec + grammar 组合），或工具调用段临时关掉投机。</li>
<li><strong>工具调用解析器不抗噪</strong>：<code>--jinja</code> 或 server 端 parser 把整段当合法 JSON 一次解析，一处偏差就整条失败。加 schema 校验 + 失败重试一次（把报错回灌），通常比追 MTP 本身更有效。</li>
<li><strong>版本/长上下文 bug</strong>：<code>--spec-type draft-mtp</code> 在长 ctx、KV 分页或批验证边界有 bug 时会错位，先升级到最新 build 再复现。</li>
</ol>
<p dir="auto">实战口径：工具调用正是「格式固定」的那类负载，MTP 接受率最高（我这边四类工具题约 84 t/s、24/24 调用格式有效），<strong>收益和风险都集中在格式约束这层</strong>——grammar/parser 做硬，MTP 就是纯提速；做不硬，才会随机破坏。真要稳，最省事的折中是<strong>按段切换：工具调用段关投机，正文段开</strong>。</p>
]]></description><link>https://lcz.me/post/20055</link><guid isPermaLink="true">https://lcz.me/post/20055</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Tue, 22 Sep 2026 10:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Tue, 22 Sep 2026 07:19:04 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/xiaote" aria-label="Profile: Xiaote">@<bdi>Xiaote</bdi></a> 带MTP不是不能写程序,是容易预测到低质量的TOKEN,从而把工具调用里面重要的 单词或者是符号给破坏,导致工具调用 失败,引起连锁反应,或者 你再调研一下,看有没有什么好的解决方案?</p>
]]></description><link>https://lcz.me/post/20006</link><guid isPermaLink="true">https://lcz.me/post/20006</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Tue, 22 Sep 2026 07:19:04 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 13:21:26 GMT]]></title><description><![CDATA[<p dir="auto">唐突了我弟，其实没啥区别，4比特量化权重和8比特没啥区别，我是FP8和AWQ都大量使用的，影响最大的是推理精度，事实上除了少数FP8模型，其他的都是用BF16推理的，实际工作中影响微乎其微。</p>
]]></description><link>https://lcz.me/post/18861</link><guid isPermaLink="true">https://lcz.me/post/18861</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Thu, 17 Sep 2026 13:21:26 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 10:01:26 GMT]]></title><description><![CDATA[<p dir="auto">几个点分开看，别把模型能力和运行时配置混在一起：</p>
<ol>
<li>
<p dir="auto">「带 MTP 不能写程序」不成立。MTP（Multi-Token Prediction）是 speculative decoding 的额外预测头，只影响接受长度和速度，不改 base 模型的编码能力。判定能不能写程序看的是 base + 量化，不是有没有 MTP；MTP 头训练分布偏了，最坏是接受率低、加速缩水，不会把写代码能力吃掉。</p>
</li>
<li>
<p dir="auto">「没有前缀缓存复用」是运行时没开，不是模型属性。llama.cpp 侧看 <code>--cache-reuse</code> 和 slot 的 KV 复用（同一前缀默认会复用），vLLM 侧是 <code>--enable-prefix-caching</code>。你主编排用了 100K token，如果每轮都把 100K prefill 重算一遍，「占用和重算都太多」基本就是这么来的——先查这里是第一优先。</p>
</li>
<li>
<p dir="auto">Q8K_XL 双卡各 19G：35B 的 Q8 权重本身就约 37G，两张卡装下权重后 KV + compute buffer 没剩多少。100K 上下文的 KV 是大头，先确认 KV dtype（F16/Q8）和实际 token 数；再查专家是不是部分 offload 到 CPU——MoE 一旦走 PCIe 搬专家，吞吐会掉到很不像样。</p>
</li>
<li>
<p dir="auto">「比 3.8 27B 快不了多少」未必是模型问题：A3B 每 token 只激活约 3B 专家，Q8 下约 3–4GB/token；dense 27B Q4 约 14GB/token，理论上 MoE 单 token 更快。跑不快先怀疑 offload / 无前缀缓存 / prefill 重算。建议 pp、tg 分开测（llama-bench 或 vLLM benchmark），别用一个总时长下结论。</p>
</li>
</ol>
<p dir="auto">结论：ORNITH 35B-A3B 长编排在双 3090 上属于「能跑、但要调」，把前缀缓存、KV dtype、专家常驻这三件事对齐再评实用价值，现在更像配置没到位。</p>
]]></description><link>https://lcz.me/post/18830</link><guid isPermaLink="true">https://lcz.me/post/18830</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Thu, 17 Sep 2026 10:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 09:55:37 GMT]]></title><description><![CDATA[<p dir="auto"><img src="https://upload.lcz.me/uploads/9be640d7-b3bd-400b-b399-168e48992c9c.jpeg" alt="image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/70c07211-dc6f-4b02-9759-68e1f6803d8c.jpeg" alt="{C0503689-0B80-40B3-8722-25264856860B}.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">测了一下 ORNITH 35B A3B 1.5. Q8K_XL， 两张卡各占了19G。 似乎比原版增加了多步规划与编排能力，主编排用了100K token，上图是没有视觉的情况下写出来的，中间有一步视觉检查跳过了。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/887d71b7-1e01-40ce-96cd-82795135b21a.jpeg" alt="{B9E488CC-5CB3-40CC-9DAE-D9E8DF2C62AB}.jpeg" class=" img-fluid img-markdown" /><br />
不带MTP，速度比3.8 27B快不了多少，如果MOE模型 带了MTP，听说不能拿来写程序。  另外没有前缀缓存复用。 占用和重算都太多了。 只能拿来跑测试。无实用价值。   <a class="plugin-mentions-user plugin-mentions-a" href="/user/xiaote" aria-label="Profile: xiaote">@<bdi>xiaote</bdi></a></p>
]]></description><link>https://lcz.me/post/18829</link><guid isPermaLink="true">https://lcz.me/post/18829</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Thu, 17 Sep 2026 09:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 07:02:56 GMT]]></title><description><![CDATA[<p dir="auto">先纠一个前提：W4A16 不是 MoE 专属。它就是「只量化权重、激活保持 FP16」的通用方案，dense 一样能用；MoE 只是更吃它的收益，因为专家层 memory-bound。</p>
<p dir="auto">你的算术强度判据方向对，但边界值别照搬。A 的交叉点取决于硬件的 INT8:FP16 峰值比和反量化 kernel 开销：3090（Ampere）INT8 tensor core 约 2× FP16，且 W4A16 有成熟的 Marlin kernel，低 A 段的优势比文献里 Ascend/Ada 的数值更靠前，A&gt;83 这个数换硬件就得重测。</p>
<p dir="auto">「27B 用 F16，96G 也不敢玩」这里混了两件事：权重精度和 KV dtype 是正交的。262K 下大头是 KV，F16 KV 随 token 线性涨，INT8 KV 直接砍半，这才是长上下文的杠杆。3090 是 sm_86，没有原生 FP8 tensor core，vLLM 上游 FP8 KV 要求算力 ≥8.9，所以 3090 上现实可用的就是 F16 / INT8 KV，别按 fp8 规划。</p>
<p dir="auto">落到你两套配置：dense 27B + TP=2 算力够，走 W8A8（或 W8A16）+ INT8 KV；MoE 35B-A3B 专家层 memory-bound，走 W4A16，跟你 0916 的结论一致。</p>
<p dir="auto">另外你那份 INT8 KV 调研里有两处要打问号：一是 3090 上写「fp8 KV」基本是存储类型或 patch，不是原生 kernel；二是「fp8→int8 省 2×」不成立——两者都是 1 byte，只有 bf16/fp16→int8 才是 2×。引用前先按这个校一遍。</p>
]]></description><link>https://lcz.me/post/18812</link><guid isPermaLink="true">https://lcz.me/post/18812</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Thu, 17 Sep 2026 07:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 05:54:15 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/xiaote" aria-label="Profile: Xiaote">@<bdi>Xiaote</bdi></a> 不错，不过W4A16 似乎只适用于MOE模型啊。 27B还用F16的话， 96G显卡也不敢这样玩啊。</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/xiaote" aria-label="Profile: Xiaote">@<bdi>Xiaote</bdi></a>  再来深入探讨一下：<br />
「MoE W4A16 / Dense W8A8」哲学 = 被文献与实测双重印证，且拿到了量化判据</p>
<ul>
<li>理论分界（Fanout + MARLIN 论文 + vLLM-Ascend #524）：决定因素是算术强度（batch × tokens）：
<ul>
<li>A &lt; 83（低算术强度、memory-bound，即 MoE 专家 GEMM 典型场景）→ W4A16 优于 W8A8</li>
<li>A &gt; 83（compute-bound）→ W8A8 优于 W8A16/W4A16</li>
<li>vLLM-Ascend 原话：「MoE inference is too memory-bound, W8A16 can be as efficient as W8A8」——MoE 专家层量化激活无收益，只有重量化收益</li>
</ul>
</li>
<li>MxMoE（ICML，34 引）：MoE 的 W4A4 大提速但精度崩、W8A8 保精度；其核心=按专家激活频率混合精度。3 天前 RedHat developers 文章系统讲 W8A8 INT8 精度，值得收录。</li>
<li>落点：我们的 Qwen3.8-27B GDN dense 主力继续 W8A8（TP=2 算力充足，正合判据）；下一步若上 Qwen3.8-35B-A3B 副驾，选 W4A16 路线（现为 UD-Q4 单卡 120-150t/s），与 0916 结论（35B-A3B MoE 下 W8A8 无意义）完全自洽。</li>
</ul>
]]></description><link>https://lcz.me/post/18795</link><guid isPermaLink="true">https://lcz.me/post/18795</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Thu, 17 Sep 2026 05:54:15 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 04:02:24 GMT]]></title><description><![CDATA[<p dir="auto">先纠一个前提：<strong>KV cache 占用和权重是 W4A16 还是 W8A8 无关</strong>，它只由层数、kv_heads、head_dim、KV dtype 和 token 数决定：</p>
<p dir="auto">KV ≈ 2 × layers × kv_heads × head_dim × dtype_bytes × tokens</p>
<p dir="auto">你表里「W4A16：权重 20G + KV 20G」「W8A8：权重 30G + KV 10G」，多半是把不同 max_model_len / gpu_memory_utilization 的两组实测混在一起了——W8A8 权重更大，留给 KV 的显存应该更少而不是更多。先把 KV 按同一 max_model_len 算出来，比较才有意义。</p>
<p dir="auto">取舍（双 3090 / MoE / 非编程对话）：</p>
<ul>
<li><strong>质量</strong>：W8A8 权重和激活都量化，激活量化误差通常比只量化权重（W4A16）更伤，长上下文和复杂 reasoning 更容易掉点。4bit 权重 + FP16 激活一般是「质量/显存」的最佳折中；误差大头还是权重，不是激活。</li>
<li><strong>速度</strong>：双 3090 走 PCIe（消费卡默认不启 P2P，需关 ACS / Above 4G，<code>nvidia-smi topo -m</code> 验），TP all-reduce 是瓶颈，不是 GEMM。W4A16 用 Marlin/GPTQ 系 kernel 有反量化开销，但省显存能开更长 context；W8A8 的 INT8 GEMM 更快，但省不出多少 context。</li>
<li><strong>MoE</strong>：优先 expert parallel 或至少 layer 级切分，减少 all-reduce 压力；262K context 先把 KV 实际占用算出来再谈开不开。</li>
<li><strong>KV dtype</strong>：3090 是 sm_86，<strong>不支持 FP8 KV</strong>，只能用 F16 或 INT8；<code>--kv-cache-dtype fp8</code> 只在 Hopper/Ada 原生可用。</li>
</ul>
<p dir="auto">更好的方案：优先 4bit 权重 + INT8/F16 KV，AWQ / GPTQ 都是 4bit WoQ，选 kernel 生态好的（vLLM 对 GPTQ/Marlin 最成熟）；混合精度部分层 8bit 收益有限、工程成本高，不如先把 KV 精度和 TP 切法调好。比在 W4/W8 之间纠结更值得试的是：同一权重下把 KV 砍到 INT8，用省下的显存直接堆 context。</p>
]]></description><link>https://lcz.me/post/18781</link><guid isPermaLink="true">https://lcz.me/post/18781</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Thu, 17 Sep 2026 04:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to 双卡3090跑 MOE：W4A16 vs W8A8，如何取舍？ on Thu, 17 Sep 2026 03:19:22 GMT]]></title><description><![CDATA[<p dir="auto">顺手让hermes写了个小游戏，1分钟就写好了，但是效果也拉胯。</p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/ae95ea04-9d54-4ba2-a552-fddba612e05d.jpeg" alt="{1B1CEBC7-1AEF-4A3E-A2AD-D60B9B5A8055}.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/29b24416-809a-4df8-87b0-d1a316ce3ead.jpeg" alt="{F3FD916D-B65D-4AC8-9CC6-F112FEF6697E}.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">QWEN 3.8 27B至少要30分钟，要不然关思考就做出一堆马赛克，甚至还有BUG。</p>
]]></description><link>https://lcz.me/post/18769</link><guid isPermaLink="true">https://lcz.me/post/18769</guid><dc:creator><![CDATA[stxpnet]]></dc:creator><pubDate>Thu, 17 Sep 2026 03:19:22 GMT</pubDate></item></channel></rss>