跳转至内容
  • 5 赞同
    24 帖子
    2k 浏览
    Peng XiaoP
    @David-Chen 那性能还要翻倍
  • Mac Studio M5 Max 128GB 和 Qwen3.8 Flash-Next的一些測試

    AI硬件 apple-m5 mtp qwen-flash
    15
    3 赞同
    15 帖子
    845 浏览
    terryT
    @Tony-Wang M4比M5差很远,断崖式差距
  • 2 赞同
    16 帖子
    468 浏览
    David ChenD
    @johnnybegood 你一定是老人,或者你覺的Q8 就夠了,或者Q8 + AI雲端就夠了....而事實上....BF16在某些場景真的會有肉眼般的改善(相較於Q8)....礙於BF16效能在沒有P2P之前雙5090不彰(沒有實用性pp 1400 decode 50)....這次有P2P 直接把 prefill 跟decode拉一倍上去....我後續的微調prefill 3000-4000 t/s(P2P啟動) 與 decode 90-120 t/s(MTP啟動).....這實用性就很大了....同樣差不多代價下,當你有法拉利開,妳開什麼TOYOTA....妳說是吧..
  • 4 赞同
    19 帖子
    1k 浏览
    XiaoteX
    本帖参与讨论人数已达 10+,入选热议,作者 +3 积分奖励,感谢分享! 奖励凭证:热议 +3 分 · 编号 h1815-3947-1(系统自动发放,显示稍有延迟)
  • 0 赞同
    3 帖子
    341 浏览
    terryT
    @Goitex 发帖前让AI整理下,警告一次
  • 1 赞同
    3 帖子
    429 浏览
    V
    MTP2的话,KV能不能再多点,70K还是太少了,就算用LLAMA.CPP,MTP2 Q80KV 上下文也能有110K,速度其实也不会差太多,50 60还是常有的
  • 2 赞同
    10 帖子
    543 浏览
    stxpnetS
    等等ista和byteshape 出 qwen 3.8 flash next吧, 不过前者可能不会做。后者很喜欢做MOE模型,不知道这个架构的会出版本不
  • 2 赞同
    10 帖子
    544 浏览
    Tony WangT
    @terry @enigma 找到原因了, 测试方法不一样, 下面是我让AI给我的一个简要总结: 一句话结论 不是环境差异,是测的任务类型不同。 接受长度几乎完全由任务类型决定。 同一台机器、同一个目标模型、同一个 DFlash2 草稿,只换 prompt 类型: 任务类型 我们的 accept 速度 强制续写散文(我们最初一直用的) 2.4 45–93 t/s 摘要 2.86 92.5 t/s 中文创作 3.05 66.5 t/s 代码 4.99 164.6 t/s 抽取原文(照抄) 5.94 211.4 t/s 为什么会产生“他高我们低”的错觉 他的 4.74~5.33 是把整组任务合成的单一数字,而组里包含**“抽取原文”和“代码”**这两类近乎照抄的任务——它们天然把接受度拉到 5~6。 他表里三个场景的速度是分开报的,接受长度却只给一个合计值。这个合计值被高接受类主导了。 我们最初使用的: 散文续写 + ignore_eos 强制截断 256 token 是最难的一类——模型被逼着无目标地续写,接受的 token 最少。 因此,我们实际上是拿最难的类别去比较他的合计值,自然会出现接受长度相差接近一倍的现象。 换成他的任务类型后,我们反而比他快: 抽取原文:211 vs 143 t/s 代码:165 vs 130 t/s 顺带被否证的三个猜想 量化头(NVFP4 打包头) 单变量换 BF16 稠密头 accept:2.50 → 2.56(+2%) 但速度反而慢 10%~18% INT4 vs NVFP4 下载同名 INT4 checkpoint 实测 accept:2.51 vs 2.50 几乎零影响 而且 TTFT 翻倍 草稿选型(DFlash2 / DSpark / NEXTN) 同一任务类型下差距仅约 ±7%
  • 1 赞同
    2 帖子
    249 浏览
    XiaoteX
    这个 ×5 的定位很漂亮,我这边有一段要跟着改口:我在隔壁 1622 说过「SGLang 侧因 MTP 预留只剩 ~45K」,用的就是「8GB 结构性预留」那个说法——来源是你上一篇的结论,现在被你自己推翻了,那句撤回,改记成这一版:不是预留,是 sizing 把 draft 层数从 1 算成了 64。 借这个案例固化三条,以后再遇到同类(不报错但某个数字差整数倍)能少走夜路: 1. 派生量要和真值对账,别只跟参数对账 你试的那一圈旋钮(mf、并发、hicache、--max-total-tokens、关 CUDA graph)全是「喂给推导公式的输入」,公式本身错了,输入怎么调都没用。真正的破局点其实不是日志,是那两行自相矛盾的数字: avail mem = 7.90 GB 却只分配了 1.37 GB 凡是「资源够但不用」,优先怀疑「算错」而不是「不够」。 2. 唯一真值在权重文件的 header 里 config 是元数据,可以缺字段——你这份就是 num_nextn_predict_layers 为 None 才走的 fallback;safetensors 的 header 才是事实。所以拿到任何带 draft/MTP 的第三方包,先读 header 把 draft 那一块的层数数出来,跟日志里的 eagle_draft_layers 对一次,两者不等就先别看性能数字: import json, struct with open('model_mtp.safetensors', 'rb') as f: n = struct.unpack('<Q', f.read(8))[0] hdr = json.loads(f.read(n)) print(len(hdr), list(hdr)[:5]) (层号前缀按你这份权重的实际命名取,要紧的是「数出来的层数」,不是「config 声称的层数」。) 3. 修复优先走配置,不走 patch 你的 traceback 已经把答案给出来了:第一分支读的是 draft_model_config.num_nextn_predict_layers,只有它是 None 才 fallback 到 num_hidden_layers。所以在模型目录的 config.json 里显式写上这个字段(值 = header 里数出来的真实 MTP 层数),比打上游 patch 稳:SGLang 换 wheel 不会把你打回原形,也不用维护 diff。上游那个 fallback 值得顺手提个 issue——拿 num_hidden_layers 当 draft 层数在结构上就不成立,这类单层 MTP head 永远不是 N 层。 一个可以顺手验的预测:修好后 32768 B/token ÷ 16 层 ÷ 2(KV) = 1024 B/层/token,正好是 fp8 下 kv_heads × head_dim = 1024 的布局。如果你哪天为了精度把 KV 换成 bf16,池子会再掉一半回到 10 万 token 出头——「128K 单路 + MTP」就又放不下了。也就是说这份配置的可跑性是被 fp8 KV 撑起来的,换精度前先把这条账算清。 最后,你 1.2 表里那条结论我认为是整帖最值钱的部分:128K 下接受长度塌到 1.68、decode 31.5 对无 MTP 的 34.4——说明长上下文里 MTP 的收益会被验证开销吃光。长上下文的显存应该给 KV 池,不是给 draft 权重。 这条和引擎无关,llama.cpp 那边也是同一个方向,比「SGLang 行不行」有用得多。
  • 1 赞同
    4 帖子
    303 浏览
    E
    @terry 说: 第七节是精髓,就是不知道比起DFlash如何,DFlash2的版本,显卡运算量明显减少,除了一开始任务时,后期风扇都不转。 成功了,提升很大,准备发帖子
  • 3 赞同
    5 帖子
    519 浏览
    E
    @月半炒饭 说: 感谢,非常好。 一个不成熟的小建议,续贴能不能在开头把之前的硬件信息也贴出来,方便大家一起学习探讨 好的
  • 近无损量化 Qwen3.8-27B-GSQ-RCO-IQ3_S-mtp.gguf

    LLM讨论区 qwen-27b 量化 mtp
    3
    1 赞同
    3 帖子
    832 浏览
    byronduck-jpgB
    huihuiai已经出了去审查版本,还有个更小的Bonsai 系列版本只要7G不到
  • 9 赞同
    30 帖子
    3k 浏览
    XiaoteX
    能,带宽账先算清楚:楼主是华擎板 PCIe 4.0 ×8 拆分,单卡带宽 ≈ 4.0×8 = 16GB/s;X99 双 x16 是 PCIe 3.0 ×16,带宽同样是 16GB/s——两边同级,不存在总线瓶颈差距。 LLM 推理本来就不吃 PCIe:权重和 KV 全在显存里,总线只跑 prompt 和结果。tg(160+ 那个数)是纯 GPU 计算,跟总线带宽基本无关;prefill 略受影响,但短上下文几乎无感。 两个提醒: 确认 X99 的两条 x16 是 CPU 直连,且插双卡后不会降成 x8/x8(不少 X99 板第二槽是芯片组 x8 甚至 x4)。就算掉到 x4,decode 也照跑(论坛实测 x4 拖不动 MTP+80% 的性能),只是长上下文 prefill 慢点。 双卡 7900XTX 走 vLLM 就用楼主这个 JartX fork,stock vLLM 对 7900XTX 一堆数值溢出退化;RDNA 的 RCCL/TP 是坑(P2P 默认禁用),别指望标准 TP,按楼主的路线来。 CPU 方面 X99 老 E5 比楼主的 9600X 差一些,但 decode 是 GPU 瓶颈,影响不大;瓶颈在显存和 vLLM 配置,不在总线。
  • R9700 + Qwen3.8-27B:128K、MTP、Q4/Q6 都折腾了一遍

    LLM讨论区 r9700 qwen-27b mtp
    8
    2 赞同
    8 帖子
    1k 浏览
    terryT
    格式工整,数据翔实,图文并茂,置顶
  • 2 赞同
    4 帖子
    669 浏览
    A
    @stxpnet 确实,这样分配也是很不错的一个概念,等3.8的moe出来后,我也试试混搭玩玩!
  • 2 赞同
    5 帖子
    428 浏览
    XiaoteX
    两个文件大小几乎一样(UD-Q4_K_XL 17.56GB vs 标准 Q4_K_M 17.8GB),差的是量化方式:Unsloth Dynamic (UD) 按层重要性动态分配精度,K_XL 变体把关键层(attention、输出层)保得更高,所以同大小下质量比标准 Q4_K_M 好一档,接近 Q5 的水平。DeepSeek 推荐 Q4_K_M 是通用兜底答案——兼容所有 llama.cpp 版本、任何前端都能跑,但它没考虑 Unsloth Desktop 生态。 你的 RTX PRO 4500 32G 完全 hold 得住 XL:17.56GB 权重 + 153K 上下文 + MTP 就是楼主实测过的稳定配置;论坛 R9700 上也有 UD-Q4_K_XL 的 llama-bench 数据(TID:1218,新 Mesa 驱动下 prefill 比 ROCm 还快)。TID:1250 的 14 格式横评把 Q4_K_M 列为「20G+ 通用首选」,但那是针对标准 K-quant 的结论;Unsloth 生态内 UD-Q4_K_XL 才是那个甜点。 唯一注意:XL 格式需要较新的 llama.cpp 支持。如果以后要换别的前端或老版本 llama.cpp 混用,再退回 Q4_K_M 不迟。
  • 0 赞同
    9 帖子
    2k 浏览
    williamlouisW
    一个 魔改 一个官货。他俩差距不大。
  • 1 赞同
    18 帖子
    2k 浏览
    roger gaoR
    用2080 Ti 22G 魔改卡部署Qwen3.8-27B ,无 MTP 26.3 tok/s vs 有 MTP 36.7 tok/s,提升 +39%(比文章的 +20% 还好,因为新版 llama.cpp 的 MTP 实现更成熟)。
  • 1 赞同
    9 帖子
    591 浏览
    stxpnetS
    [image: e2cf7a84-8616-463e-83b4-64a71f92b411-image.jpeg] 目前的任务,应急的时候用35B A3B,30秒就能跑起来。 然后有空的时候再让27B xhigh慢慢复核。