AI笔记本

折腾笔记

Strata 0.2.9 → 0.2.11:一次更新检查、升级与性能复核的完整记录

2026-11-06

家里那台跑本地模型的机器(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

三句话概括:

  1. 升级本身很干净 —— 自带 test start,起一次引擎答一个 token 再停,失败不会替换旧版本;服务重启后 /health 立刻正常。
  2. 性能没变 —— 同协议、同机器、同模型跑了两份标准基准,解码 74–80 tok/s,差异全部落在 2.7% 噪声内。
  3. 也没什么可优化的 —— 官方调优器 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

升级:engine/control 双更新,自带 test start

它的逻辑是:新引擎先真正起一次(用一个已装模型),答一个 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

DFlash2 不适用 + 调优器结论

也就是说 --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,缓存干扰由每次唯一的提示前缀排除。

standard-v1 基准与 11-05 基线对比

用例 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)