一、先看结论
| 项目 | 结果 |
|---|---|
| 模型 | Qwen3.8-Flash-Next(125B MoE,每 token 激活约 10 个专家),IQ2_XS 量化 |
| 显卡 | Tesla V100-PCIE-32GB(sm_70,官方支持矩阵之外的实验路径) |
| 内存 | 64 GB(实测够用,模型占约 33 GiB 常驻 + n-gram 表 mmap) |
| 上下文 | 131,072 token(128K),int8 KV + KV 流式(32,768 格常驻显存) |
| 生成速度 | 中位数 78–80 tok/s,峰值 121.9 tok/s(长输出场景) |
| 预填充 | 中位数约 1,150–1,320 tok/s,峰值 1,418 tok/s |
| 视觉能力 | ✅ 已开启,编码器跑在 GPU 上,单图编码 0.13 秒 |
| 磁盘总占用 | 73 GB |
一句话:老架构的计算卡配上大显存,在 Strata 这套“三级存储”架构下反而很划算——显存容量比算力重要。
二、环境清单
| 硬件 | 具体识别结果(取自安装器 Step 1 输出) |
|---|---|
| GPU | Tesla V100-PCIE-32GB,32.0 GB VRAM,compute capability 7.0,驱动 573.96 |
| CPU | Intel64 Family 6 Model 158 Stepping 13(8 个逻辑核),有 AVX2、无 AVX-512 |
| 内存 | 64 GB |
| PCIe | 实测 host→device 12.4 GB/s |
| 系统 | Windows,CUDA 12.x 工具链(关键,后面说为什么必须是 12) |
注意 CPU 没有 AVX-512:这是消费级 desktop CPU 的通病,Strata 会自动降级到 AVX2 专家内核
(日志原文:this CPU has no AVX-512: the expert kernels run on AVX-2)。
三、Strata 凭什么能让 V100 跑动 125B
它不是 llama.cpp 那种通用框架,而是为 Qwen3.8-Flash-Next 这一个模型深度定制的引擎。核心思路是把整台电脑当成三级存储:
| 层级 | 放什么 | 实测 |
|---|---|---|
| 显存(热层) | attention/mixer、router、shared expert、输出头、MTP 草稿层、KV cache、自适应专家缓存 | 专家缓存 19,183 槽 / 25.77 GiB |
| 内存(温层) | 全部 24,576 个专家(pinned),显存里没有的由 CPU 就地并行计算 | 常驻 33.02 GiB |
| 硬盘(冷层) | n-gram 查找表(约 28.8 GB),mmap 读,每 token 约 16 行 | SSD |
模型本身的关键参数:48 层,每层 512 个专家,全局 24,576 个专家,每个 token 只路由到约 10 个。
所以每 GPU 显存多装一个专家,CPU 就少算一个 —— 显存容量比算力重要,这正是 V100 32GB 的强项。
再加上两项加速:MTP 投机解码(小草稿层一次猜多个 token,一次前向全部验证)和长文本大块预填充(一次 8,192 token,专家经 PCIe 流式送 GPU,与 attention 重叠)。
四、安装实录
4.1 时间线
| 时间 | 动作 |
|---|---|
| 10-07 09:55 | 拿到 strata-windows-x64-cuda12.zip(190 MB,含 CUDA 12 运行库的现成引擎) |
| 10-07 10:2x | 第一次 setup.py → Step 1 预检通过,开始下载 68 GB 模型 |
| 10-07 11:47 | 分片 1(39.2 GB)下载完成 |
| 10-07 15:14 | 分片 2(28.8 GB)完成,同时生成 pack(阶段总耗时约 5 小时,主要是下载) |
| 10-07 15:5x–16:3x | 补跑 setup 拉取并打包 MTP 草稿层,写出启动脚本 |
| 10-07 16:35 | 引擎首次启动成功,跑通第一批请求 |
| 10-08 20:08 | 下载 mmproj 视觉编码器(865 MiB) |
| 10-08 20:19 | 配置改造完成 |
| 10-08 20:24 | 带视觉能力的服务启动成功 |
4.2 预检输出(setup.py --check 原文)
=== Step 1: checking your PC ===
[!] older NVIDIA GPUs (Pascal / Volta) can be used (it is the only kind of NVIDIA GPU in this PC):
experimental, through a second engine built with CUDA 12 (docs/OLDER_GPUS.md)
[ok] GPU: Tesla V100-PCIE-32GB, 32.0 GB VRAM, compute capability 7.0, driver 573.96
[ok] CUDA 12: sm_70 is older than CUDA 13 supports (it dropped Pascal and Volta):
this model runs the experimental CUDA 12 engine
[ok] RAM: 64 GB
[ok] CPU: Intel64 Family 6 Model 158 Stepping 13, GenuineIntel (AVX2)
Q2_0 needs ~48 GB RAM: fits
IQ2_XS needs ~48 GB RAM: fits
IQ3_XXS needs ~60 GB RAM: fits
IQ3_S needs ~62 GB RAM: fits
64GB 内存是道坎:四个尺寸全部装得下。我选了 IQ2_XS(官方推荐档,质量与速度的平衡点),
上下文选 128K(安装器给 32GB 显卡的推荐值),KV 精度 int8(8-bit)。
4.3 MTP 草稿层是单独下载的
模型包里不含投机解码用的草稿层,setup 会额外从原始 Qwen checkpoint 里只拉那几 tensor:
> tools\mtp_fetch.py fetch --out Strata-data\mtp
> tools\mtp_pack.py --src Strata-data\mtp --experts q2_0 --out Strata-data\mtp\mtp-q2_0.gguf
wrote mtp-q2_0.gguf: 0.889 GB of tensor data
> tools\mtp_rt.py --gguf mtp-q2_0.gguf --out Strata-data\mtp\rt
experts.bin 707788800 B, dense.bin 116099072 B, 29 tensors
最终 MTP 目录 6.45 GiB,运行期占 835 MiB 显存(experts 675 / dense 111)。
五、踩过的坑(这部分最值钱)
坑 1:Volta 只能用 CUDA 12 引擎
CUDA 13 砍掉了 Pascal 和 Volta。所以必须走 engine-cuda12/ 这套单独的引擎
(Windows 上就是 strata-windows-x64-cuda12.zip,里面连 NVIDIA CUDA 12 运行库都打包好了,不用自己装 toolkit)。
代价是: wisdom sm_70 上的 MMQ 专家内核走 dp4a(Volta 没有 int8 tensor core),
只能靠 FP16 tensor core 跑 dense 投影。这条路是实验性的,维护者手上没有这张卡,属于“compile-checked + 单人实测”。
实测下来很稳,但心里要有数。
坑 2:首次加载只有 0.18 GiB/s
第一次启动时日志给了这样一句:
strata generate: loaded 33.02 GiB at 0.18 GiB/s
strata generate: hint: ~24x below what this hardware streams from a normal launch.
If Strata is started by Task Scheduler or a service, register the task with
Priority 4 (Normal) and 'Run with highest privileges'
0.18 GiB/s 意味着 33 GB 要读 3 分钟,而后面几次启动是 2.30 / 2.31 GiB/s(约 14 秒)。
差异来自磁盘冷读 + 进程优先级。如果你打算让它开机自启,记得把计划任务的优先级调到 Normal 并勾选“以最高权限运行”。
坑 3:70 GB 下载的续传问题
setup 的下载器本身是支持断点续传的(Range: bytes= + .part + .done 标记),
但国内直连 Hugging Face 很不稳定。解决办法:
set HF_ENDPOINT=https://hf-mirror.com
setup 会读这个环境变量(和 huggingface_hub 的用法一致)。实测 huggingface.co 直连 12 秒无响应,hf-mirror 正常。
坑 4:安装器被中断会留下“半套配置”
这个坑在本机实打实地撞上了 —— 我在跑 setup.py --setup --vision gpu 时中断了它,结果:
"args": [ ..., "--vision", "--vram-reserve-mib", "700" ], ← 写了
// 但顶层的 "vision": { ... } 段完全没写 ← 没写
引擎开了图、却找不到编码器进程,服务直接起不来。这种半成品状态很难排查,
所以改完配置一定要对着 serve/server.py 里 Vision.__init__ 实际消费的 key 复核一遍(详见第七节)。
六、实测数据
6.1 启动过程(一条真实日志)
strata generate: PCIe probe: 12.4 GB/s host->device -> pcie_frac 0.34 (default 0.55)
strata generate: native pack: ... token embedding IQ4_XS in mapped host memory (322 MiB, 0.4 s)
strata generate: 300 native projection matrices, 1474.85 MiB of weights, in 1.7 s
strata generate: KV streaming: 32768 of 131072 cells per QSA layer in VRAM,
the K/V in 1.55 GiB of pinned RAM
strata mtp: draft layer loaded, 835 MiB of VRAM, files read in 0.27 s (2879 MiB/s)
strata generate: loaded 33.02 GiB at 2.31 GiB/s
strata generate: expert cache auto: 26.60 GiB free, 700 MiB reserved (+143 MiB for draft head)
-> 18322 slots
strata generate: expert cache 19183 slots, 25.77 GiB of VRAM; policy PROFILE, no eviction
strata generate: pre-filled 19183 of 19183 slots in 2.4 s (11382 MB/s); slot 0 verified
strata serve: 462 MiB of VRAM free with everything loaded
- 专家 profiling 后按路由频率排序预填,19,183 个专家装进显存(占全部 24,576 个的 78%)
- 32GB 显存被吃到只剩 462 MiB 空闲(已经把能塞的都塞了)
- 7 个 CPU 核跑专家池,主线程占 0 号核
几个值得注意的点:
6.2 四次会话的速度统计(按启动分段)
| 会话 | 请求数 | 生成 tok/s(min / 中位 / max) | 预填充 tok/s(中位 / max) | 草稿接受率 | 专家缓存命中 |
|---|---|---|---|---|---|
| 10-07 16:35 | 162 | 48.5 / 79.7 / 121.9 | 1,158.6 / 1,418.1 | 77.0% | 99.0% |
| 10-07 19:57(短问答) | 4 | 61.0 / 76.2 / 80.4 | 110.2 / 150.0 | 68.6% | 98.6% |
| 10-08 19:23(短问答) | 1 | — / 58.0 / — | 123.9 | 64.3% | 97.0% |
| 10-08 20:24(开图) | 18 | 58.3 / 78.1 / 103.3 | 1,321.7 / 1,396.7 | 82.4% | 98.0% |
怎么读这张表:
- 主力场景是长上下文:中位 prompt 长度约 34,000 token,中位输出 1,383 token,最长一次生成了 32,768 token。
- 短请求跑不到中位速度:几十 token 的短 prompt 只有 58–80 tok/s,因为 2,048 token 的分块才是预填充路径的效率点,
短 prompt 的 GPU 占用不满;同理短输出没有 draft 积累,第一轮会慢些(官方也标注了这一点)。 - 投机解码的接受率很关键:长会话里 77%–82%,意味着接近四个草稿 token 里中三个 —— 这是速度的主要来源。
- 专家缓存命中 98–99%:32GB 显存的价值在这里兑现了,只有不到 2% 的专家要走 PCIe 或 CPU。
6.3 长上下文表现
KV 流式开启后,131,072 的上下文里只有 32,768 格常驻显存,其余放在 1.55 GiB 的 pinned RAM 里:
strata serve: prompt 29499 tokens = 19615 reused + 9884 read in 8161 ms (1211.1 tok/s),
6540 generated in 66571 ms (98.2 tok/s), drafts accepted 4923 of 5269
strata serve: KV streaming: 99.63% of 287297364 block reads hit VRAM, 4224.3 MiB read from RAM
前缀复用(19,615 token 直接命中缓存)+ KV 命中 99.63% —— 多轮长文档的体感是“后面几轮几乎瞬间开始”。
七、给它加上视觉多模态
7.1 原理:视觉是“外挂”的,不用重下模型
Strata 的视觉走 llama.cpp 的 mtmd 库独立进程 strata-vision.exe(143 MB,随引擎包自带),
配一个 865 MiB 的 mmproj 编码器权重。数据流是:
图片 → strata-vision(mmproj,独立进程)→ 嵌入向量文件 → 引擎 GENI 请求(需 --vision)
所以不需要重新打包模型、不需要重下 70GB,只要三件事。
7.2 先决问题:V100 到底能不能跑 GPU 编码器
官方文档说“现成编码器里有代码的卡是 RTX 20/30/40/50”,Volta 没提。翻引擎包的构建清单:
// engine-cuda12/BUILD.json
"archs": [60, 61, 70, 75, 80, 86, 89],
"vision_archs": [60, 61, 70, 75, 80, 86, 89],
"ptx": true, "cuda": "12.9", "experimental": true
vision_archs 明确包含 sm_70,还带 PTX 兜底。理论可用,于是单独把编码器拉起来试(不启动引擎,只占约 1 GB 显存):
startup : READY 2560 ← 3.5 秒完成加载
encode : OK 300 20 15 133 ← 640×480 图 → 300 个图像 token(20×15 网格)
耗时 : 0.13 s
实测通过,不用退到 CPU 模式(CPU 模式约 3 秒一张图,而且要改 --threads)。
7.3 配置改造三步
引擎和用户都没动了其模型文件,改的全是 strata-iq2_xs.json:
第一步,args 末尾加两个参数(缺少 --vision 时引擎收到图片嵌入会直接报ERR this engine was started without --vision):
"--kv-resident",
- "32768"
+ "32768",
+ "--vision",
+ "--vram-reserve-mib",
+ "700"
]
第二步,顶层新增 vision 段:
"vision": {
"exe": "F:\\AI\\Strata\\Strata\\engine-cuda12\\strata-vision.exe",
"mmproj": "F:\\AI\\Strata\\Strata-data\\models\\IQ2_XS\\mmproj-Qwen3.8-Flash-Next-BF16.gguf",
"model": "F:\\AI\\Strata\\Strata-data\\models\\IQ2_XS\\Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf",
"gpu": true,
"max_tokens": 1024
}
第三步,下载 mmproj(865 MiB,HF 直连不通走镜像):
curl -L --noproxy "*" -o mmproj-Qwen3.8-Flash-Next-BF16.gguf ^
https://hf-mirror.com/ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF/resolve/main/mmproj-Qwen3.8-Flash-Next-BF16.gguf
校验很重要:本机的 mmproj 本地大小
907,543,008字节,与远端Content-Length完全一致,GGUF v3、334 个 tensor。
7.4 开着图的代价(实测对比)
| 指标 | 关图 | 开图 | 差值 |
|---|---|---|---|
| 专家缓存槽位 | 19,183 | 18,107 | −1,076 |
| 专家缓存显存 | 25.77 GiB | 24.32 GiB | −1.45 GiB |
| 满载后剩余显存 | 462 MiB | 465 MiB | — |
| 生成 tok/s(中位) | 79.7 | 78.1 | −1.6(约 −2%) |
| 专家缓存命中 | 99.0% | 98.0% | −1.0% |
官方在 12GB 卡上测的是 −4%,本机只有约 −2% —— 因为 V100 有 32GB,损失的 1.45 GiB 只占缓存的 5.6%。
大显存卡开图几乎白嫖。
7.5 服务启动时的顺序验证
日志里能看到编码器的 stderr 直接汇进了同一个日志文件,位置在引擎启动行之前:
781 load_hparams: Qwen-VL models require at minimum 1024 image tokens
782 load_hparams: if you encounter problems with accuracy, try adding --image-min-tokens 1024
785 strata-vision: model files loaded in 2.5 s
786 strata-vision: warmed up at 1024 image tokens in 0.7 s
787 [strata] 2026-10-08 20:24:06 engine started: ... --vision --vram-reserve-mib 700
即:先加载编码器并预热到 1024 token(合计 3.2 秒),再启动引擎 —— 这样引擎规划专家缓存时才知道要给编码器留出那 700 MiB。
顺带一提,mtmd 提示 Qwen-VL 在指向/计数类任务上建议最少 1024 个图像 token。
本机走 GPU 模式默认上限就是 1024,不需要额外配min_tokens;
如果你打算拿它看图表、读小字,可以考虑在vision段里手工加"min_tokens": 1024。
八、结论与后续
- V100 + 64GB 这套“过时”组合,跑 125B MoE 完全够用,长上下文场景稳定 78 tok/s 上下。
关键是它命中了 Strata 的设计甜点:显存大 → 专家缓存多 → CPU 少干活。 - 老卡要走 CUDA 12 引擎,这是硬约束(CUDA 13 不支持 Volta),Windows 上直接下现成 zip 最省事。
- 视觉能力值得开:成本只有约 2% 的速度,换来 0.13 秒一张图的图片理解。
- 还想继续压榨的话:跑一次
START-HERE.bat --calibrate(约 5–10 分钟实测本机最优参数,目前仅 NVIDIA),
以及--parallel N开并发(本机 32GB 显存有余量)。
附录:命令速查
REM 预检(不安装,只看能不能跑、能跑哪些尺寸)
setup.py --check
REM 完整安装/重配(一路回车用推荐值)
START-HERE.bat --setup
REM 无交互安装指定配置 + 开 GPU 视觉
set HF_ENDPOINT=https://hf-mirror.com
START-HERE.bat --setup --model IQ2_XS --context 131072 --kv int8 ^
--vision gpu --vision-tokens 1024 --yes --no-start
REM 日常启动
run-iq2_xs.bat
REM 实测本机最优引擎参数(约 5-10 分钟)
START-HERE.bat --calibrate
附录:本机关键路径
| 用途 | 路径 |
|---|---|
| 引擎(CUDA 12) | Strata\engine-cuda12\strata.exe |
| 视觉编码器 | Strata\engine-cuda12\strata-vision.exe |
| 运行配置 | Strata\strata-iq2_xs.json |
| 运行日志 | Strata\strata-iq2_xs.log |
| 模型分片(64.2 GiB) | Strata-data\models\IQ2_XS\ |
| 视觉编码器权重(865 MiB) | Strata-data\models\IQ2_XS\mmproj-Qwen3.8-Flash-Next-BF16.gguf |
| 打包后的模型(1.44 GiB) | Strata-data\packs\iq2_xs\ |
| MTP 草稿层(6.45 GiB) | Strata-data\mtp\rt |
本文数据全部取自本机 Strata 引擎日志(engine 0.1.40,2026-10-07 至 10-08 共四次会话、185 次请求)。
参考:Strata 仓库 https://github.com/Niko1221/Strata · 量化权重 ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF
发表回复