Strata 0.2.9 → 0.2.11:一次更新检查、升级与性能复核的完整记录
家里那台跑本地模型的机器(RTX 5080 + 126 GB 内存)把 Strata 挂在 systemd 用户级服务上,平时只当个 OpenAI 兼容端点用,根本想不起来升级。这次顺手跑了一下 strata update --check,发现已经落后两个版本 —— 于是有了下面这份完整记录,包括两个踩到的坑和一份"升级到底有没有变快"的对照数据。

一、结论先说
| 组件 | 升级前 | 升级后 | 说明 |
|---|---|---|---|
| Strata Terminal | 0.2.9 | 0.2.11 | CLI 入口,build 0.1.55 → 0.1.57 |
| engine | 0.1.55 99866a47a2b8 |
0.1.57 0bdcef4682c5 |
linux-x86_64 + cuda13 + sm_120 |
| control | 0.1.55 | 0.1.57 | 下载合计 820 MB |
三句话概括:
- 升级本身很干净 —— 自带 test start,起一次引擎答一个 token 再停,失败不会替换旧版本;服务重启后
/health立刻正常。 - 性能没变 —— 同协议、同机器、同模型跑了两份标准基准,解码 74–80 tok/s,差异全部落在 2.7% 噪声内。
- 也没什么可优化的 —— 官方调优器
strata tune auto判定already_fastest;0.2.10 起的新 drafter(DFlash2)这台机器吃不到,因为模型家族不在支持名单里。
二、查更新:feed 在 GitHub 上,直连必超时
strata update --check 只读不写:拉取签名过的更新清单(feed),跟本机已装的 packages 比对,告诉你"哪些组件有新版、下载多大、为什么某些包不适用"。
第一次跑,直接失败:
$ strata update --check
{"ok": false, "error": {"code": 6, "message": "the update feed could not be read:
could not read https://github.com/Niko1221/Strata/releases/latest/download/
strata-feed.json (URLError: timed out)"}}
feed 挂在 GitHub Releases 的 latest/download 上,国内直连读不到是常态。这台机器本身在局域网里,网关有个 HTTP 代理,带上环境变量就行:
export HTTPS_PROXY=http://10.0.0.2:10082 HTTP_PROXY=http://10.0.0.2:10082
export NO_PROXY=localhost,127.0.0.1,10.0.0.0/8
strata update --check --output json
拿到结果(节选):
| 字段 | 值 |
|---|---|
| feed | sequence 121 · stable · 2026-11-05T12:11:23Z · key 5d1bc23abbeffd0d(内置公钥信任) |
| engine | 0.1.55 → 0.1.57,available,720 MB |
| control | 0.1.55 → 0.1.57,available,100 MB |
| app | 0.2.11,unknown-installed(服务器只装 Terminal,没装桌面 App) |
feed 里其实有 12 个 engine 包(hip-halo、hip-rx6000、sycl、windows、macos…),
--check会逐个给出排除理由。这台匹配到的是linux-x86_64-cuda13,硬性条件是 NVIDIA 驱动 ≥ 580.65(本机 595.99)和sm_120架构在镜像 archs 列表里。
顺带记一下这两个版本带来什么:0.2.10 把 DFlash2 设为默认 drafter,并新增"一张模型铺满所有卡"的 split engine;0.2.11 支持 Unsloth 在 11-04 重新上传的「Dynamic v3.1」七套 Qwen3.8 文件,还改了 NVIDIA / Radeon 上的 prompt 速度路径。对我这台单卡机器,有用的主要是第一条和第三条。
三、升级:先备份,再让它自己 test start
动手前先把能回滚的东西留下来(本地 552 GB 空闲,备份 720 MB 很划算):
B=~/strata-backup-20261106-pre0211; mkdir -p $B
cp -a ~/.local/state/strata/launch/iq3_s-256k.json $B/ # 启动参数全在里面
cp -a ~/.config/systemd/user/strata.service $B/
tar -C ~/.local/share/strata -czf $B/components-engine-0.1.55.tar.gz components/engine
tar -C ~/.local/share/strata -czf $B/terminal-0.1.55.tar.gz terminal
然后停服务、升级、起服务:
systemctl --user stop strata
strata update --output json # 走代理:820 MB 下载 + test start,实测约 2 分钟
systemctl --user start strata
升级输出里这两行最有价值:
"test_start": {"mode": "full", "state": "ready",
"detail": "started, answered a one-token probe, stopped"}
"exit_code": 0

它的逻辑是:新引擎先真正起一次(用一个已装模型),答一个 token,然后停掉。只有 test start 通过才会把旧版本替换掉,否则保持 0.1.55 原样、报错退出。这比自己"升级完再看能不能起来"可靠得多。
重启后:strata --version 变成 0.2.11 (build 0.1.57),/health 返回 {"status":"ok","loaded":true},模型加载 30–45 秒(和 0.1.55 持平)。旧 0.1.55 的 engine 目录还留着,presets_marked: true 也只是把 preset 标记成待复核,启动参数没有变化。
顺手确认了客户端侧:DSH 里那个 strata-local provider 指向 http://10.0.0.60:18500/v1、模型 id 仍是 swift-1.5-iq3_s,升级不需要改任何客户端配置。
四、优化:新 drafter 吃不到,调优器说别动
这部分是这次最有意思的:0.2.10 的头条功能在这台机器上用不了,而官方调优器给出的结论是"别动"。
DFlash2 为什么用不了。 官方在 RTX PRO 5000(同为 sm_120)+ IQ3_S 上量到 +7.88%(greedy)/ +6.23%(短答案采样)的解码提升,我的卡架构一致,看起来应该能吃到。但让 plan 显式指定 drafter:
$ strata launch --plan --preset iq3_s-256k --drafting dflash2
drafting MTP (DFlash2 is for Qwen3.8-Flash-Next only)
这台跑的是 swift-1.5-iq3_s —— SC117 那套 abliterated 的 Qwen3.8-Flash-Next IQ3_S 文件,但在 Strata 里注册的家族是 swift,不在 DFlash2 的支持名单(Qwen3.8 / Unsloth / Gyro)。所以 drafting 虽然已经设成 auto,实际仍加载 MTP(日志里 strata mtp: draft layer loaded, 837 MiB of VRAM)。想吃这份收益只能换模型文件,但那就丢掉现在这套 abliterated 的行为,不值当,先记着。
官方调优器跑了一遍。 strata tune auto 的做法是:先测当前配置,再对单个旋钮做交错对照组,只保留超过噪声的收益,保存成命名 preset。quick 模式 5.3 分钟,结果:
{"outcome": "default_confirmed", "code": "already_fastest",
"gain_decode_pct": 0.0, "base_tok_s": 94.8, "tuned_tok_s": 94.8, "noise_pct": 2.7,
"message": "Your current settings are already the fastest we found."}
细节值得看:
| 项 | 值 |
|---|---|
| 基线 / 结论 | 94.8 tok/s → 94.8 tok/s(0.0%),A/A 复现对 94.8 vs 92.3,噪声 2.7% |
| prompt 处理 | 1892.7 tok/s(4K 冷)、4340.8 tok/s(16K 长提示) |
| 试过的候选 | 只有 --kv-resident 65536:慢 8.5%,round 1 丢弃 |
| 因"可能改变答案"跳过 | 2 个 expert-cache 微调候选(没开 --allow-small-differences) |
| 资源占用 | 显存 15394 MiB,RSS 峰值 82.5 GiB |

也就是说 --spec 4 --spec-min-p 0.5 --prefill 32768 --kv-resident 32768 --pool-workers 9 这套现参数仍在最优区间 —— 这本身就是一个有用的结论,省得以后再翻来覆去怀疑是不是没调好。
五、复核:同协议两次基准
只看调优器的短提示数字不够,还是要用官方标准套件对一遍。strata bench run 默认 standard-v1:1 次预热 + 3 组短/4K/16K 提示 + 12 项 sanity 检查,约 2 分钟,请求走本机 loopback,缓存干扰由每次唯一的提示前缀排除。

| 用例 | 0.1.55(11-05) | 0.1.57(11-06) | 变化 |
|---|---|---|---|
| short 解码 tok/s | 75.6 (70.9–78.5) | 74.0 (72.0–79.1) | −2.1% |
| prompt-4k 解码 | 77.8 (75.8–81.2) | 79.5 (79.4–81.6) | +2.2% |
| prompt-16k 解码 | 79.4 (75.5–82.3) | 77.1 (75.1–78.6) | −2.9% |
| prompt-4k 提示处理 | 1780.0 | 1779.8 | ~0 |
| prompt-16k 提示处理 | 4235.5 | 4240.1 | ~0 |
| TTFT(4K / 16K) | 2.33 s / 3.90 s | 2.33 s / 3.90 s | 0 |
| sanity 检查 | 12/12 | 12/12 | 一致 |
三个用例的差值方向都不一样、幅度都在 2.9% 以内,而调优器实测的 A/A 噪声就是 2.7% —— 说明 0.1.57 对这套 IQ3_S + MTP 配置没有速度变化。想看到变化,得换 drafter 或换量化,光升引擎是不够的。
六、回滚与后续
回滚路径很短(旧 engine 目录还在,control 和 terminal 有 tar 备份):
systemctl --user stop strata
rm -rf ~/.local/share/strata/components/engine/0.1.57-linux-x86_64-cuda-cuda13
tar -C ~/.local/share/strata -xzf ~/strata-backup-20261106-pre0211/terminal-0.1.55.tar.gz
tar -C ~/.local/share/strata -xzf ~/strata-backup-20261106-pre0211/components-engine-0.1.55.tar.gz
systemctl --user start strata
后续真正值得试的只有一条:换到 Qwen3.8 家族的文件(Unsloth Dynamic v3.1)以启用 DFlash2。代价是重新下载 60–95 GB(UD-IQ2_XS 75.8 GB / UD-IQ3_XXS 83.6 GB),并且放弃现在这套 abliterated 的说话方式。要不要换,等哪天有闲再说。
七、这次记住的几件事
- feed 读不到 ≠ 没有更新。报
URLError: timed out只是网络问题,换代理或把 feed 下到本地用--feed指过去都行。 strata update的 test start 是有意义的。它是"起引擎 + 答一个 token + 停"的全量验证,失败就不替换,所以升级期间服务短暂停一下是安全的。already_fastest也是结论。跑一次调优器把"当前参数是否最优"钉死,比每次觉得慢就手动改参数强。- 版本号变了要顺手同步。这台机器除了给 DSH 供模型,还被我写进了 zwbcc.cn 首页的「跑模型的机器」一栏 —— 那栏原来写着
Strata 0.2.9,这次一起改成了0.2.11(顺带把当天做的赛博朋克俄罗斯方块挂上了作品集,zwbcc.cn/tetris)。
环境:Ubuntu 24.04.5 / 内核 6.8.0-147 / NVIDIA 595.99.02 / CUDA 13.2 / Strata 0.2.11(engine + control 0.1.57)/ 模型 swift-1.5-iq3_s(IQ3_S,256K 上下文,MTP drafter,1 slot)