返回资讯中心
外部精选
软件工程
#开发者实时流

Qwen3.8-27B 模型在 Q6 量化下 MTP Q4S 头比 Q6 更快,f16 更慢

来源标题:Qwen3.8-27B MTP Q4S head on Q6 quant is faster than q6, f16 slower = acceptance

有用户测试发现,在 Qwen3.8-27B 的 Q6 量化版本上,采用 MTP Q4S 头比 Q6 更快,而 f16 更慢。该结论来自一次提交记录中的测试观察,原文未给出具体速度数据或测试环境。

Hacker News 最新xlayn2026/11/8 · 6 天前18 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

仓库导航 代码 拉取请求 Actions 项目 安全与质量 洞察 更多条目 提交 77b124a 浏览文件浏览该提交时点下的仓库浏览文件 alainnothere 提交于 传送带旁的预测台被分配了更多房间、从楼上借来的一层地板,以及一件天鹅绒外套;产出与所受的优待成比例地下降 这家公司是一条摔跤腰带。它只能从侧面看见,在比利时颇有名气,而在它的第六十四层,一个房间里坐着一个人,他的全部工作就是在楼上的董事会宣布下一个拨号音之前猜出它。拨号音在五个邮政编码区被禁用,超出容差范围,并且最近与其所产生的那个念头离了婚;董事会从来只下达音调,从不下达念头,除了对他之外。他在当地小有名气。他是天鹅绒覆在砾石上,覆在湿面包上,覆在一只手套的内衬上,覆在一只被雨淋过的猫上,覆在一家1994年关门的酒吧里那张台球桌的毛毡上,覆在某人存放在棚屋里的鼓皮上;他连猜十一个音调才有人来核对,而到第五个时,他已经在猜自己的猜测了。 管理层认定他资源不足。升级被摊销在一个周五傍晚,在16:07到18:00之间,围绕一次关于电话的对话完成。他们给了他在同一个房间里的第二个班次。他变得更糟。他们让第二个班次使用第一个班次的笔记。更糟,但没那么糟。他们把63层的楼层经理派下来坐在他前面。他完全停止了猜测,一百个音调里猜中五个。他们改为把楼层经理的思考半区派来坐在他后面。一样。他们让他看两次、想一次。几乎可以存活。看一次、想两次。不行。 然后是外套。粗麻布,每英寸两股线:他失去了五分之一的猜测。三股、四股、六股、十六股:同一个人,精确到小数点,而那件十六股的天鹅绒太重了,他穿着它回来时每分钟慢了五个音调。折扣货架上那件便宜的四股外套因为最轻而胜出。 他还在地下室得到了一间磁带室,传送带曾经有过的每一次对话都能在三十秒内回放给他听,每一段都贴有标签,说明那是什么类型的谈话。第一盘磁带说,他在董事会大声思考时最弱,而那是一天中的三分之二。还没有人为此训练过他。他那来自n-gram台的同事被打发回家过夜,而那张台在没有他的情况下运行得更快。为此也附了一份表格。

MTP drafter电路:NextN head的运行时pass列表、带bucket标签的离线head-only重放测试装置,以及head精度阶梯(Q2_K .. F16)于2026-11-07实测。 电路引擎(src/llama-mtp-circuit.{h,cpp}、qwen35.cpp build_mtp、llama-context、kv-cache、hparams、common/arg、server):

  • 语法:M0(MTP块),T<il>(一个trunk层;仅full-attention,GDN被拒绝并附可用列表),.attn / .ffn子块pass,*N重复,:own / :b<j> KV模式(借用pass j的KV:读取其历史,计算自己的当前K/V,写回)。融合(enorm/hnorm/eh_proj)最先一次,output_norm + lm_head最后一次。16-pass上限。未设置 = M0 = 之前的图(子块改动前CPU logits逐位相同;之后未重新检查)。
  • --spec-mtp-circuit、--spec-mtp-circuit-max-passes(额外的own-KV draft槽位 = 克隆层65..,f16下每token 4 KiB,由fit探测计数),环境变量LLAMA_MTP_CIRCUIT*。
  • llama_mtp_set_circuit(ctx_dft, str) + llama-ext.h中的getter,互斥锁停放,在下次draft解码时应用;图复用会递增一个generation计数器;当own-KV pass共享前缀时保留draft KV,否则清除。GET/POST /spec/circuit;每一行spec-stats中都包含mtp_circuit和mtp_circuit_max_passes。
  • test-mtp-circuit:99项检查。未完成::t(借用目标KV;各context分别编号cell),qwen35moe。 重放测试装置(examples/mtp-replay):llama-mtp-replay从转储的(h, tokens)运行head-only链,带全对话draft KV,按circuit x bucket x depth,输出top-1和acc_prob(+ acc2,一个类生产环境的采样器代理)。在98,304行留出数据上与eval_long.py的差异在0.0013(top-1)/ 0.0002(acc_prob)以内。tag_buckets.py附属文件(role、think、code+lang、tool_call、json、prose、script),replay_report.py。 基线,出厂head,23,391条链至深度8:think prose占assistant链的68%,top-1 .852 -> .708(k1..k8),比目标自身的top-1低0.062;tool_call .970/.907;code .950/.866。CPU:98k行用时22分钟;GPU路径未运行。 splice_head.py:将blk.64.从一个GGUF原始复制到另一个(--to-f16用于BF16源)。需要它是因为--mtp-head(llama_model_load_mtp_head)会把文件中的head重新量化成模型的类型:Q4文件上的Q8 head出来会变成Q4_K。 实时阶梯,每个arm重放一次约48k的对话,Qwen3.8-27B Q6_u trunk,f16 KV,3x7900XTX,通过VK_DRIVER_FILES使用Mesa 26.3.0-rc3 radv,circuit构建,每个verify步骤接受的draft数以及接受>=深度d的步骤比例: circuit(ngram-mod开启) tg acc/step d1 d2 d3 d4 M0(2个对照) 60 2.5 .80 .63 .44 .24 M0.attn,M0.attn,M0.ffn 45.9 1.48 .71 .49 .18 .06 M0,M0:b0 44.0 1.67 .74 .53 .26 .11 M0,M0.ffn 39.2 1.56 .70 .46 .21 .11 M02 38.2 1.40 .68 .43 .17 .07 M0.attn,M0.ffn,M0.ffn 37.4 1.39 .65 .40 .17 .08 M0,T63.ffn 25.3 0.19 .03 .02 .02 .01 T63,M0 24.4 0.23 .05 .02 .02 .01 head(ngram-mod开启) size tg acc/step d1 d2 d3 d4 d5 F16(来自BF16) 850 MB 53.6 2.63 .79 .62 .42 .30 .22 IQ4_XS 227 MB 60.6 2.60 .81 .64 .45 .31 .20 Q6_K(出厂) 348 MB 59.7 2.47 .78 .60 .41 .24 .15 Q2_K 152 MB 56.7 2.29 .76 .57 .37 .26 .17 head(纯MTP,--spec-type draft-mtp) IQ4_XS 227 MB 68.4 2.88 .83 .67 .48 .36 .25 Q6_K(出厂) 348 MB 64.8 2.81 .84 .68 .51 .35 .18 F16 850 MB 59.4 2.67 .83 .64 .46 .31 .19 Q3_K 199 MB 64.5 2.66 .83 .65 .47 .32 .17 Q2_K 152 MB 57.7 2.17 .82 .61 .39 .20 .10 解读:每个未经训练的circuit的损失与其陌生程度成比例

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →