在密集注意力路径上,rope_theta 将被忽略(硬编码为 10000/1000000)
作者: Mikyx-1创建于 2026年8月22日更新于 2026年8月26日
今天没有什么问题。 Gemma 2 / PaliGemma / T5Gemma / Gemma3-270M 在每一层都需要 10000;Gemma 3 和 Gemma 4 需要 10000 本地 + 1e6 全局;Qwen3 需要 1e6,并通过 use_global_timescale 和全局窗口来实现。树中的每个模型都匹配两个常量中的一个,因此这是潜在的问题,而不是现实中的错误。我关心的是 下一个 模型的失败模式。rope_theta 看起来像是这个问题的调节器,密集路径上默默地没有使用它,不匹配则不会产生断言和警告 - 只是默默地降低了输出,看起来不像是位置编码问题。LLaMA 类型的 500000,或者未来的任何具有不同值的 Gemma,都将以 10000/1e6 运行,而仅仅看起来“比预期的更差”。
建议的修复方案
- 将
config.rope_theta传递给本地的CreateInvTimescale调用(config已经是构造函数参数,因此不需要新的管道)。 - 在序列化兼容性的目的上,在
VisitFields的末尾添加ModelConfig::global_rope_theta = 1000000.0f,以及在Python/configs.cc中匹配的条目;将其传递给全局调用。 - 可选地从
CreateInvTimescale中删除base_frequency默认值,以便每个调用位置都必须指定其 theta 值。 - 在 Qwen3 配置中明确地设置这两个字段,以便表明它们的正确性,而不是偶然性。
内容来源: google/gemma.cpp