开源llama.cpp Releases·原文 2026年10月23日

llama.cpp b11822修复qwen4exp层输入,DFlash草稿模型不再首次请求即中止

发布说明称,qwen4exp此前把宽残差以 [n_embd, hc, n_tokens] 形式作为t_layer_inp暴露,而DFlash草稿模型按 [n_embd, n_tokens] 读取,导致在qwen4exp目标上评估DFlash草稿时于llama_context::extract_layer_inputs首次请求即中止;该版本改为先取均值。

AI解读:llama.cpp发布b11822,变更条目为“fix qwen4exp layer inputs for DFlash drafters”(#30927)。

按发布说明,问题在于形状不匹配:qwen4exp将hc宽残差以 [n_embd, hc, n_tokens] 发布为t_layer_inp,而草稿模型按 [n_embd, n_tokens] 行读取层输入。

修复方式是像deepseek4处理其hyper-connection残差那样,在暴露前用普通均值合并各流,并且只为草稿模型实际请求的层构建均值。

发布说明的Assisted-by标注为pi:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF(MacBook,M5 Max,128GB);这是来源自述,未提供对应的性能或正确性数据。

llama.cpp发布b11822,唯一列出的代码变更是修复qwen4exp对DFlash草稿模型(drafter)的层输入(#30927)。

发布说明给出的原因是一个形状约定不一致:qwen4exp把hc宽残差 [n_embd, hc, n_tokens] 作为t_layer_inp暴露,而DFlash草稿模型把层输入读作 [n_embd, n_tokens] 行。

形状不匹配如何导致中止

发布说明解释,llama_context将每个embd_layer_inp缓冲区的大小设为n_embd * n_batch,而DFlash编码器输入宽度为n_extract * n_embd。因此在qwen4exp目标上评估DFlash草稿时,会在llama_context::extract_layer_inputs的首次请求处中止。

  • qwen4exp暴露的t_layer_inp形状:[n_embd, hc, n_tokens]
  • DFlash草稿读取的层输入形状:[n_embd, n_tokens]
  • embd_layer_inp缓冲区大小:n_embd * n_batch
  • DFlash编码器输入宽度:n_extract * n_embd

修复方式与适用范围

修复做法是在暴露前用普通均值把各流合并,这与deepseek4对其hyper-connection残差的处理方式相同;并且只为草稿模型实际请求的层构建均值,而不是对所有层都计算。

发布说明的Assisted-by字段标注为pi:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF,运行环境写作MacBook、M5 Max、128GB。该说明未附带修复前后的对比测试或性能数据。

  • 合并方式:plain mean(普通均值)
  • 参照实现:deepseek4对hyper-connection残差的处理
  • 计算范围:仅草稿模型请求的层
  • Assisted-by:pi:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF(MacBook,M5 Max,128GB)

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观