Closed ShadowTeamCN closed 9 months ago
开源代码还没有实现window attention。主要是现在的这个写法一开始就把ntk的值给定死了,导致每个层不能自适应的分配窗口大小和ntk。后面需要改一下cache和rope的位置才能把window引进来跟ntk相结合
开源代码还没有实现window attention。主要是现在的这个写法一开始就把ntk的值给定死了,导致每个层不能自适应的分配窗口大小和ntk。后面需要改一下cache和rope的位置才能把window引进来跟ntk相结合
了解了,还有一点疑惑就是窗口注意力是否有必要加, 也就是如果generate需要的信息正好是window-attn所排除的,那么回答必然不正确,加入window看似更低的ppl其实意义不大?
window-attn能看到范围并不局限于所设置的窗口大小,它的感受野可以依靠层数堆叠上去,理论上每个token能看到的最大序列长度为window_size * num_layers。
再补充一点,我们在加入window-attn时并不会简单的限制每层的窗口大小,而是底层用比较小的窗口,越往上窗口越大(配合上ntk)。比如前4层窗口大小为2048,后面4层为4096,再往上为8192...
window-attn能看到范围并不局限于所设置的窗口大小,它的感受野可以依靠层数堆叠上去,理论上每个token能看到的最大序列长度为window_size * num_layers。
这一点是知道的,不过还是有点疑虑会不会降低结果质量
@ShadowTeamCN 单加window-attn可能是会降低结果质量的,我们在ppl上的实验显示其值会高于ntk+logn。但是通过结合ntk+logn+window_attn,模型不光能取得更低的ppl,在一些长文本测试集上的效果也要更优,详见 https://github.com/QwenLM/Qwen/issues/61#issuecomment-1665982366
@ShadowTeamCN 单加window-attn可能是会降低结果质量的,我们在ppl上的实验显示其值会高于ntk+logn。但是通过结合ntk+logn+window_attn,模型不光能取得更低的ppl,在一些长文本测试集上的效果也要更优,详见 #61 (comment)
PPL在这种超长场景是意义有限吧 , 我这里面有一个测试场景, 给一串数组,让模型生成数组的第一个数字, 这个任务baichuan-13B,即ALiBi的方案在 8k上下文 场景的训练loss完全不下降,即感受野完全感知不到开头的token, 而随便换一个标准attention,几个step loss就变成0
@ShadowTeamCN 单加window-attn可能是会降低结果质量的,我们在ppl上的实验显示其值会高于ntk+logn。但是通过结合ntk+logn+window_attn,模型不光能取得更低的ppl,在一些长文本测试集上的效果也要更优,详见 #61 (comment)
PPL在这种超长场景是意义有限吧 , 我这里面有一个测试场景, 给一串数组,让模型生成数组的第一个数字, 这个任务baichuan-13B,即ALiBi的方案在 8k上下文 场景的训练loss完全不下降,即感受野完全感知不到开头的token, 而随便换一个标准attention,几个step loss就变成0
@logicwong 我自己还没有测过window-attn 在这个场景下的性能, 还有一点是根据 LM-infinite 和StreamingLLM的研究,window-attn最好加上头部的token,效果会更好一点,这个建议你们也关注下
@ShadowTeamCN 嗯,LM-infinite,StreamingLLM还有更早的空门那篇知乎我们也都看过,但还没实践。后面有时间了再对比下吧
@ShadowTeamCN 嗯,LM-infinite,StreamingLLM还有更早的空门那篇知乎我们也都看过,但还没实践。后面有时间了再对比下吧
ok,我先把issue close掉
是否已有关于该错误的issue或讨论? | Is there an existing issue / discussion for this?
该问题是否在FAQ中有解答? | Is there an existing answer for this in FAQ?
当前行为 | Current Behavior