Issues / #2218

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

open · @liuhao16 · 0 comentários · No GitHub

BenchmarksServer & APIAMD / HIPNVIDIA / CUDAModels & quantsLinux

Descrição


## 摘要

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服务启动的引擎命令:

```bash
# 关闭: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库目录:

```bash
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配对:

```text
中文解释 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开关基本持平。部分题材略快、部分略慢,整体变化低于可稳定确认的程度。

No site

Links install, modelos, releases.