<?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[DeepSeek-V4.1-Flash 三种部署架构的实测对照]]></title><description><![CDATA[<h1>DeepSeek-V4.1-Flash 三种部署架构的实测对照</h1>
<p dir="auto">全部数字为同一台机器上的实测，FP8只测试了2卡部署<br />
机器：4×L20 48 GB · 2×Xeon Gold 6530（128 逻辑核，双 NUMA）· 1007 GB RAM · RAID5 NVMe<br />
权重：<code>dealignai/DeepSeek-V4.1-Flash-UNCENSORED-FP8</code>（476 GB，fp8 block-32 稠密 + fp4 专家）<br />
　　　<code>IndrasMirror/DeepSeek-V4.1-Flash-GSQ-Uncensored/V41-GSQ.gguf</code>（152 GiB，三值/2bit/3bit 混合专家）</p>
<hr />
<h2>0. 一句话结论</h2>
<p dir="auto">同一个模型、同一台机器，三种架构的<strong>单流解码速度</strong>实测差 3.4 倍：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>架构</th>
<th>专家权重住在哪</th>
<th>单流解码</th>
<th>并发聚合</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Lvllm</strong>（张量并行）</td>
<td>显存（部分层常驻）+ 主机</td>
<td>34.5 中位 / 38.2 峰值（共驻时跌到 1–13）</td>
<td><code>--max-num-seqs 2</code></td>
</tr>
<tr>
<td><strong>Strata</strong>（GGUF + 投机解码）</td>
<td>主机 pinned + 显存槽缓存（88.7% 命中）</td>
<td><strong>50–88</strong></td>
<td>单实例串行，需一卡一实例</td>
</tr>
<tr>
<td><strong>FreeToken</strong>（专家库分流）</td>
<td>主机 pinned 库，按带宽比例分给 PCIe 与 CPU</td>
<td>25.7</td>
<td><strong>~100 tok/s @ C=16</strong></td>
</tr>
</tbody>
</table>
<p dir="auto">三个架构的上游仓库：<strong>Lvllm</strong> <a href="https://github.com/guqiong96/Lvllm" rel="nofollow ugc">https://github.com/guqiong96/Lvllm</a>（vLLM fork，上游 <a href="https://github.com/vllm-project/vllm" rel="nofollow ugc">https://github.com/vllm-project/vllm</a>）· <strong>Strata</strong> <a href="https://github.com/Indras-Mirror/Strata-DSV4.1" rel="nofollow ugc">https://github.com/Indras-Mirror/Strata-DSV4.1</a>（基于 <a href="https://github.com/Niko1221/Strata" rel="nofollow ugc">https://github.com/Niko1221/Strata</a>）· <strong>FreeToken</strong> <a href="https://github.com/FlashML-org/FreeToken" rel="nofollow ugc">https://github.com/FlashML-org/FreeToken</a></p>
<p dir="auto">差别不在"哪个引擎更好"，而在<strong>每个输出 token 要从主机搬多少字节</strong>，以及<strong>一步能不能产出多个 token</strong>。全文就是围绕这两件事展开的。</p>
<hr />
<h2>1. 被测对象：模型、权重与量化（所有数字的前提）</h2>
<p dir="auto">三个架构跑的是<strong>两份不同的权重</strong></p>
<p dir="auto"><strong>基座</strong>：<code>deepseek-ai/DeepSeek-V4.1-Flash</code>（MIT，多模态 MoE）。</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>权重</th>
<th>Hugging Face 仓库</th>
<th>本机路径</th>
<th>体积</th>
<th>量化方案</th>
<th>谁在用</th>
</tr>
</thead>
<tbody>
<tr>
<td>原版 FP8/FP4</td>
<td><code>dealignai/DeepSeek-V4.1-Flash-UNCENSORED-FP8</code>（base_model = <code>deepseek-ai/DeepSeek-V4.1-Flash</code>，abliterated）</td>
<td><code>/opt/models/dealignai/DeepSeek-V4.1-Flash-UNCENSORED-FP8</code>（48 个 safetensors 分片）</td>
<td>476 GB</td>
<td><code>quant_method: fp8</code>，<code>weight_block_size [32,32]</code>，<code>scale_fmt ue8m0</code>，activation dynamic；专家 <code>expert_dtype: fp4</code>（≈4 bit）</td>
<td>Lvllm、FreeToken</td>
</tr>
<tr>
<td>GSQ 混合三档 GGUF</td>
<td><code>IndrasMirror/DeepSeek-V4.1-Flash-GSQ-Uncensored</code></td>
<td><code>/opt/models/IndrasMirror/DeepSeek-V4.1-Flash-GSQ-Uncensored/V41-GSQ.gguf</code></td>
<td>152 GiB</td>
<td><strong>逐专家分档</strong>：PTQ1_0 三值 {−1,0,+1}×fp16 scale/128 = 1.75 bit（占专家权重 42.8%）、Q2_0 2.25 bit（39.2%）、Q3_K 3.44 bit（18.0%），专家均值 <strong>2.250 bit</strong>；稠密半（attention / shared expert / lm head）Q8_0；embedding、compressor、indexer 保持 F16；norm、router、mHC 保持 F32</td>
<td>Strata</td>
</tr>
<tr>
<td>MTP 草稿模型</td>
<td>同上仓库</td>
<td><code>…/V41-MTP-Vision.Q2_K.gguf</code>（5.66 GB；同目录另有非量化版 <code>V41-MTP-Vision.gguf</code> 8.42 GB）</td>
<td>5.66 GB</td>
<td>Q2_K</td>
<td>Strata（DSpark 投机解码的草稿）</td>
</tr>
<tr>
<td>Engram n-gram 表</td>
<td>同上仓库（需从原权重导出，仓库里是 <code>NEED-TO-DOWNLOAD-ENGRAM.txt</code> 说明）</td>
<td><code>/opt/models/IndrasMirror/V41-Engram/L1</code>、<code>/L14</code></td>
<td>189 GB</td>
<td>外置表，不量化</td>
<td>Strata</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>结构参数</strong>（读 <code>config.json</code> 得到，第 2 节的算术全部基于它）：</p>
<ul>
<li>主干：<code>num_hidden_layers 40</code>、<code>hidden_size 5120</code>、<code>moe_intermediate_size 2304</code>、<code>n_routed_experts 384</code>、<code>n_shared_experts 1</code>、<strong><code>num_experts_per_tok 6</code></strong>、<code>vocab_size 129280</code>、<code>max_position_embeddings 1048576</code>（YaRN factor 16，原始 65536）。</li>
<li>稀疏注意力：<code>compress_ratios</code> 前 20 层为 0/2、21–39 层为 1、末两层为 0；<code>kv_source_layer_ids [2,8,14,20]</code>；<code>index_topk 512</code>。</li>
<li>mHC 超连接：<code>hc_mult 4</code>、<code>hc_sinkhorn_iters 20</code> ← 第 6 节那个 630 MiB OOM 就是这一项算出来的。</li>
<li>Engram：<code>engram_layer_ids [1,14]</code>、<code>engram_vocab_size 16000000</code>、<code>engram_compressed_vocab_size 99092</code>、<code>engram_max_ngram_size 4</code> ← 两张 98 GiB 表的来源。</li>
<li><strong>原生投机解码</strong>：<code>num_nextn_predict_layers 3</code>、<code>dspark_block_size 5</code>、<code>dspark_target_layer_ids [37,38,39]</code>、<code>dspark_markov_rank 256</code>、<code>dspark_n_routed_experts 128</code>、<code>dspark_num_experts_per_tok 3</code> ← Strata 的 DSpark 用的就是模型自带的这套，不是外挂草稿。</li>
</ul>
<p dir="auto"><strong>为什么必须把权重写死</strong>：</p>
<ol>
<li><strong>速度差主要来自这里。</strong> GSQ 那一路每个专家的字节数是 FP4 那一路的 <strong>约 1/1.8</strong>（2.25 bit vs 4 bit），再叠上"一步验 5 个草稿、平均接受 3.39 个"，每个被接受 token 实付 ~0.5 GB 而不是 4.25 GB。50–88 与 25–34 的差距是<strong>字节差</strong>，不是引擎差。</li>
<li><strong>质量代理要一起报。</strong> GSQ 仓库自带的 held-out 口径：三值相对输出误差 0.443 / Q2 0.378 / Q3 0.183，混合方案在同体积下比全 Q2_0 少 17% 输出误差。本机测的质量代理是 PPL 3.0818 / top-1 0.791（Strata 升级到 <code>9d6529fc</code> 前后逐位不变）。</li>
<li><strong>最容易骗人的地方</strong>：三个服务对客户端都报 <code>--served-model-name DeepSeek-V4.1-Flash</code> / <code>model_name: DeepSeek-V4.1-Flash</code>，<code>/v1/models</code> 里长得一模一样，加载的权重完全不同。</li>
<li><strong>采样参数也影响速度</strong>（接受率随采样温度变）：Strata 侧 <code>temperature 1.0 / top_p 0.95</code>，<code>--route-bias 0.25</code>（<code>--route-bias-file 0.15</code>），<code>STRATA_SERVE_PASS_BIAS=0</code>（每个 prompt token 精确路由）。</li>
</ol>
<hr />
<h2>2. 先把物理约束算出来</h2>
<p dir="auto">DeepSeek-V4.1-Flash 的关键结构参数（读 HF <code>config.json</code> 得到）：40 层、hidden 5120、MoE 中间维 2304、每层 384 个专家、<strong>top_k = 6</strong>、第 1/14 层各挂一张 98 GiB 的 Engram n-gram 表。</p>
<p dir="auto">由此可以纯算术地算出解码成本：</p>
<pre><code>单个专家 = 3 × 5120 × 2304 参数 × 0.5 B(fp4) = 17.7 MB
每层每 token 取 6 个专家 → 每 token = 6 × 40 × 17.7 MB = 4.25 GB
全部专家 = 15360 × 17.7 MB = 272 GB   （与加载日志 "275G" 吻合）
</code></pre>
<p dir="auto">这台机器的三条通道实测带宽：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>通道</th>
<th>实测</th>
</tr>
</thead>
<tbody>
<tr>
<td>PCIe H2D（pinned）</td>
<td>25.2 GB/s</td>
</tr>
<tr>
<td>CPU STREAM</td>
<td>512.8 GB/s</td>
</tr>
<tr>
<td>CPU 上跑 MoE GEMV</td>
<td>130.2 GB/s</td>
</tr>
<tr>
<td>L20 显存</td>
<td>~864 GB/s</td>
</tr>
</tbody>
</table>
<p dir="auto">于是单流解码的上界一目了然：</p>
<ul>
<li>全部专家走 PCIe：4.25 GB ÷ 25.2 GB/s = <strong>169 ms/token → 5.9 tok/s</strong></li>
<li>全部专家在 CPU 算：4.25 ÷ 130 = <strong>33 ms → 30 tok/s</strong>（真实路径只有 ~38 GB/s 有效带宽 → 25 tok/s，实测吻合）</li>
<li>全部命中显存缓存：4.25 ÷ 864 = <strong>4.9 ms → 200 tok/s</strong></li>
</ul>
<p dir="auto"><strong>结论一：单流速度只由"每 token 搬多少字节"决定。</strong> 想快只有三条路——把字节变小（更狠的量化）、把字节搬到显存里（提高命中率）、或者一步产出多个 token（投机解码）。调线程数、绑 NUMA、加显存，都不动这三项，实测全部无效或为负。</p>
<p dir="auto">Strata 用的 GSQ 权重把专家压到三值/2bit/3bit，152 GiB 装下整个模型；再叠上 MTP 投机解码（一步验 5 个草稿、平均接受 3.39 个），<strong>每个被接受的 token 实际只付 ~0.5 GB</strong>——这就是 50–88 tok/s 的全部来源，是 8 倍的字节差，不是引擎魔法。</p>
<hr />
<h2>3. 三种架构</h2>
<h3>A. Lvllm：张量并行 + 指定层常驻显存</h3>
<p dir="auto">仓库：<a href="https://github.com/guqiong96/Lvllm" rel="nofollow ugc">https://github.com/guqiong96/Lvllm</a>（vLLM 的 fork，= vLLM + lk_moe + SM80/86/89 适配；上游 <a href="https://github.com/vllm-project/vllm" rel="nofollow ugc">https://github.com/vllm-project/vllm</a>）</p>
<p dir="auto"><code>--tensor-parallel-size 2</code> 占 GPU0+GPU1，<code>--gpu-memory-utilization 0.95</code>，fp8 MLA KV，163K 上下文，<code>--max-num-seqs 2</code>。主机侧关键开关：</p>
<pre><code>LVLLM_ENABLE_MOE_LAYERWISE_LOAD=1        # 逐层加载专家，避免一次性峰值
LVLLM_MOE_NUMA_ENABLED=1 + LVLLM_ENABLE_NUMA_INTERLEAVE=1
LVLLM_GPU_RESIDENT_MOE_LAYERS='0,2,8,14,20-22'   # 指定层专家常驻显存
LVLLM_GPU_PREFETCH_WINDOW=2
</code></pre>
<p dir="auto">思路是"能常驻的层就常驻，其余逐 token 从主机取"。它把 4.25 GB/token 里的一部分变成显存命中，所以能到 34–38 tok/s，比纯 offload 高一档；代价是两张卡、<code>max-num-seqs 2</code>，并发能力被 KV 与显存挤掉。</p>
<h3>B. Strata：低比特 GGUF + CPU 专家池 + MTP 投机解码</h3>
<p dir="auto">仓库：<a href="https://github.com/Indras-Mirror/Strata-DSV4.1" rel="nofollow ugc">https://github.com/Indras-Mirror/Strata-DSV4.1</a>（基于 <a href="https://github.com/Niko1221/Strata" rel="nofollow ugc">https://github.com/Niko1221/Strata</a>）</p>
<p dir="auto">单卡 GPU0，152 GiB 模型全部进常驻内存 arena（<code>--arena-gib 160</code>，文件层 = 0），显存里只留 4288 个专家槽做 LRU，未命中交给 CPU 专家池；<code>V41-MTP-Vision.Q2_K.gguf</code> 做草稿模型，<code>DEPTH=5 / KEEP:128 / CONF=0.6</code>。</p>
<p dir="auto">引擎每步都打印自己的账：</p>
<pre><code>serve: 149 tokens in 2.79 s = 53.00 tok/s | experts: 38543 hit, 5857 cpu, 0 pcie, 0 file
serve: DSpark 44 passes, 3.39 tokens/pass
</code></pre>
<p dir="auto">于是速度变成一个可以拆的公式（上游 345 passes 拟合，R²=0.977）：</p>
<pre><code>verify ms = 25.7 + 5.7×rows + 0.49×PCIe缺失 + 2.93×文件缺失
tok/s    = 每 pass 接受 token 数 ÷ pass 时间
定稿：0 次 PCIe、0 次文件缺失，rows≈6.7 → pass ≈ 62 ms → 3.39/0.062 = 53 tok/s（实测 53.0）
</code></pre>
<p dir="auto"><strong>结论二：速度只有两个独立旋钮——接受率（DEPTH/KEEP/CONF）和 pass 时间（q*，即未命中走不走 PCIe）。</strong> 其余参数都在乘 1。</p>
<h3>C. FreeToken：pinned 专家库 + 按带宽比例分流</h3>
<p dir="auto">仓库：<a href="https://github.com/FlashML-org/FreeToken" rel="nofollow ugc">https://github.com/FlashML-org/FreeToken</a></p>
<p dir="auto">Python 引擎，直接读 HF safetensors。专家放在 <strong>pinned 主机库</strong>（275 GB 全部进内存，加载 100 s @ 2.7 GB/s），显存只留一个 slot cache。四种策略：</p>
<ul>
<li><code>fused</code> 全部常驻显存（275 GB &gt; 48 GB，本模型不可用）</li>
<li><code>offload</code> 未命中全部 PCIe 搬上卡</li>
<li><code>cpu</code> 未命中全部在 CPU 算</li>
<li><code>hybrid</code> 每层最多取 K 个未命中走 PCIe，其余在 CPU 算，两条路重叠</li>
</ul>
<p dir="auto"><code>auto</code> 会读 <code>ft bench bw</code> 的机器画像来选：本机 CPU-MoE/PCIe = <strong>5.17×</strong> → 选 <code>hybrid</code>，每步只把 14.7% 的缺失走 PCIe。</p>
<hr />
<h2>4. 实测对照</h2>
<h3>4.1 单流解码</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>配置</th>
<th>单流 decode</th>
</tr>
</thead>
<tbody>
<tr>
<td>Strata 定稿（短回复 / 枚举 / 自由散文）</td>
<td><strong>87.7 / 78.1 / 51.6</strong></td>
</tr>
<tr>
<td>Lvllm TP2（日志中位 / 峰值）</td>
<td>34.5 / 38.2（10-15 20 时窗口峰值 48.8）</td>
</tr>
<tr>
<td>FreeToken <code>hybrid</code>（auto 选的）</td>
<td><strong>25.7</strong></td>
</tr>
<tr>
<td>FreeToken <code>cpu</code></td>
<td>26.0</td>
</tr>
<tr>
<td>FreeToken <code>offload</code></td>
<td>14.6</td>
</tr>
<tr>
<td>FreeToken <code>hybrid --moe-hybrid-max-fetch 2</code></td>
<td>17.3</td>
</tr>
<tr>
<td>FreeToken <code>hybrid --moe-cpu-threads 32</code></td>
<td>26.1</td>
</tr>
<tr>
<td>Strata 调优起点（模型卡默认，未调）</td>
<td>18.2</td>
</tr>
</tbody>
</table>
<h3>4.2 并发（FreeToken，客户端端到端含 TTFT / 引擎侧稳态）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>并发</th>
<th>客户端聚合</th>
<th>单流 decode</th>
<th>引擎侧稳态</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>9.9</td>
<td>25.3</td>
<td>23</td>
</tr>
<tr>
<td>4</td>
<td>17.4</td>
<td>11.3</td>
<td>53.5</td>
</tr>
<tr>
<td>8</td>
<td>32.9</td>
<td>8.2</td>
<td>66–73</td>
</tr>
<tr>
<td>16</td>
<td>53.5</td>
<td>5.6</td>
<td><strong>~100</strong></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>结论三：三种架构各自占住一条边。</strong> Lvllm 用两张卡换 30+ 的中等单流；Strata 用低比特 + 投机解码拿到自由文本 50、模板化内容 78–88 的单流上限；FreeToken 单流最慢，但它是三者里唯一把并发做起来的（C=16 聚合 ~100 tok/s，因为一批请求共享同一批专家，搬一次字节服务 16 个 token）。</p>
<h3>4.3 上下文</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>架构</th>
<th>实测上下文</th>
</tr>
</thead>
<tbody>
<tr>
<td>Lvllm</td>
<td>163840（受 KV 与显存限制）</td>
</tr>
<tr>
<td>Strata</td>
<td>256K 实测可用（+0.77 GiB），196K 预填充 331.6 tok/s，解码 @197K 从 53 掉到 33.67（注意力 +40% 且接受率 2.8→1.98）</td>
</tr>
<tr>
<td>FreeToken</td>
<td>1048576（配置值），12k prompt 实测 TTFT 13.9 s</td>
</tr>
</tbody>
</table>
<hr />
<h2>5. 每个引擎的"决定性那一个开关"</h2>
<p dir="auto">三个引擎各有一个开关，值 20–30 个百分点，其余参数都在噪声里。</p>
<p dir="auto"><strong>Strata：<code>STRATA_TIER_BATCH_PCIE=0.0</code>（27.8 → 53.1）。</strong><br />
它是 DSpark <strong>验证步</strong>自己的 PCIe 份额，默认 1.0 = 验证步里每个缺失都用 DMA 搬上卡（作者在 4090 上这样最快）。本机 CPU 池强、显存槽多（4288），验证步每 token 只有 37 个缺失，全交给 CPU 池远快过搬卡。<code>--pcie</code> 只管单 token 路径，管不到验证步——这就是之前卡在 33 的原因。<br />
第二档是 <code>STRATA_DSPARK_KEEP=…:128</code>：counts 文件每层正好 128 项 = 不剪草稿专家，接受率 2.85 → <strong>3.39 tok/pass</strong>（<code>:192</code> 直接触发 <code>GGML_ASSERT</code> 崩）。</p>
<p dir="auto"><strong>Lvllm：<code>LVLLM_GPU_RESIDENT_MOE_LAYERS</code>。</strong><br />
把指定层的专家钉在显存里，命中即免费。选哪些层是显存预算问题，不是算法问题。</p>
<p dir="auto"><strong>FreeToken：<code>ft bench bw</code> 的画像 → <code>hybrid</code>。</strong><br />
它把"要不要走 PCIe"变成按实测带宽比例解的优化题：<code>f/(1-f) = PCIe有效/CPU有效</code>。实测三档（14.7% / 33% / 100%）呈 U 形，最低点就在 auto 选的 14.7% 附近——<strong>auto 的判断被 A/B 证实了</strong>，offload 单流慢 1.7×、并发慢 3.5×。</p>
<hr />
<h2>6. 负结果清单</h2>
<p dir="auto"><strong>Strata（15 档 A/B，全部为负或噪声内）</strong>：<code>--threads 128</code>（26.7，全核互踩）、<code>--threads 64</code>（无收益）、<code>numactl --cpunodebind=0</code> 软绑（31.3，96 线程挤 64 逻辑核超订）、严格 membind（更差）、<code>--skip-miss 0.01/0.02/0.05</code>（无收益且改路由有质量风险）、<code>--vram-margin 0.5</code>、<code>STRATA_LRU_WIN=8</code>、<code>STRATA_PROMPT_BATCH=12288</code>（<strong>解码 −18%</strong>，接受率 3.39→2.74；上游的 +21.5% 是 prefill，本机解码付不起）、<code>STEP_MAX=512</code>。<br />
唯一白捡的是 <code>DS4_NUMA=0 + DS4_THREADS=48</code>：引擎侧计数<strong>逐位相同</strong>（不改一个 token），只把线程落点收到 GPU0 所在 node0，方差 σ 8.3 → 0.2，共驻时不掉速。</p>
<p dir="auto"><strong>FreeToken</strong>：<code>--moe-strategy offload</code>（−43%）、<code>--moe-cpu-threads 32</code>（单流无收益、并发 −26%）、<code>--moe-hybrid-max-fetch 2</code>（−35%）。<br />
采样定位很干脆：单流解码时 <strong>GPU0 util = 0%</strong>，63 个 CPU 线程 99.9% —— 瓶颈在 CPU 侧的每层同步与有效带宽（实测 ~38 GB/s，远低于 130 GB/s 的微基准），不在显存、不在 PCIe。</p>
<p dir="auto"><strong>Lvllm</strong>：把 <code>gpu-memory-utilization</code> 从 0.9 推到 0.95、TP 从 GPU0+GPU1 换到 GPU0+GPU2，单流都没变快（跨 NUMA 反而更差）。日志里同一份配置的"平均生成吞吐"从 1.0 到 48.8 tok/s 都出现过——<strong>任何不带测量协议的单点数字都没有意义</strong>。</p>
<p dir="auto"><strong>长上下文的坑（FreeToken）</strong>：服务在真实客户端发来 ≥8192 token 的 prompt 时 OOM 崩，栈在 Engram 层。原因是 Engram 的 fp32 中间量 = <code>hc_mult 4 × hidden 5120 × 4 B</code> = <strong>81.9 KB/token</strong>，而 <code>--max-prefill-length</code> 默认 8192 → 单块 630 MiB，正好等于崩溃时申请失败的那 630.00 MiB。修复：<code>--memory-ratio 0.8</code>（留 8.92 GiB）+ <code>--max-prefill-length 4096</code>（中间量减半），12k prompt 复测通过。<br />
<strong>这类 bug 只能靠"申请失败的大小 = 公式算出的大小"来定案，不能靠猜。</strong></p>
<hr />
<h2>7. 让数字可信的四条纪律</h2>
<ol>
<li><strong>交错 A/B，不要顺序测。</strong> 单窗口顺序测会被机器负载污染：base 撞上 GPU util 99% 时测得 68.7/40.7，同一档在空闲窗口是 85.2/49.7。改成 base/t48/rb05 三档轮换 3 轮，每档重启 + 暖机 + 测一遍，并记录同期 GPU util。</li>
<li><strong>引擎侧计数是"有没有改变输出"的裁判。</strong> t48 的 <code>45 passes, 3.31 tokens/pass</code> 与基线逐位相同 → 它买的是机器争用，可以白捡；<code>--route-bias 0.5/0.3</code> 的接受率从 3.31 变 2.89、枚举那档少生成 660 个 token → 它换了输出，是拿质量换的（官方 top-1 −3.5 pt），不做默认。</li>
<li><strong>速度取决于内容。</strong> 同一台机器、同一份权重、同一个配置：定长枚举 77–78 tok/s，自由散文 50–53 tok/s。任何"我的模型能跑 X tok/s"都要说清测的是什么内容。</li>
<li><strong>共驻负载要写进结论。</strong> 本机 GPU3 的 Qwen 服务持续生成时，Strata 的 50–52 会掉到 32–45。两个引擎抢的是 CPU 与内存带宽，被抢走的正是 pass 时间。</li>
</ol>
<hr />
<h2>8. 选型建议</h2>
<ul>
<li><strong>要单流最快、以对话/写作为主</strong> → Strata 路线：低比特 GGUF + MTP 投机解码。自由散文 50–52 是这台机器的上限，模板化/枚举内容 78–88。</li>
<li><strong>要高并发吞吐（多用户、批处理、agent 后端）</strong> → FreeToken 路线：C=16 聚合 ~100 tok/s，1M 上下文，直接吃 HF 权重；单流 25 是它的短板，别用它做单人流式对话。</li>
<li><strong>要现成的生态与工具链（OpenAI 兼容、prefix caching、chunked prefill）</strong> → Lvllm 路线：34–38 tok/s，代价是两张卡与 <code>max-num-seqs 2</code>。</li>
</ul>
<hr />
<h2>9. 附录：定稿配置</h2>
<p dir="auto">三个架构的仓库（本机对应 checkout）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>架构</th>
<th>仓库</th>
<th>本机 checkout</th>
<th>定稿所用 commit / 版本</th>
</tr>
</thead>
<tbody>
<tr>
<td>Lvllm</td>
<td><a href="https://github.com/guqiong96/Lvllm" rel="nofollow ugc">https://github.com/guqiong96/Lvllm</a>（fork 自 <a href="https://github.com/vllm-project/vllm" rel="nofollow ugc">https://github.com/vllm-project/vllm</a>，= vLLM + lk_moe）</td>
<td><code>/opt/Lvllm</code>，conda env <code>Lvllm</code></td>
<td><code>bd88fa1244</code>（branch <code>upgrade-v0.31.0</code>）/ <code>lvllm 0.31.1.dev352+g767a15c1f.cu132</code></td>
</tr>
<tr>
<td>Strata</td>
<td><a href="https://github.com/Indras-Mirror/Strata-DSV4.1" rel="nofollow ugc">https://github.com/Indras-Mirror/Strata-DSV4.1</a>（基于 <a href="https://github.com/Niko1221/Strata" rel="nofollow ugc">https://github.com/Niko1221/Strata</a>）</td>
<td><code>/opt/Strata-DSV4.1</code></td>
<td><code>9d6529fc</code> + 本地 <code>kv-fp4.patch</code></td>
</tr>
<tr>
<td>FreeToken</td>
<td><a href="https://github.com/FlashML-org/FreeToken" rel="nofollow ugc">https://github.com/FlashML-org/FreeToken</a></td>
<td><code>/opt/FreeToken</code>，conda env <code>FreeToken</code></td>
<td><code>e5d3bd3</code> / <code>freetoken 0.1.3</code></td>
</tr>
</tbody>
</table>
]]></description><link>https://lcz.me/topic/2356</link><generator>RSS for Node</generator><lastBuildDate>Sun, 25 Oct 2026 00:57:19 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2356.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Oct 2026 09:00:19 GMT</pubDate><ttl>60</ttl></channel></rss>