llama.cpp 项目发布了构建版本 b10829,修正了门控 delta 网络 (GDN) 查询/键归一化的实现。该更改将归一化方法从使用 `max` 切换为 `rsqrt`,与 flash-linear-attention 使用的定义保持一致。

  • GDN q/k 归一化现在使用 flash-linear-attention 定义的 `l2norm`:`x * rsqrt(sum(x*x) + eps)`。
  • 此前,llama.cpp 使用 `ggml_l2_norm`,它通过 `max(sqrt(sum(x*x)), eps)` 应用截断,而不是将 epsilon 放在根号内。
  • 此修复解决了对齐问题,该问题也曾影响 Hugging Face 的 transformers 库中 Qwen3-Next 的实现,直到在拉取请求 #40842 中得到修正。
  • 该更新确保了与参考实现的一致性,其中 epsilon 包含在平方根计算内。

此修正确保了使用 GDN 层的模型(例如基于 flash-linear-attention 的模型)的行为与其参考实现完全一致。