Skip to content

RTX 5090 + Core Ultra 9 285K,Strata v0.1.43.1 / IQ2_XS,adaptive overlap 开关对照 #2218

Open

Description

@liuhao16

摘要

2026-10-13 在单卡桌面 RTX 5090 + Core Ultra 9 285K 的 Linux 机器上,对同一个 Strata v0.1.43.1 本地 CUDA build 测试 STRATA_ADAPT_OVERLAP=0/1。采用8类短/中/长输入、6轮配对,共96次主测;另有预热及热前缀诊断,总计156次请求。

结果:没有测出稳定的总体提速或退化。 各题材等权的配对几何平均,ON 相对 OFF 为 +0.27%;探索性逐轮 bootstrap 95% 区间约 −0.07%~+0.59%,包含零。

1. 硬件与软件

项目 配置/实测
CPU Intel Core Ultra 9 285K,24核24线程,单NUMA节点
CPU指令集 AVX2 / AVX-VNNI;没有AVX-512,引擎日志确认CPU专家使用AVX2
GPU 单张桌面 NVIDIA GeForce RTX 5090,GPU 0,计算能力 sm_120
显存 标称32GB;nvidia-smi报告32607 MiB
GPU功耗上限 600 W;本次测试未更改功耗上限
内存 约64GB级配置;OS报告MemTotal为66,790,989,824 bytes,约62.20 GiB;物理条容量/频率未独立读取
Swap 8 GiB;没有关闭swap或清理系统文件缓存
存储 Samsung SSD 9100 PRO 2TB,NVMe;模型所在根分区为ext4
PCIe 查询到最大Gen5、x16;测试启动H2D probe约53.7–53.8 GB/s。未连续记录负载中的link gen,不能拿空闲Gen1快照当测试链路速度
OS Ubuntu 24.04.2 LTS,Linux 7.0.0-38-generic,x86_64
NVIDIA驱动 595.99.02
CUDA工具链 CUDA 13.0,NVCC V13.0.88
Python 3.12.3
Strata v0.1.43.1,commit a0116b2782a5b82622358c04a06496485d12b2d6
引擎来源 本地源码编译,Release、CUDA ON、sm_120、native experts ON;HIP/SYCL OFF
视觉 关闭

主板、内存频率/时序、CPU功耗限制、精确GGUF下载revision和负载期间其他进程清单未记录,不做猜测。没有使用多GPU、WSL2、远程专家或多客户端并发。

2. 模型及有效运行配置

模型:Qwen3.8-Flash-Next-GSQ-RCO,IQ2_XS,不是Coder、Swift或Unsloth变体。

GGUF文件:

  • Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf
  • Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00002-of-00002.gguf

相关运行状态:

  • --expert-cache auto:12次启动均为 18105 slots / 24.32 GiB VRAM,从同一保存的expert profile初始化。
  • 专家RAM arena约 33.02 GiB,启动时cudaHostRegister成功;未配置显式hugetlb页,日志请求transparent huge pages。
  • --prefill auto:实际 8192-token prompt chunks、384-slot ring。
  • --max-context 262144,--kv int8,--kv-resident 32768;其余KV保存在约 3.09 GiB pinned RAM。
  • --spec 4 --spec-min-p 0.5 --mtp <DATA_DIR>/mtp/rt;已有draft vocabulary 106299 tokens;MTP载入约835 MiB VRAM。
  • --pool-workers 15,另加host参与任务;启动日志host固定CPU0,workers在CPU1–15。
  • 未显式设置 --vram-reserve-mib;日志cache sizing使用默认700 MiB reserve及draft-head余量。
  • 未修改adaptive默认:adapt_every=4、adapt_swaps=96、adapt_decay=0.7。
  • 两臂都保留v0.1.43.1默认callback warmup;ON日志确认stream-ordered signaling,未使用STRATA_ADAPT_SIGNAL=host。
  • 日志显示自动native Q5_K head路径;本次未另行启用experimental-speed-projection。
  • 启动后剩余显存约 410 MiB,测试采样最低 311 MiB;有低显存警告,未为跑分改变缓存容量或context。

等价的引擎参数

以下是Python服务启动的引擎命令:

# 关闭:0;开启:1。必须启动新的引擎进程,不能靠HTTP请求即时切换。
export STRATA_ADAPT_OVERLAP=0
DATA_DIR=/path/to/Strata-data

./engine/strata --serve \
  --pack "$DATA_DIR/packs/iq2_xs" \
  --native "$DATA_DIR/models/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf" \
  --ple-gguf "$DATA_DIR/models/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00002-of-00002.gguf" \
  --expert-profile ./data/expert-profile.bin \
  --expert-cache auto \
  --prefill auto \
  --spec 4 \
  --spec-min-p 0.5 \
  --mtp "$DATA_DIR/mtp/rt" \
  --max-context 262144 \
  --kv int8 \
  --kv-resident 32768 \
  --pool-workers 15

engine/strata --serve本身是供Python服务使用的引擎协议,不是独立HTTP服务器。实际benchmark HTTP服务启动形状如下,config保留上述engine args、tokenizer、GPU0及CUDA库目录:

STRATA_ADAPT_OVERLAP=0 .venv/bin/python serve/server.py \
  --engine strata \
  --config ./strata-iq2_xs.json \
  --port 8081 \
  --host 127.0.0.1

另一臂将0改为1。API密钥保持启用,没有放入命令行或本报告。若config中的env也设置了overlap,会覆盖父进程环境;本机没有该覆盖。需要检查日志确认实际ON/OFF,不只是检查环境变量。

3. 测试方法

  • 全部材料在本地生成并保存,不包含真实用户对话,没有外部dataset下载:中文解释、英文代码、故事续写、JSON日志、英文文档、长代码、多主题中文文档、长英文代码与文档。
  • 使用实际tokenizer与chat template拟合输入长度:256、384、256、2048、4096、16384、65536、102400 tokens。token数包含渲染后的聊天模板。
  • 每类6组配对,每组同样输入字节、相同请求参数和顺序;不同轮使用不同早期标签,标签在一组ON/OFF中一致。
  • 会话顺序为 OFF→ON / ON→OFF / OFF→ON / ON→OFF / OFF→ON / ON→OFF,共12次启动。每轮旋转题材顺序,轮内两臂保持一致。
  • 每次启动恢复同一保存profile,做相同256-token预热;然后依次测8类输入。它们是预热后逐步适应的混合工作负载,不是每条prompt都独立冷启动。
  • 没有--expert-profile-save,不让benchmark输出覆盖原profile。
  • 请求参数:temperature=0,seed=20261013,reasoning_effort=none,enable_thinking=false,max_tokens=512,SSE streaming。正常EOS,不禁用EOS、不强制最小输出长度。
  • 96次主测实际均达到512输出tokens,cache_n全部为0。总计2,296,320输入tokens和49,152输出tokens。
  • 另做短代码与64K中文的热前缀测试:先prime,再原样repeat,单独统计。12次预热、96主测、24 prime、24 repeat,共156次请求。
  • 读入/生成速率使用API的引擎prompt_per_second和predicted_per_second;TTFT由流式客户端从发送请求到第一段非空文本计算,忽略空delta/keepalive;总耗时为客户端wall time。不把总耗时拿来计算decode tok/s。
  • 模型加载不计入请求时序;没有清Linux文件缓存,载入过程通常约12秒。整个运行加恢复约17.1分钟,数据准备另计。
  • 约每秒采样GPU温度、频率、功耗、VRAM及系统MemAvailable/swap。没有锁定GPU时钟或改变功耗上限。核心采样2895–2985 MHz,GPU温度46–70℃。

4. 主测:decode

速度单位tok/s。两臂数字为6次测量的中位数[min–max]。配对变化先对每轮计算(ON/OFF−1)×100%,再取6轮中位数,不是两列中位数相除。

题材 输入tokens OFF中位[min–max] ON中位[min–max] 配对变化中位 ON胜出
中文解释 256 207.3 [197.1–214.2] 205.8 [196.0–212.8] −0.86% 2/6
英文代码 384 266.5 [253.2–278.0] 266.1 [261.7–270.6] −0.49% 3/6
中文故事 256 186.9 [180.1–190.2] 185.4 [182.5–193.0] +0.17% 3/6
结构化日志 2048 248.2 [235.9–265.6] 251.2 [231.8–261.3] +0.20% 3/6
英文归纳 4096 209.9 [205.0–223.8] 213.6 [204.5–227.6] +0.32% 4/6
技术代码 16384 223.2 [212.0–231.1] 227.7 [212.2–231.0] +0.38% 4/6
中文长文 65536 192.6 [187.5–197.7] 194.5 [184.2–199.3] +0.67% 5/6
英文代码文档 102400 214.7 [210.1–230.8] 218.1 [209.3–230.1] +0.73% 4/6

分组汇总

下面是各题材/各轮等权的配对几何平均变化,不按输入token数量加权:

分组 ON相对OFF
短输入,3类 −0.02%
中输入,2类 +0.20%
长输入,3类 +0.60%
全部8类 +0.27%

六轮总体变化分别为 −0.20%、+0.66%、+0.71%、−0.38%、+0.47%、+0.38%。主测48组配对中,ON更快28组,OFF更快20组。单题材单轮差异可达−8.31%~+6.19%,远大于总体+0.27%。不据此声称有确定的0.27%加速。

5. Prompt ingestion、TTFT与总耗时

下表为6次中位数;OFF / ON。读入速度是新读入token速率,所有主测无prefix reuse。

题材 读入tok/s,OFF / ON TTFT秒,OFF / ON 总耗时秒,OFF / ON
中文解释256 991.3 / 993.6 0.273 / 0.273 2.777 / 2.753
英文代码384 1309.1 / 1317.6 0.307 / 0.305 2.216 / 2.240
中文故事256 962.6 / 982.3 0.281 / 0.276 3.030 / 3.044
日志2048 3753.7 / 3767.2 0.562 / 0.560 2.642 / 2.600
归纳4096 5022.4 / 5020.0 0.834 / 0.833 3.295 / 3.254
代码16384 6443.3 / 6442.9 2.567 / 2.565 4.883 / 4.856
中文65536 6552.7 / 6553.6 10.031 / 10.032 12.689 / 12.656
英文102400 6365.3 / 6366.5 16.147 / 16.145 18.526 / 18.480

长输入读入和TTFT几乎不受开关影响;100K输入的首token等待在两臂都约16.15秒。本次没有测出明显的长prompt读取加速。

6. 热前缀诊断(不计入主汇总)

案例 复用输入tokens OFF / ON decode中位tok/s 配对几何平均变化 ON胜出 OFF / ON TTFT中位秒
短代码 377 / 384 271.7 / 278.3 +2.26% 5/6 0.032 / 0.032
64K中文 65529 / 65536 194.6 / 193.7 −1.02% 2/6 0.050 / 0.049

短代码热请求有偏向ON的小收益,长中文则相反;不能据此推荐所有重复对话都开启。

7. 正确性、生成轨迹与稳定性限制

  • 相同输入、temperature0、相同seed仍不保证逐token一致:主测只有 7/48组完整输出相同。
  • 本次没有定位输出分歧的具体来源。浮点舍入、专家缓存计算路径及MTP/后续adaptive轨迹是需要考虑的因素,不能直接把分歧认定为overlap缺陷或质量退化。
  • MTP累计draft接受率OFF约 66.93%、ON约 66.76%。每条原始timings保留offered/accepted counts。
  • 这是实际自由生成workload,不是固定token replay的纯拷贝开销测试,也不是质量评测。截断到512 tokens的代码未进行功能单元测试。
  • 专家cache命中率请求中位约 99.25%,范围96.8–99.8%。高命中与较快PCIe使可隐藏的传输份额可能有限,仅作为相容解释,不作因果证明。
  • 全156请求完成,有低显存告警;未发现CUDA错误、OOM、non-finite logits或watchdog失败。
  • 未测试开启thinking、图片、并发客户端、满262144-token输入、其他量化、不同显存预留或不同专家缓存规模。不能把本报告外推到所有5090或其他后端。

8. 所有主测decode原始值

每行6个数按配对轮次1~6排序,单位tok/s;同索引构成ON/OFF配对:

中文解释 OFF: 208.1, 198.0, 207.2, 214.2, 207.5, 197.1
中文解释 ON : 202.0, 206.5, 212.8, 210.3, 205.1, 196.0

英文代码 OFF: 253.2, 264.1, 266.9, 270.2, 278.0, 266.2
英文代码 ON : 264.4, 270.6, 261.7, 264.1, 267.9, 268.8

中文故事 OFF: 183.3, 180.1, 185.4, 188.4, 190.2, 190.1
中文故事 ON : 187.0, 183.9, 193.0, 182.5, 183.4, 186.9

结构化日志 OFF: 252.8, 265.6, 239.3, 259.4, 235.9, 243.5
结构化日志 ON : 231.8, 251.8, 238.5, 261.3, 250.5, 255.5

英文归纳 OFF: 223.8, 205.4, 205.0, 220.7, 210.8, 209.1
英文归纳 ON : 227.6, 216.2, 206.1, 220.7, 211.0, 204.5

技术代码 OFF: 221.8, 212.0, 214.1, 231.1, 224.5, 228.1
技术代码 ON : 217.0, 212.2, 226.0, 231.0, 229.3, 229.6

中文长文 OFF: 197.7, 192.6, 192.9, 187.5, 190.7, 192.5
中文长文 ON : 199.0, 184.2, 195.2, 188.2, 199.3, 193.8

英文代码文档 OFF: 212.7, 227.6, 230.8, 211.6, 210.1, 216.7
英文代码文档 ON : 220.4, 230.1, 217.7, 218.4, 209.3, 217.5

结论

在这台桌面RTX5090、IQ2_XS、高专家命中率及原有spec4/MTP配置上,adaptive overlap开关基本持平。部分题材略快、部分略慢,整体变化低于可稳定确认的程度。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions