单张 RX7900XTX跑Qwen3.8-Flash-Next(125B-A6B):Avalon vs Strata 引擎
-
最近千问3.8 Flash Next很火热一下,虽然我都是用在线模型,但也准备一手本地模型以防不时之需。在做功课的时候,看到RX7900XTX有两个引擎,Avalon 和 Strata RDNA3的分支。但Avalon好像没有什么人测试,我就帮忙做一下吧。
简单讲一下他们的特性,两个引擎都靠"专家放内存、显卡只装稠密权重和最热的专家"把 125B MoE 塞进一张 24 GB 消费卡。这份数据在同一台
机器上、用完全相同的 prompt 原文、让两个引擎各跑自己的最佳配置测出来。测试平台
部件 具体型号 主板 Gigabyte TRX40 AORUS PRO WIFI(BIOS F7g) CPU AMD Ryzen Threadripper 3960X,24 核 48 线程(Zen 2,最高 4.57 GHz) 内存 8*16GB - 128GB DDR4 3200Mhz 四通道 显卡 ASUS Radeon RX 7900 XTX 24 GiB(RDNA3 / gfx1100),PCIe 4.0 x16,功耗上限 315 W 系统盘 500 GB SSD(Ubuntu + ROCm + 两个引擎的源码与编译产物) 模型盘 1 TB NVMe(ADATA LEGEND 860),实测顺序读 5.2 GB/s 系统 Ubuntu 24.04.5 LTS,内核 6.8.0-149-generic,in-tree amdgpu驱动(无 DKMS)计算栈 ROCm 7.2.4(系统安装,gfx1100) (我已经把我的VM拆出来分别给几台电脑,现在这台服务器就只是拿来跑AI而已了,之前的64GB有点勉强够用。)
两套引擎
Avalon Strata(RDNA3 fork: nicejunjie/Strata-rdna3)版本 commit 88313b6(llama.cpp 的分支)iq3-1gpu配置,引擎由./setup.sh于 2026-11-09 现场编译量化 IQ3_KS hybrid(专家 2–4 bit 混合,89.7 GiB,33 个分片) IQ3_S(ISTA GSQ-RCO,79 GB 分片 + 46.84 GiB 的 experts.bin打包)投机解码 MTP 头, --spec-draft-n-max 3自带 MTP 头, --spec-draft-vocab rdna3/draft_vocab_zh60k.bin上下文 -c 262144,KV 用 q8_0(K)/q4_0(V),放显存262,144,KV 流式放内存( --kv-resident)额外内存占用 专家约 52 GiB 常驻进程自管内存 专家约 50 GB + PLE(n-gram) 表 29 GB 常驻内存 内存需求 ~52 GiB ~95 GB 磁盘占用 90 GiB 134 GB 启动方式 llama-server+ README 原版参数rdna3/run.py iq3-1gpu两个引擎加载的是不同的权重文件(Avalon 的 GGUF 用了它自有的 IQ3_K/IQ3_KS 类型和打包布局,stock llama.cpp
和 Strata 都打不开),所以这份对比是"引擎 + 它对应量化"的对比,不是量化对比。这一点请勿误读。测试方法
- prompt 使用 Strata 自带的基准脚本(
rdna3/bench.py):N token 的合成仓储记录,开头、中间、结尾各埋一个密码,
最后要求长回答;用模型自己的 tokenizer 和 chat template 构造,长度精确为 32,768 / 65,536 / 131,072 / 261,632 token。 - 每档跑 3 次,输出固定 256 token,温度 0,种子 42,不开 prompt 缓存,关闭思考模式。
- 每个请求必须报告精确的 prompt token 数(无缓存命中)、256 个输出 token,并且取回三个密码(检索校验,来自
基准脚本本身,不是我另加的)。 - 速率取引擎自报的
prompt_per_second/predicted_per_second,每格为 3 次的中位数。 - 同一批 12 条 prompt 原文分别喂给两个引擎(Avalon 走
/completion,Strata 走它自带服务),保证文本完全一致。
测试结果
上下文 Avalon prefill prefill 耗时 Avalon 解码 Avalon 总耗时* Strata prefill prefill 耗时 Strata 解码 Strata 总耗时* 32k 1,906 tok/s 17.2 s 118.3 tok/s 19.9 s 2,992 tok/s 11.0 s 94.6 tok/s 13.7 s 64k 1,838 35.7 s 121.0 38.8 s 3,010 21.8 s 99.6 24.3 s 128k 1,789 73.2 s 122.7 77.4 s 2,912 45.0 s 104.4 47.5 s 256k 1,666 157.0 s 111.7 162.7 s 2,714 96.4 s 101.9 98.9 s * = prefill 时间 + 生成 256 token 的时间,也就是一个请求从发出到答完的实际耗时。
指标 Avalon Strata 胜出 Prefill 1,666 – 1,906 tok/s 2,714 – 3,010 tok/s Strata,快 1.56–1.64 倍 解码 111.7 – 122.7 tok/s 94.6 – 104.4 tok/s Avalon,快 1.10–1.25 倍 256k 首 token 延迟 157 s 96 s Strata 256k 检索校验 12/12 全过 12 次中仅 3 次通过(3 次运行挂 2 次) Avalon 数据解读
两个引擎优化的是请求的两端。 Strata 的 prefill 快 1.6 倍,而且在 256k 满上下文时仍有 2,714 tok/s —— 因为
这个 RDNA3 分支是围绕"喂 prompt"设计的:K-quant 的 MMQ prefill kernel、STRATA_PREFILL_CPU_SHARE把一部分
prompt 计算交给 CPU、29 GB 的 n-gram 表常驻内存让新 prompt 不必等 SSD、KV 缓存放内存让整张 24 GB 卡都留给专家。
Avalon 则赢在解码:GPU 专家缓存让一个 token 的大部分专家不必落到 CPU,MTP 草稿头把一个验证窗口变成约 2.5 个 token。"谁更快"完全取决于 prompt 与回答的比例。 喂一份 256k 文档、只要一段总结(agent、RAG、代码审查):Strata
端到端快 64 秒,省掉近 40% 时间。短 prompt、长回答的聊天:Avalon 每秒多 10–25% token,而聊天里 token 数才是
主要成本,prefill 只占开头。满上下文只有一方可靠。 32k / 64k / 128k 两个引擎都把三个密码全部取回(各 3/3)。到 261,632 token 时,
Avalon 全部请求通过;Strata 在两轮独立的基准运行里都是 3 次挂 2 次、只过 1 次。两边的速度在这个长度上
差不多(解码 101.9 vs 111.7),所以如果你要用 Strata 跑 256k,请先用自己的数据验证。Strata 的"最佳配置"验证:它的 setup 会提示加
--prefill auto:32768(社区报告快 21–35%)。实测:
2,942 / 2,976 / 2,894 / 2,700 tok/s,对比原配置 2,992 / 3,010 / 2,912 / 2,714 —— 没有提升,反而低 0.5–1.7%,
所以下表用的是它出厂的--prefill auto。关于宿主差异的校准说明。 Strata 分支的作者是在 9950X3D + DDR5 平台上测的。在这台 DDR4 + Zen 2 的机器上,
Strata 只有他参考值的 0.81–0.84 倍(prefill) 和 0.88–0.93 倍(解码)。表里 Avalon 的数字是同一台机器
测的,所以引擎对比本身没有被这一点污染;但请不要把我的 Strata 数字直接去对他的表。中文场景实测(出乎意料的一组)
英文是"各有胜负",中文则是 Strata 明显更好。同一批 5 条 prompt(3 中文 + 2 英文)、300 输出 token、温度 0:
- Avalon,MTP
n-max 3— 中文解码: 60.8 tok/s; 中文草稿接受率: 0.12; 英文解码: 106.0 tok/s; 英文草稿接受率: 0.49 - Avalon,MTP
n-max 2— 中文解码: 67.3; 中文草稿接受率: 0.17; 英文解码: 105.8; 英文草稿接受率: 0.62 - Avalon,关闭 MTP — 中文解码: 71.2; 中文草稿接受率: —; 英文解码: 72.7; 英文草稿接受率: —
- Strata(出厂配置,自带
draft_vocab_zh60k.bin) — 中文解码: 96.0; 中文草稿接受率: 0.47–0.59; 英文解码: 103.6; 英文草稿接受率: 0.61–0.64
四个要点:
- Strata 的中文比 Avalon 最好的配置还快 35%(96.0 vs 71.2),比 Avalon 默认配置快 58%(96.0 vs 60.8)。
- 原因是草稿词表。Avalon 的 MTP 头是按英文词频裁剪的 65k 词表,中文草稿大量落在表外,接受率只有 0.11–0.17,
验证开销变成净损失;Strata 这个分支专门做了一个面向中文的 draft 词表(draft_vocab_zh60k.bin,含覆盖其自身
中文回答 99.5% 的汉字 token),中文接受率 0.47–0.59,基本维持在英文水平。 - 语言惩罚对比:Strata 的中文只比它的英文慢 7%(96.0 / 103.6);Avalon 开着 MTP 时中文只有英文的 57%。
- Avalon 没有可调的中文选项。 它的 draft 词表是烘进 MTP 那个 GGUF 的(
draft_vocab/draft_vocab_size
为模型内嵌字段,文件名里的FR65k就是 65k 裁剪),llama-server没有--spec-draft-vocab一类参数,
所以中文接受率低是固化的,只有"关掉 MTP"能绕开,代价是英文从 106 掉到 73。上面三档在 2026-11-09
复测过一次,两轮差异在 3% 以内(中文 60.7 / 65.3 / 73.1,接受率 0.12 / 0.14),不是偶发波动。
所以如果你的主要用的是中文,直接选 Strata,而且它同时还赢着 1.6 倍的 prefill。
建议
你的场景 装哪个 长文档、agent 循环、代码审查(大 prompt、短回答) Strata —— 瓶颈在 prefill,它快 1.6 倍 聊天、写作、翻译(短 prompt、长回答) Avalon —— 解码快 1.1–1.25 倍,且满上下文可靠 中文 Strata —— 中文解码 96.0 tok/s,比 Avalon 最好的配置(71.2,且必须关掉 MTP)快 35%;其中文 draft 接受率 0.47–0.59,Avalon 只有 0.11–0.17 一句话结论:Strata 的 prefill 快 1.6 倍,Avalon 的解码快 1.2 倍,而 256k 满上下文只有 Avalon 稳定取回了检索码。综合表现还是Strata占据上风
复现
Avalon
git clone https://github.com/freriadoc/Avalon && cd Avalon cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1100 -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=/opt/rocm/bin/amdclang -DCMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++ cmake --build build -j24 --target llama-server llama-server -m Qwen3.8-Flash-Next-Avalon-IQ3KS-00001-of-00033.gguf \ -c 262144 -b 9536 -ub 9536 -fa on -ctk q8_0 -ctv q4_0 --jinja --parallel 1 \ -md MTP/mtp-Qwen3.8-Flash-Next-shared-IQ3K-IQ4NL-FR65k.gguf \ --spec-type draft-mtp --spec-draft-n-max 3 -ubd 256 -ctkd q8_0 -ctvd q8_0(中文场景把
-md ... --spec-type ... -ubd ... -ctkd ... -ctvd ...整段去掉即可,实测更快。)Strata(RDNA3 fork)
git clone https://github.com/nicejunjie/Strata-rdna3 && cd Strata-rdna3 export XDG_CONFIG_HOME=$PWD/.config ./setup.sh --setup --build --backend hip --family qwen --model IQ3_S --vision cpu \ --data-dir /path/to/Strata-data --no-start --yes export STRATA_GGUF_PY=$PWD/third_party/llama.cpp/gguf-py .venv/bin/python tools/iq_pack.py --gguf <data>/models/IQ3_S/...-00001-of-00002.gguf \ --out <data>/packs/iq3_s --experts-bin # 46.84 GiB,bench.py 必需 .venv/bin/python rdna3/bench.py iq3-1gpu --data <data> --gpus 0 \ --lengths 32768,65536,131072,261632几点说明
- 单卡、单机、每个引擎一种量化;每格 3 次取中位,这台机器单次运行本身有 ±10% 波动。
- 单卡就别想多并发了,就乖乖排队吧。
- 视觉通路未测。
- 内存与显存数字是运行期间实际观测值(RSS / VRAM),不是申请值。
各位也可以测试一下,如果有什么问题,也欢迎各位指点。毕竟我只是叫AI帮我测,我也不是专业评测和调试的。
- prompt 使用 Strata 自带的基准脚本(