<?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[在 Proxmox VE +Ubuntu24.04虚拟机+AMD AI Pro R9700部署vLLM 服务器Agent 长链稳定性与速度测评（局域网客户机实测）]]></title><description><![CDATA[<h1>vLLM 服务器 Agent 长链稳定性与速度测评报告</h1>
<p dir="auto"><strong>被测服务</strong>：<code>http://192.168.67.202:8000</code>（vLLM 0.27.1，OpenAI 兼容 API）<br />
<strong>模型</strong>：<code>qwen3.8-27b-int4</code>（Qwen3 混合思考模型，INT4 量化，<code>max_model_len = 131072</code>）<br />
<strong>评测时间</strong>：2026-09-16 22:27–23:30（本地时间，UTC+8；服务进程已运行约一天）<br />
<strong>评测规模</strong>：15 轮单连续会话长链（660 次模型调用，峰值上下文 44,776 tokens）+ 基线 13 请求 + 思考模式对照 54 调用 + 对照实验 222 调用，全程约 <strong>1,100 次模型调用</strong></p>
<p dir="auto">（备注：DSH：已设置会话70%的压缩、未安装任何Agent调用工具）</p>
<hr />
<h2>一、结论摘要（TL;DR）</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>维度</th>
<th>结论</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>传输层稳定性</strong></td>
<td><strong>极佳</strong>：全程 ~1,100 次调用 <strong>0 次连接/超时错误</strong>，SSE 流式解析 0 坏帧，工具调用 JSON 0 次解析失败</td>
</tr>
<tr>
<td><strong>任务级稳定性</strong></td>
<td>主评测 15 轮通过 7 轮（46.7%），但<strong>失败高度集中在两类</strong>：① T2 长链在 n≥32 时 100% 失败（全新短上下文对照同样失败 → <strong>模型内在弱点</strong>，非服务/上下文污染）；② 主评测 T3 存在<strong>评测侧设计缺陷</strong>（知识库仅 12 条，n&gt;12 轮任务被截断），修正后 T3 在新会话中 4/5 通过且步数分毫不差</td>
</tr>
<tr>
<td><strong>速度（轻载）</strong></td>
<td>单流解码 <strong>77 tok/s</strong>（p50 78 / p95 89），工具调用 JSON 可达 <strong>~100 tok/s</strong>（投机解码加成）；TTFT 从 0.8k 上下文的 ~0.6s 增至 45k 上下文的 ~2.3s；<strong>前缀缓存命中时 TTFT 降至 ~1.4–2.0s（比冷 prefill 快 10–50 倍）</strong></td>
</tr>
<tr>
<td><strong>速度（重载/共享）</strong></td>
<td>评测窗口内观察到<strong>间歇外部负载</strong>：3 次 TTFT 尖峰（34.4s / 38.4s / <strong>193.8s</strong>），期间解码速率从 ~100 跌至 24–29 tok/s → <strong>共享 GPU 场景下尾延迟不可控，p99 与 p95 差距巨大</strong></td>
</tr>
<tr>
<td><strong>思考模式</strong></td>
<td><strong>思考 ON 显著劣于 OFF</strong>：同任务平均单步延迟 5.76s vs 2.03s（2.8×）、输出 token 192 vs 38（5×）、有效速率 43.5 vs 78.6 tok/s，且 ON 失败、OFF 通过 → <strong>工具/Agent 类任务建议关闭 thinking</strong></td>
</tr>
<tr>
<td><strong>容量</strong></td>
<td>500 步长链峰值上下文 44.8k（131k 上限的 34%），<strong>容量充足</strong>；KV cache 评测后残留占用 &lt;12%，空闲时自动回收</td>
</tr>
</tbody>
</table>
<hr />
<hr />
<h2>二、测试环境与方法</h2>
<hr />
<h3>2.1 服务端信息</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>项</th>
<th>值</th>
</tr>
</thead>
<tbody>
<tr>
<td>框架 / 版本</td>
<td>vLLM 0.27.1（<code>/v1</code> 路由，OpenAI 兼容）</td>
</tr>
<tr>
<td>模型</td>
<td>qwen3.8-27b-int4（INT4 量化，根目录 <code>/model</code>）</td>
</tr>
<tr>
<td>max_model_len</td>
<td>131,072 tokens</td>
</tr>
<tr>
<td>投机解码</td>
<td><strong>开启</strong>（4 位 MTP 草稿；服务进程累计：草稿 335,724 / 接受 208,590+，<strong>整体接受率 ~62%</strong>，pos0–3 逐位接受率 77% / 57% / 43% / 34%）</td>
</tr>
<tr>
<td>前缀缓存</td>
<td><strong>开启</strong>（重复 prompt 二次请求 TTFT 10–50× 下降，见 §4.1）</td>
</tr>
<tr>
<td>评测期间并发</td>
<td>评测为单客户端串行；<code>/metrics</code> 显示进程累计 prompt 26.5M / generation 314K tokens（含评测前的其他流量），且评测中 TTFT 出现与外部负载相关的尖峰（§4.4）</td>
</tr>
</tbody>
</table>
<hr />
<h3>2.2 指标定义</h3>
<ul>
<li><strong>TTFT</strong>：请求发出 → 首个非空 delta（content 或 tool_call）的间隔。</li>
<li><strong>总延迟</strong>：请求发出 → 流结束。</li>
<li><strong>out_tps</strong>（有效输出速率）：<code>completion_tokens / (总延迟 − TTFT)</code>。</li>
<li><strong>冷 prefill 速率</strong>：<code>prompt_tokens / 冷请求 TTFT</code>；<strong>热请求</strong>（前缀缓存命中）TTFT 单独统计。</li>
<li>所有请求 <code>temperature=0</code>、<code>top_p=1</code>、SSE 流式 + <code>stream_options.include_usage=true</code>，逐请求记录 usage。</li>
</ul>
<hr />
<h3>2.3 任务设计</h3>
<p dir="auto">三类任务，同一会话内连续 15 轮，上下文逐轮累积（单会话长链，正是 Agent 长任务的真实形态）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>任务</th>
<th>内容</th>
<th>轮数</th>
<th>期望模型调用数</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>T1 顺序检索+汇总</strong></td>
<td>顺序调用 <code>fetch_record</code> 取 N 条记录（N=24→40 递增），最后报 <code>sum/max_id</code></td>
<td>5</td>
<td>2N+1</td>
</tr>
<tr>
<td><strong>T2 顺序计算链</strong></td>
<td>每步用 <code>calculator</code> 执行 <code>X_i=(2·X_{i-1}+B_i) mod 997</code>，共 N 步（N=24→40），报终值。B 序列为 7 元素周期（[18,31,44,57,70,83,5] 重复）</td>
<td>5</td>
<td>N+1</td>
</tr>
<tr>
<td><strong>T3 双工具工作流</strong></td>
<td>每个关键词依次 <code>search_kb</code>→<code>write_log</code>（每响应至多 1 个工具调用），最后报 count/total_chars</td>
<td>5</td>
<td>2N+1</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>反馈策略（贴近真实 Agent 框架）</strong>：最终答案不合规则回灌 feedback 重试（最多 2 次）；单轮预算 = 期望步数 + 20；连续 5 次传输错误判该轮失败。</p>
<p dir="auto"><strong>对照组</strong>：</p>
<ul>
<li><strong>基线</strong>：无工具、固定 128-max 输出的 prefill/decode 扫描，512→99k tokens 共 6 档、13 请求（2–3 重复，首请求为冷）。</li>
<li><strong>思考对照</strong>：同一 T1(n=24) 任务、全新会话，<code>enable_thinking</code> ON vs OFF 各 1 轮。</li>
<li><strong>T2 对照</strong>：全新短上下文（无前序轮历史）单独跑 n=32/40/28/24，用于区分"长上下文污染"与"模型内在能力边界"，并<strong>逐记录 calculator 表达式</strong>以精确定位漂移点。</li>
<li><strong>T3 修正版</strong>：扩充知识库至 21 条（消除截断），终答改为 <code>last_capital</code> 字符串（消除字符计数），全新会话 5 轮 n=12→20。</li>
</ul>
<blockquote>
<p dir="auto">说明：冒烟测试（2 轮 18 步）与正式运行共用日志文件，分析脚本已按首个 setup 时间戳过滤，<strong>正式运行 15 轮 660 次调用全部独立于冒烟数据</strong>。</p>
</blockquote>
<hr />
<h2>三、稳定性结果</h2>
<hr />
<h3>3.1 传输层：0 故障</h3>
<hr />
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>指标</th>
<th>值</th>
</tr>
</thead>
<tbody>
<tr>
<td>全程模型调用</td>
<td>~1,100（主 660 + 思考 54 + 对照 222 + 基线 13 + 扩展 5）</td>
</tr>
<tr>
<td>连接/超时/流中断</td>
<td><strong>0</strong></td>
</tr>
<tr>
<td>SSE 坏帧 / 工具参数 JSON 解析失败</td>
<td><strong>0</strong></td>
</tr>
<tr>
<td>服务器主动错误响应</td>
<td>0</td>
</tr>
</tbody>
</table>
<h2>传输层在整个评测窗口（含长上下文 44.8k、含外部负载尖峰时段）<strong>没有任何一次失败</strong>。vLLM 的 HTTP/SSE 层可靠性完全满足 Agent 长链需求。</h2>
<hr />
<h3>3.2 主评测 15 轮总览</h3>
<pre><code>轮次   任务   N    期望步  实际步   结果    用时(s)
 1    T1    24     25      26     ✓      46.3
 2    T1    28     29      30     ✓      66.5
 3    T1    32     33      34     ✓      78.4
 4    T1    36     37      38     ✓     123.1
 5    T1    40     41      42     ✓     100.5
 6    T2    24     25      25     ✓      91.8
 7    T2    28     29      29     ✓      66.8
 8    T2    32     33      54     ✗     159.7   (final_wrong×2 + 超预算)
 9    T2    36     37      58     ✗     136.4   (final_wrong + 超预算)
10    T2    40     41      62     ✗     185.8   (final_wrong + 超预算)
11    T3    12     25      46     ✗     152.5   (final_wrong×2 + 超预算)
12    T3    14     29      50     ✗     139.1   (超预算, 无最终答案)
13    T3    16     33      54     ✗     155.6   (final_wrong + 超预算)
14    T3    18     37      58     ✗     140.6   (final_wrong + 超预算)
15    T3    20     41      62     ✗     ~150    (final_wrong + 超预算)

合计: 15 轮 / 660 次模型调用 / 通过 7 轮 (46.7%) / nudge 9 次 / 传输错误 0
事件: final_wrong ×9, step_budget_exceeded ×8
</code></pre>
<hr />
<p dir="auto"><img src="https://upload.lcz.me/uploads/9e32d8e1-853a-4062-9a36-851de11472f9.jpeg" alt="6a2d86af-f84b-4e55-b406-3c77145ec5f9-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>分任务通过率：T1 = 5/5（100%），T2 = 2/5（40%），T3 = 0/5（0%）</strong></p>
<hr />
<h3>3.3 T1：完全稳定（5/5），仅存在无害的协议偏差</h3>
<p dir="auto">5 轮全部一次通过、0 nudge。唯一系统性偏差：<strong>每轮比期望多 1 次 calculator 调用</strong>——模型在取完 N 条记录后，倾向用一次 calculator 把所有值加总（而非心算），再给出最终 JSON。这是<strong>协议偏差而非故障</strong>（结果全部正确），说明该模型对"数值计算交给工具"的偏好很强，对 Agent 系统是好事。</p>
<hr />
<h3>3.4 T2：可靠性在 n≥32 处出现"悬崖"——且是模型内在弱点</h3>
<hr />
<p dir="auto"><strong>T2 全部 10 次尝试的完整矩阵（含全新会话对照）：</strong></p>
<p dir="auto"><img src="https://upload.lcz.me/uploads/cec94f53-0ca5-4dbc-8cd6-ebca2bba983b.jpeg" alt="a3399ba4-47c6-46e4-b704-2c13587f3c16-image.jpeg" class="img-markdown  img-fluid" /></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>链长 n</th>
<th>主评测（长上下文 ~20–26k）</th>
<th>全新会话对照</th>
<th>小计</th>
</tr>
</thead>
<tbody>
<tr>
<td>6</td>
<td>—</td>
<td>冒烟 PASS</td>
<td>1/1</td>
</tr>
<tr>
<td>24</td>
<td>R6 <strong>PASS</strong>（25 步精确）</td>
<td>C5 <strong>FAIL</strong>（44 次 calculator 调用，失控续算，无最终答案）</td>
<td>2/3</td>
</tr>
<tr>
<td>28</td>
<td>R7 <strong>PASS</strong>（29 步精确）</td>
<td>C4 <strong>PASS</strong>（30 步精确）</td>
<td>2/2</td>
</tr>
<tr>
<td>32</td>
<td>R8 <strong>FAIL</strong>（43 次调用，答 689，真值 109）</td>
<td>C1 <strong>FAIL</strong>（32 次调用数正确，答 304）</td>
<td><strong>0/2</strong></td>
</tr>
<tr>
<td>36</td>
<td>R9 <strong>FAIL</strong>（43 次调用，答 257，真值 670）</td>
<td>—</td>
<td>0/1</td>
</tr>
<tr>
<td>40</td>
<td>R10 <strong>FAIL</strong>（失控续算，答 996，真值 361）</td>
<td>C2 <strong>FAIL</strong>（答 930，真值 361）</td>
<td><strong>0/2</strong></td>
</tr>
</tbody>
</table>
<hr />
<p dir="auto"><strong>总计 4/10 通过。三个关键事实：</strong></p>
<ol>
<li><strong>n≤28 基本可靠（5/7），n≥32 全部失败（0/5）</strong>——主评测长上下文与全新短上下文<strong>同样全败</strong>，排除"长上下文污染"作为主因，这是模型对长重复序列的<strong>内在能力边界</strong>。</li>
<li><strong>失败机理已精确定位</strong>（对照 C1 逐记录 calculator 参数）：B 序列是 7 元素周期（[18,31,44,57,70,83,5] 重复 4–5 遍）。模型前 28 步（前 4 个完整周期）<strong>每一步完全正确</strong>，<strong>第 29 步（第 5 个周期的第 1 个元素）把 B 读成了 31 而非 18</strong>——即在印刷的重复列表上<strong>索引错位</strong>，之后链值持续漂移（304 ≠ 真值 109，且不等于任何中间真值）。调用次数本身是对的（32 次），纯粹是"从重复列表里取错第几个"。</li>
<li><strong>偶发"工具固化/失控"</strong>：C5（n=24，历史上 2 次通过过的长度）一次出现 44 次 calculator 调用、越过目标后持续续算且始终不产出最终答案直到预算耗尽；R10 主评测同样失控。即<strong>即使任务难度可靠，模型仍有 ~1/3 概率进入重复调用循环</strong>（n=24 上 1/3）。</li>
</ol>
<hr />
<h3>3.5 T3：主评测 0/5 的主要原因是评测侧缺陷 + 字符计数弱点；修正后 4/5</h3>
<p dir="auto">逐轮分析显示一个统一模式：<strong>每轮前 24 步（12 组 search+log）执行完全正确</strong>，之后才出问题。查明原因有三层：</p>
<ol>
<li><strong>评测侧缺陷（我方）</strong>：知识库只有 12 条，n&gt;12 的轮（R12–R15）关键词列表被截断成同样的 12 个，而期望答案仍按 n 计算 count——模型即使把 prompt 里全部 12 个关键词做对，<code>count</code> 也与"期望"不符 → 结构性必败。</li>
<li><strong>字符计数是 LLM 硬弱点</strong>：终答含 <code>total_chars</code>（12 句事实的字符总数）。模型无法心算精确字符数，转而在结尾<strong>连打 calculator</strong>（把每句长度当字面量代入求和）：R11 连打 3 次（361/385，真值 399）、<strong>R12 连打 25 次仍无最终答案</strong>、R13–R15 类似。即"精确字符计数"这一要求本身超出了模型的可靠能力。</li>
<li><strong>长上下文叠加</strong>：此时上下文已达 26–45k tokens，含 7 个前序轮的全部工具往来，上述弱点在长上下文下更容易触发（R11 反馈后甚至重新搜索 12 遍关键词做"复核"）。</li>
</ol>
<hr />
<p dir="auto"><strong>修正版 T3</strong>（21 条知识库消除截断；终答改为 <code>last_capital</code> 字符串，不要求任何算术；全新短上下文）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>轮</th>
<th>n</th>
<th>结果</th>
<th>实际步数</th>
<th>期望步数</th>
</tr>
</thead>
<tbody>
<tr>
<td>r1</td>
<td>12</td>
<td><strong>FAIL</strong>（24 步工具工作全部正确后进入 16 连 calculator 固化，无最终答案，超预算）</td>
<td>40</td>
<td>25</td>
</tr>
<tr>
<td>r2</td>
<td>14</td>
<td><strong>PASS</strong></td>
<td>29</td>
<td>29</td>
</tr>
<tr>
<td>r3</td>
<td>16</td>
<td><strong>PASS</strong></td>
<td>33</td>
<td>33</td>
</tr>
<tr>
<td>r4</td>
<td>18</td>
<td><strong>PASS</strong></td>
<td>37</td>
<td>37</td>
</tr>
<tr>
<td>r5</td>
<td>20</td>
<td><strong>PASS</strong></td>
<td>41</td>
<td>41</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>4/5 通过，且通过的轮步数与期望分毫不差</strong>（2N+1 一次不多一步）。结论：<strong>T3 这类双工具顺序工作流本身对该模型是可靠的</strong>；主评测 T3 的 0/5 = 我方设计缺陷 × 字符计数弱点 × 长上下文三重叠加，而非工作流能力缺失。r1 的固化再次印证 §3.4 的"工具固化"模式（10 次 T3 类运行中出现 2 次：R12 与 r1，均发生在完成全部工具工作之后）。</p>
<hr />
<h3>3.6 稳定性总结论</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>层级</th>
<th>评级</th>
<th>依据</th>
</tr>
</thead>
<tbody>
<tr>
<td>传输/协议层</td>
<td><strong>A（优秀）</strong></td>
<td>~1,100 次调用 0 故障</td>
</tr>
<tr>
<td>短任务（≤30 步，无重复序列/无精确计数）</td>
<td><strong>A</strong></td>
<td>T1 5/5；T3 修正版 4/5</td>
</tr>
<tr>
<td>长重复计算链（n≥32 的 7 周期序列）</td>
<td><strong>C（不可用）</strong></td>
<td>5/5 全败，新旧上下文一致，机理=重复列表索引错位</td>
</tr>
<tr>
<td>边界长度（n=24 左右）</td>
<td><strong>B</strong></td>
<td>2/3，1/3 概率失控循环</td>
</tr>
<tr>
<td>要求精确字符/数值心算的终答</td>
<td><strong>C</strong></td>
<td>模型会绕过（连打 calculator）但仍错，或陷入固化</td>
</tr>
</tbody>
</table>
<hr />
<h2>四、速度结果</h2>
<hr />
<h3>4.1 基线：prefill 与缓存（13 请求，512–99k tokens）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>实际 prompt tokens</th>
<th>冷 TTFT</th>
<th>冷 prefill 速率</th>
<th>热 TTFT（前缀缓存命中）</th>
<th>热/冷加速</th>
</tr>
</thead>
<tbody>
<tr>
<td>524</td>
<td>0.42s（1 次）/ 2.20s（1 次，外部负载）</td>
<td>1,254 / 238 tok/s</td>
<td>0.50s</td>
<td>—</td>
</tr>
<tr>
<td>2,174</td>
<td>1.35s / 1.35s</td>
<td><strong>1,616 tok/s</strong></td>
<td>1.35s</td>
<td>1.0×（无新前缀增量）</td>
</tr>
<tr>
<td>8,624</td>
<td>5.25s</td>
<td>1,642 tok/s</td>
<td>1.40s</td>
<td><strong>3.7×</strong></td>
</tr>
<tr>
<td>34,574*</td>
<td>18.5s</td>
<td>1,864 tok/s</td>
<td>1.71s</td>
<td><strong>10.8×</strong></td>
</tr>
<tr>
<td>65,124</td>
<td>48.1s</td>
<td>1,354 tok/s</td>
<td>1.97 / 1.99s</td>
<td><strong>~24×</strong></td>
</tr>
<tr>
<td>99,374</td>
<td>31.9s</td>
<td>3,111 tok/s</td>
<td><strong>193.8s（外部负载尖峰，异常值）</strong></td>
<td>正常时应 ~2–3×</td>
</tr>
</tbody>
</table>
<p dir="auto">* 该档首版 padding 估算不足，实际 34.6k；后补 65k/99k 两档。</p>
<p dir="auto"><strong>要点</strong>：</p>
<ul>
<li><strong>冷 prefill 实测 1.3–3.1k tok/s</strong>（随 chunked-prefill 与负载波动），100k 上下文冷启动 ~32s，65k ~48s——<strong>超长上下文的冷启动是该服务的主要延迟来源</strong>。</li>
<li><strong>前缀缓存收益巨大且稳定</strong>：重复前缀的热请求 TTFT 恒定在 <strong>1.3–2.0s</strong>（无论前缀 2k 还是 99k），比冷 prefill 快 <strong>10–24 倍</strong>。对"系统提示词+工具定义固定、历史累积"的 Agent 长会话，vLLM 的前缀缓存把每步成本压到只 prefill 增量——这正是本次主评测 500+ 步仍能保持 2.3s/步的根本原因。</li>
<li>1024 档的"冷"快/慢倒挂与 99k 热请求 194s 尖峰均指向同一原因：<strong>评测窗口存在间歇外部负载</strong>（§4.4）。</li>
</ul>
<p dir="auto"><img src="https://upload.lcz.me/uploads/0221bb20-09a2-4cb0-9d15-fe86cafddcae.jpeg" alt="ea2c5077-006b-4283-9f2d-b7019219eb5a-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>[冷/热 TTFT]</strong><br />
<img src="https://upload.lcz.me/uploads/afeaa40e-4c20-4982-9fe6-d1a6d889937b.jpeg" alt="91e61f0f-b086-4c70-b46d-b460aedf5d62-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>[基线速率]</strong></p>
<hr />
<h3>4.2 解码速率：77 tok/s 均值，受"输出可预测性"显著调制</h3>
<ul>
<li><strong>主评测 660 步</strong>：out_tps 均值 <strong>77.0</strong>，p50 78.3，p95 88.7，min 1.8（该点即 38.4s 尖峰步）。</li>
<li><strong>对照诊断</strong>（同服务同窗口，~500–900 tokens 上下文）：
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>输出类型</th>
<th>实测 tok/s</th>
</tr>
</thead>
<tbody>
<tr>
<td>工具调用 JSON（~40 tok，高可预测）</td>
<td><strong>98.9 – 101.6</strong></td>
</tr>
<tr>
<td>自然语言摘要（22–38 tok）</td>
<td><strong>61.2</strong></td>
</tr>
<tr>
<td>强制重复词（63 tok）</td>
<td>46.5</td>
</tr>
</tbody>
</table>
</li>
<li><strong>机理</strong>：服务端开启 <strong>4 位 MTP 投机解码</strong>（整体接受率 ~62%，pos0 77%）。工具调用 JSON 结构高度可预测 → 草稿接受率高 → 有效速率接近 100 tok/s；自由 prose 接受率低 → 60 上下；评测初期基线窗口的 24–29 tok/s 则是<strong>外部负载压制</strong>（同窗口诊断重测已恢复 46–100）。</li>
<li>对 Agent 负载的含义：<strong>该服务上"以工具调用为主的 Agent 循环"比"长文生成"更快</strong>，这是投机解码的结构性红利。</li>
</ul>
<p dir="auto"><img src="https://upload.lcz.me/uploads/a6d47652-de57-4225-b433-e79b76dc4e31.jpeg" alt="43b79f55-d352-4e15-b440-dc2363f3c770-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>[解码 vs 上下文]</strong></p>
<hr />
<h3>4.3 长链过程中的延迟-上下文关系（主评测 15 轮）</h3>
<p dir="auto"><img src="https://upload.lcz.me/uploads/8782d17a-46d6-4327-a54d-e08b95b2eada.jpeg" alt="7621bb9c-cdd6-47ec-91be-e1560a02d854-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>[TTFT vs 上下文]</strong><br />
<img src="https://upload.lcz.me/uploads/dca6f96f-8d5b-494e-b46e-fd31a2f43e9f.jpeg" alt="627eff51-bb53-4d23-a80b-46134f6742ae-image.jpeg" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>[时间线]</strong></p>
<p dir="auto"><strong>按上下文四分位统计（660 步）：</strong></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>上下文区间（tokens）</th>
<th>步数占比</th>
<th>TTFT 均值</th>
<th>总延迟均值</th>
<th>out_tps 均值</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.8k – 14.9k</td>
<td>Q1</td>
<td>1,852 ms</td>
<td>2,416 ms</td>
<td>75.9</td>
</tr>
<tr>
<td>14.9k – 25.9k</td>
<td>Q2</td>
<td>2,296 ms</td>
<td>2,804 ms</td>
<td>77.7</td>
</tr>
<tr>
<td>26.0k – 35.8k</td>
<td>Q3</td>
<td>2,357 ms</td>
<td>3,186 ms</td>
<td>77.2</td>
</tr>
<tr>
<td>35.9k – 44.8k</td>
<td>Q4</td>
<td>2,302 ms</td>
<td>2,796 ms</td>
<td>77.1</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>要点</strong>：</p>
<ul>
<li>上下文从 771 增长到 <strong>44,776（131k 上限的 34.2%）</strong>，TTFT 仅从 ~0.6s 温和升至 ~2.3s，<strong>前缀缓存 + chunked prefill 下延迟随上下文的退化非常平缓</strong>（Q1→Q4 仅 +18%）。</li>
<li><strong>解码速率几乎不随上下文下降</strong>（75.9→77.1），说明该硬件配置下注意力开销在 45k 内尚未成为瓶颈。</li>
<li>按任务：T1（峰值 16.5k 上下文）总延迟均值 2.4s；T2 2.8s；T3 3.0s（26–45k 上下文）——<strong>500 步长链全程平均 ~2.8s/步，无恶化趋势</strong>。</li>
</ul>
<hr />
<h3>4.4 尾延迟与共享负载风险（本评测最重要的速度警示）</h3>
<p dir="auto">评测窗口内共捕获 <strong>3 次 TTFT 尖峰</strong>，均与外部负载相关（尖峰后的下一步立即恢复正常 1.3–1.5s）：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>发生点</th>
<th>TTFT</th>
<th>当时上下文</th>
<th>解读</th>
</tr>
</thead>
<tbody>
<tr>
<td>主评测 R8 第 29 步</td>
<td><strong>38.4s</strong></td>
<td>21.1k</td>
<td>外部请求挤占，本请求 prefill 被饥饿 ~36s</td>
</tr>
<tr>
<td>主评测 T3 轮内</td>
<td>34.4s</td>
<td>~37k</td>
<td>同上</td>
</tr>
<tr>
<td>扩展基线 99k 热请求</td>
<td><strong>193.8s</strong></td>
<td>99.4k</td>
<td>本应 2s 的缓存命中请求被拖到 194s（prefill 实测 513 tok/s，仅为自身冷 prefill 的 1/6）</td>
</tr>
</tbody>
</table>
<p dir="auto">同期解码速率也从 ~100 跌至 24–29 tok/s。<strong>结论</strong>：该 vLLM 实例在评测期间<strong>并非独占 GPU</strong>；空闲/轻载时性能优秀（§4.1–4.3），但并发竞争下 <strong>p99 延迟可达 p95 的 60–70 倍</strong>。若用于生产 Agent 服务，必须：独占/预留 GPU，或配置 <code>--max-num-seqs</code> 限流 + 优先级调度，否则长上下文请求会被任意突发流量长时间饿死。</p>
<hr />
<h3>4.5 思考模式（thinking ON vs OFF，同一 T1 n=24 任务、全新会话）</h3>
<p dir="auto"><strong>[思考对照]</strong><br />
<img src="https://upload.lcz.me/uploads/6d066815-ffb1-4f6c-97c3-92d5e6f45eaa.jpeg" alt="3756d799-4251-498d-9c69-ca51496b27ab-image.jpeg" class="img-markdown  img-fluid" /></p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>指标</th>
<th>thinking <strong>ON</strong></th>
<th>thinking <strong>OFF</strong></th>
<th>倍数</th>
</tr>
</thead>
<tbody>
<tr>
<td>模型调用数</td>
<td>28</td>
<td>26</td>
<td>1.08×</td>
</tr>
<tr>
<td>平均 TTFT</td>
<td>1,201 ms</td>
<td>1,495 ms</td>
<td>0.8×（ON 略快，因 thinking 首 token 前无长文）</td>
</tr>
<tr>
<td><strong>平均总延迟</strong></td>
<td><strong>5,762 ms</strong></td>
<td><strong>2,028 ms</strong></td>
<td><strong>2.8×</strong></td>
</tr>
<tr>
<td>总延迟 p95</td>
<td>15,793 ms</td>
<td>4,774 ms</td>
<td>3.3×</td>
</tr>
<tr>
<td>平均 completion tokens</td>
<td><strong>192</strong>（thinking 占 ~150）</td>
<td>38</td>
<td><strong>5.0×</strong></td>
</tr>
<tr>
<td>平均 out_tps</td>
<td>43.5</td>
<td>78.6</td>
<td>0.55×</td>
</tr>
<tr>
<td>任务结果</td>
<td><strong>FAIL</strong>（4 次纠错事件，未收敛到正确答案）</td>
<td><strong>PASS</strong>（0 事件）</td>
<td>—</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>结论</strong>：在此 27B INT4 服务上，<strong>对工具密集型 Agent 任务开启 thinking 是负优化</strong>——单步延迟 ×2.8、token 成本 ×5，且本样本中 ON 失败 / OFF 通过（n=1 每臂，方向性结论，样本有限但差距量级明确）。thinking 的价值应留给"需要多步推理且无现成工具"的开放式问题，而非"逐步调工具"的执行型 Agent 循环。</p>
<hr />
<h2>五、综合结论与建议</h2>
<hr />
<h3>5.1 该服务作为 Agent 长链后端的总体评级</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>场景</th>
<th>评级</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>单流、独占 GPU 的 Agent 工具循环（≤50k 上下文）</td>
<td><strong>A（推荐）</strong></td>
<td>2.3–2.8s/步、77–100 tok/s、0 传输故障、前缀缓存 10–24× 收益</td>
</tr>
<tr>
<td>超长冷启动（65k–100k 新会话）</td>
<td>B-</td>
<td>32–48s 首响，属 prefill 物理成本，建议客户端做进度提示</td>
</tr>
<tr>
<td>共享 GPU / 有并发突发流量</td>
<td><strong>C（不推荐裸用）</strong></td>
<td>194s 尖峰 + 解码 4× 降速；需限流/隔离后重测</td>
</tr>
<tr>
<td>长重复序列计算（≥32 步周期链）</td>
<td>C</td>
<td>模型内在弱点，<strong>换任务设计</strong>而非加算力可解</td>
</tr>
</tbody>
</table>
<hr />
<h3>5.2 可操作建议</h3>
<ol>
<li><strong>Agent/工具任务关闭 <code>enable_thinking</code></strong>（本次实测 2.8× 延迟、5× token、且准确率更好）。</li>
<li><strong>重构"长重复链"任务</strong>：T2 类任务的失败点是"从印刷的 7 周期重复列表里取第 i 个"。让 prompt 给出<strong>增量公式</strong>（如 <code>B_i = ((i×13 mod 91)+5)</code>）代替列表、或把 4–5 步合并为一次批量工具调用（<code>chain</code> 工具），可把 32–40 步任务压到 &lt;10 步，绕开该模型的索引弱点。</li>
<li><strong>不要要求模型心算精确字符数/大数</strong>：需要时提供专用工具（<code>len()</code>、<code>sum()</code>），否则会出现"连打 calculator"固化或错误终答（本次 2/10 的 T3 类运行因此失控）。</li>
<li><strong>GPU 隔离/限流</strong>：若该实例面向多租户，启用 <code>--max-num-seqs</code>、请求优先级，或为长上下文 Agent 会话单独实例；验收标准建议以 <strong>p99 TTFT</strong>（而非 p95）为准——本评测 p99/p95 ≈ 16×。</li>
<li><strong>利用前缀缓存</strong>：固定系统提示+工具定义、按轮追加历史的组织方式已被验证能把 500 步会话的单步成本压在 2–3s；避免每轮重排历史顺序（会摧毁缓存命中）。</li>
<li><strong>容量规划</strong>：131k 上限下 500 步链仅用 34%；若单步输出变长（&gt;100 tok），建议预算上限 250–300 步或中途做历史压缩。</li>
</ol>
<hr />
<h3>5.3 评测局限性</h3>
<ul>
<li>单实例、单日（~70 分钟）评测；服务进程已运行一天，<code>/metrics</code> 累计计数器含评测前流量，服务端吞吐总量为近似值。</li>
<li>评测期间存在间歇外部负载（无法远程排除），§4.1/§4.4 已分别标注轻载与受扰数据。</li>
<li>思考对照每臂 n=1（方向性结论）；T2 对照每档 1–3 次重复。</li>
<li>主运行期间每 2 轮抓取的 KV-cache <code>/metrics</code> 因解析器早期 bug 为空，改用评测前后快照（评测后残留占用 &lt;12%、空闲归零）与 TTFT 冷/热对比间接表征缓存行为。</li>
</ul>
<hr />
<h2>附录</h2>
<h3>A. 文件清单（<code>vllm_longchain_eval/</code>）</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>文件</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>eval_harness.py</code></td>
<td>主评测框架（工具实现、3 类任务、SSE 客户端、基线、思考对照、运行器）</td>
</tr>
<tr>
<td><code>extra_baseline.py</code> / <code>baseline_ext.json</code></td>
<td>扩展基线（65,124 / 99,374 tokens，2–3 重复）</td>
</tr>
<tr>
<td><code>t2_control.py</code> / <code>steps_ctrl*.jsonl</code>, <code>rounds_ctrl*.jsonl</code></td>
<td>T2 全新会话对照（含逐次 calculator 参数记录，漂移定位依据）</td>
</tr>
<tr>
<td><code>t3_fixed.py</code> / <code>steps_t3fix.jsonl</code>, <code>rounds_t3fix.jsonl</code></td>
<td>T3 修正版（21 条知识库、last_capital 终答）</td>
</tr>
<tr>
<td><code>steps_run.jsonl</code> / <code>rounds_run.jsonl</code> / <code>baseline.json</code></td>
<td>主评测 15 轮 + 思考对照的逐步原始数据（TSV 可直接 Excel 打开）</td>
</tr>
<tr>
<td><code>analyze.py</code> / <code>stats.json</code></td>
<td>统计 + 8 张图生成</td>
</tr>
<tr>
<td><code>chart1..chart8*.png</code></td>
<td>图表（TTFT/解码 vs 上下文、时间线、基线、每轮结果、思考对照、冷热 TTFT、T2 矩阵）</td>
</tr>
<tr>
<td><code>serverinfo.json</code></td>
<td>服务端模型/版本信息</td>
</tr>
</tbody>
</table>
<h3>B. 复现方法</h3>
<pre><code class="language-bash">cd vllm_longchain_eval
.venv/bin/python eval_harness.py       # 15 轮长链 + 基线 + 思考对照 (~35 min)
.venv/bin/python extra_baseline.py     # 65k/99k 扩展基线 (~5 min)
.venv/bin/python t2_control.py ctrl2   # T2 边界对照 (n=40/28/24, ~5 min)
.venv/bin/python t3_fixed.py           # T3 修正版 (~6 min)
.venv/bin/python analyze.py            # stats.json + 8 图
</code></pre>
]]></description><link>https://lcz.me/topic/1760</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 01:48:40 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1760.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Sep 2026 17:19:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 在 Proxmox VE +Ubuntu24.04虚拟机+AMD AI Pro R9700部署vLLM 服务器Agent 长链稳定性与速度测评（局域网客户机实测） on Wed, 16 Sep 2026 19:13:59 GMT]]></title><description><![CDATA[<p dir="auto">非常专业，图文并貌，置顶！</p>
]]></description><link>https://lcz.me/post/18701</link><guid isPermaLink="true">https://lcz.me/post/18701</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Wed, 16 Sep 2026 19:13:59 GMT</pubDate></item></channel></rss>