-
Notifications
You must be signed in to change notification settings - Fork 233
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG]Qwen模型加载后NTK未生效 #131
Comments
+1 发现超过2048长度之后效果就下降很多 |
@sunxichen qwen 目前没有支持 完整的 动态 ntk 和 logn_att, 所以太长的句子可能性能会有下降。 而且不同模型的 config.json 在描述和使用 ntk 特性的时候,感觉很多都有一些魔改,实在是很难对齐所有实现 。而且这个小模型的长句能力感觉也不能抱太大的期望。 |
大佬有计划解决一下Qwen的ntk长度扩展吗? |
@xyfZzz 其实实现过一个版本,但是魔改版本太多了,很多模型的 config.json 参数名称也是改来改去的,搞得很无语。下周定制修改一个 Qwen-7B 的版本吧,不过我尝试的效果来看,这种 7b 规模的小模型,其长句能力也就那样吧。 |
不固定的参数是不是可以不使用config里的内容,而是从外部传呢? |
@xyfZzz 好主意,但是当初接口没有设计好,参数越来越多了,参数要爆炸了。 |
I should say it might be quite difficult to incorporate our NTK method with continuous batching I guess. Sorry for the inconvenience... |
@JustinLin610 Yes,you are right. I have already implemented a version of NTK that can work with continuous batching, but it is not exactly the same as Qwen's. However, the performance is decent. |
大佬你好,我看了下你的代码,想问下,当前实现是一个固定非dynamic的ntk实现对么?然后scale的设置相当于是通过配置max_position_embeddings来实现的,相当于max_position_embeddings是固定设置的一个最大外推后长度,然后seq_length相当于模型原生长度,通过max_position_embeddings/seq_length来获取scale,然后计算对应的ntk_alpha。这样子的话,不管输入长短,都基于这个ntk_alpha来获取扩展后的位置编码。这样理解对么? |
@xyfZzz 是的,基本上如你述,因为实在没有办法简单的在拼接batch的时候,让不同请求的长短句中保存和使用不同的ntk position_emb(其实也能做,但是代价过高,需要每个请求都保存单独的position_emb, 然后再实现一个专用的kernel来补充一些细节), 既然长上下文本身能支持,那就统一大家都用长上下文对应的ntk position_emb,实际实验效果也还挺ok的,当然我觉得那个logn乘的特性也很关键。 |
Qwen模型加载后NTK未生效,超过长度后就开始重复生成了,请问能帮忙解决一下吗?
The text was updated successfully, but these errors were encountered: