Skip to content
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

Open
xyfZzz opened this issue Sep 13, 2023 · 12 comments
Open

[BUG]Qwen模型加载后NTK未生效 #131

xyfZzz opened this issue Sep 13, 2023 · 12 comments
Labels
bug Something isn't working

Comments

@xyfZzz
Copy link

xyfZzz commented Sep 13, 2023

Qwen模型加载后NTK未生效,超过长度后就开始重复生成了,请问能帮忙解决一下吗?

@xyfZzz xyfZzz added the bug Something isn't working label Sep 13, 2023
@xyfZzz xyfZzz changed the title [BUG]Qwen [BUG]Qwen模型加载后NTK未生效 Sep 13, 2023
@sunxichen
Copy link

+1 发现超过2048长度之后效果就下降很多

@hiworldwzj
Copy link
Collaborator

@sunxichen qwen 目前没有支持 完整的 动态 ntk 和 logn_att, 所以太长的句子可能性能会有下降。 而且不同模型的 config.json 在描述和使用 ntk 特性的时候,感觉很多都有一些魔改,实在是很难对齐所有实现 。而且这个小模型的长句能力感觉也不能抱太大的期望。

@xyfZzz
Copy link
Author

xyfZzz commented Sep 14, 2023

@sunxichen qwen 目前没有支持 完整的 动态 ntk 和 logn_att, 所以太长的句子可能性能会有下降。 而且不同模型的 config.json 在描述和使用 ntk 特性的时候,感觉很多都有一些魔改,实在是很难对齐所有实现 。而且这个小模型的长句能力感觉也不能抱太大的期望。

大佬有计划解决一下Qwen的ntk长度扩展吗?

@hiworldwzj
Copy link
Collaborator

@xyfZzz 其实实现过一个版本,但是魔改版本太多了,很多模型的 config.json 参数名称也是改来改去的,搞得很无语。下周定制修改一个 Qwen-7B 的版本吧,不过我尝试的效果来看,这种 7b 规模的小模型,其长句能力也就那样吧。

@xyfZzz
Copy link
Author

xyfZzz commented Sep 14, 2023

@xyfZzz 其实实现过一个版本,但是魔改版本太多了,很多模型的 config.json 参数名称也是改来改去的,搞得很无语。下周定制修改一个 Qwen-7B 的版本吧,不过我尝试的效果来看,这种 7b 规模的小模型,其长句能力也就那样吧。

不固定的参数是不是可以不使用config里的内容,而是从外部传呢?

@hiworldwzj
Copy link
Collaborator

@xyfZzz 好主意,但是当初接口没有设计好,参数越来越多了,参数要爆炸了。

@hiworldwzj
Copy link
Collaborator

@xyfZzz #139 已经在这个PR中定制支持了 8k 长度的qwen7b模型,简单测试了下超过 2k 长度的,还是ok可用的。

@xyfZzz
Copy link
Author

xyfZzz commented Sep 20, 2023

@xyfZzz #139 已经在这个PR中定制支持了 8k 长度的qwen7b模型,简单测试了下超过 2k 长度的,还是ok可用的。

太强了,大佬流皮,我过会试试

@JustinLin610
Copy link

I should say it might be quite difficult to incorporate our NTK method with continuous batching I guess. Sorry for the inconvenience...

@hiworldwzj
Copy link
Collaborator

@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.

@xyfZzz
Copy link
Author

xyfZzz commented Nov 1, 2023

@xyfZzz #139 已经在这个PR中定制支持了 8k 长度的qwen7b模型,简单测试了下超过 2k 长度的,还是ok可用的。

大佬你好,我看了下你的代码,想问下,当前实现是一个固定非dynamic的ntk实现对么?然后scale的设置相当于是通过配置max_position_embeddings来实现的,相当于max_position_embeddings是固定设置的一个最大外推后长度,然后seq_length相当于模型原生长度,通过max_position_embeddings/seq_length来获取scale,然后计算对应的ntk_alpha。这样子的话,不管输入长短,都基于这个ntk_alpha来获取扩展后的位置编码。这样理解对么?

@hiworldwzj
Copy link
Collaborator

@xyfZzz 是的,基本上如你述,因为实在没有办法简单的在拼接batch的时候,让不同请求的长短句中保存和使用不同的ntk position_emb(其实也能做,但是代价过高,需要每个请求都保存单独的position_emb, 然后再实现一个专用的kernel来补充一些细节), 既然长上下文本身能支持,那就统一大家都用长上下文对应的ntk position_emb,实际实验效果也还挺ok的,当然我觉得那个logn乘的特性也很关键。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants