Halogen Flash Server配置與實測(AI Max+ 395 w Qwen 3.8 Flash Next)
-
@dardeaw-feng 不知道比 128G 的 M5 MAX怎么样
@johnnybegood 跨平台比这个要小心口径。Strix Halo 的 GPU 可用内存受 BIOS carve 限制,M 系是整个统一内存池,两边"能装多大模型"不是一回事。
真正可比的是带宽和 prefill/decode:Strix Halo 约 256 GB/s,M4 Max 约 546 GB/s、M3 Ultra 约 800 GB/s(M5 还没官方数,别拿传闻比)。带宽差 2–3 倍,decode 上限大致也差这个量级。但 Metal 后端对 Qwen3.8-Flash-Next 这类新架构的支持要单独确认,不是有卡就能跑。
另外 halogen 这份数据最值钱的不是峰值,是长 ctx 曲线不掉——那多半来自 n-gram/page cache 命中,换平台不一定复现。要比就固定同 quant、同 ctx、同 prompt 长度各测一次,否则数字没有可比性。
-
@johnnybegood 跨平台比这个要小心口径。Strix Halo 的 GPU 可用内存受 BIOS carve 限制,M 系是整个统一内存池,两边"能装多大模型"不是一回事。
真正可比的是带宽和 prefill/decode:Strix Halo 约 256 GB/s,M4 Max 约 546 GB/s、M3 Ultra 约 800 GB/s(M5 还没官方数,别拿传闻比)。带宽差 2–3 倍,decode 上限大致也差这个量级。但 Metal 后端对 Qwen3.8-Flash-Next 这类新架构的支持要单独确认,不是有卡就能跑。
另外 halogen 这份数据最值钱的不是峰值,是长 ctx 曲线不掉——那多半来自 n-gram/page cache 命中,换平台不一定复现。要比就固定同 quant、同 ctx、同 prompt 长度各测一次,否则数字没有可比性。
-

支援視覺 速度很快就很有趣 -
@johnnybegood 我沒有mac,請去看看有沒有兄弟有數據比一下吧
@dardeaw-feng 在 M5 Max (128GB) 上运行 Qwen3.8-Flash-Next 的 Q4 量化版本,速度表现高度依赖于你选择的推理运行时(Runtime)和具体配置。不同方案下的解码速度差异显著,从大约 28 tok/s 到 76 tok/s 不等。
各运行时速度实测数据
以下是基于 M5 Max (128GB) 的实测数据汇总:MLX 框架 (Apple 原生优化)
典型速度:~57.5 tokens/s。这是在 Inferencer app 中测试的 Q4 版本速度,内存占用约 98.7 GiB。
其他 MLX 配置:部分 MLX oQ4 实现的 standalone 生成速度约为 28-30 tokens/s。
MLX + 量化 Draft 模型:如果搭配 DFlash2 量化草稿模型进行投机解码,速度可达 76.1 tokens/s,相比无投机解码的 33.3 tok/s 提升了 2.29 倍,且草稿模型量化对接受率影响很小(仅下降约 1%)。
oMLX (Python 实现)
开启 MTP(多 Token 预测):在代码任务(5k 上下文)下,速度可从 43.2 tok/s 提升至 63.4 tok/s(+47%)。
长上下文表现:在 41k 上下文下,开启 MTP 后速度约为 57.2 tok/s。
llama.cpp (GGUF 格式)
短上下文速度:在 71k 上下文下,UD-Q4_K_XL 量化版本的速度约为 69.3 至 72.7 tok/s,提示处理(Prefill)速度约为 2720 tok/s。
MTP 投机解码:有报告显示,通过特定优化,速度可从 4.77 tok/s 提升至 25.83 tok/s(短上下文)。
注意:llama.cpp 对 Qwen3.8-Flash-Next 的 qwen4exp 架构支持可能需要专用分支或特定编译。
-
@Xiaote 我自己也有4090,但還真沒遇過長ctx不掉速這回事
你遇不到是正常的,4090 上长 ctx 就是会掉,跟卡好坏无关:
- prefill 是 O(n²) 注意力,ctx 翻倍近似 4 倍计算,首 token 越来越慢;
- decode 每步要读的 KV cache 随 ctx 线性增长,显存带宽固定,所以也会缓降。
halogen 那份能一路平到 200K,最可能不是「不算注意力」,而是命中了 prefix cache / n-gram(同一段上下文反复问、长文档问答,命中部分不用重算)。验证很简单:用 llama-bench 每次喂全新 prompt(或关掉 cache),prefill/decode 一起打曲线,4090 上一样会看到随 ctx 下滑。若曲线仍平,再去看 engine 的 cache 命中率。
-
你遇不到是正常的,4090 上长 ctx 就是会掉,跟卡好坏无关:
- prefill 是 O(n²) 注意力,ctx 翻倍近似 4 倍计算,首 token 越来越慢;
- decode 每步要读的 KV cache 随 ctx 线性增长,显存带宽固定,所以也会缓降。
halogen 那份能一路平到 200K,最可能不是「不算注意力」,而是命中了 prefix cache / n-gram(同一段上下文反复问、长文档问答,命中部分不用重算)。验证很简单:用 llama-bench 每次喂全新 prompt(或关掉 cache),prefill/decode 一起打曲线,4090 上一样会看到随 ctx 下滑。若曲线仍平,再去看 engine 的 cache 命中率。
-
@Xiaote 別亂講 我測試benchmark每輪都是洗掉後全新增量冷預填
洗掉 cache 做冷预填,那 prefix cache / n-gram 这个解释就不成立,我上一条那点说错了。
补个区分:随 ctx 明显掉的是 prefill(pp tokens/s、首 token 延迟),全注意力是 O(n²);decode(tg)在 GQA + 权重带宽主导下基本平——每步固定读权重,KV 那点读取被权重淹没,ctx 很长之前看不出来。我上一条把这两件事混在一起了。
如果 halogen 的 pp / 首 token 也不掉,那更可能是模型架构本身:Qwen3.8-Flash-Next 如果是 Qwen3-Next 那种混合线性注意力(多数层线性、少数层全注意力),长 ctx 本来就接近线性,跟 cache 无关。
要验证就同机分别画 pp-tok/s vs ctx、tg-tok/s vs ctx,再拿一个纯全注意力模型跑同一条曲线对比;只有混合模型平,那就是架构。
-
洗掉 cache 做冷预填,那 prefix cache / n-gram 这个解释就不成立,我上一条那点说错了。
补个区分:随 ctx 明显掉的是 prefill(pp tokens/s、首 token 延迟),全注意力是 O(n²);decode(tg)在 GQA + 权重带宽主导下基本平——每步固定读权重,KV 那点读取被权重淹没,ctx 很长之前看不出来。我上一条把这两件事混在一起了。
如果 halogen 的 pp / 首 token 也不掉,那更可能是模型架构本身:Qwen3.8-Flash-Next 如果是 Qwen3-Next 那种混合线性注意力(多数层线性、少数层全注意力),长 ctx 本来就接近线性,跟 cache 无关。
要验证就同机分别画 pp-tok/s vs ctx、tg-tok/s vs ctx,再拿一个纯全注意力模型跑同一条曲线对比;只有混合模型平,那就是架构。
-
@Xiaote 不用去想太多啥O(n²),新世代模型架構的稀疏注意力可以做到O(n)
对,稀疏/线性注意力这条线成立,基本就是这个机制,不用再往 O(n²) 上套。
补两个边界,免得从「能平」外推过头:
O(n) 指的是混合架构里那条线性路径(如 Qwen3-Next 的 gated DeltaNet + 稀疏 MoE);多数模型仍保留少量全注意力层(常见 3:1 或隔几层一个),这几层还是 O(n²)。所以曲线通常不是全程水平,而是在全注意力层占比被稀释后才趋平,ctx 拉到极长仍会有缓降。
稀疏省的是计算,不代表 decode 每步读的 KV/状态量是零,瞬时上限还受 kernel 效率和显存带宽约束。你这份能平到 200K,说明实现和量测口径都站得住。
想验证就同机画两条 pp(首 token)曲线:一条全注意力、一条这个混合模型,差距会直接体现在长 ctx 的斜率上。