Tlntin/Qwen-TensorRT-LLM

长序列(>2048)出现output为空

Closed this issue · 7 comments

现象和这个描述很相似,但默认已经用了gpt attention pluginde rope, 会是什么问题呢?

//////////////////////////
完整支持原版的logn和ntk(这俩参数是用于增强模型长输入的生成效果,这里的长输入指的是输入长度大于2048小于8192)。不过由于trt-llm的某些bug,导致输入长度>2048时,实际输出会很短甚至为空,详见https://github.com/NVIDIA/trt-samples-for-hackathon-cn/issues/90,加上rope放gpt attention plugin里面计算更快,所以我们logn注释掉了。

logn+ntk相关代码还未完美支持,暂时注释掉了,所以长序列就是会为空。

目前注释的是功能完备的嘛?如果我把注释的打开,同时让gpt attention不算rope,是不是也是可以的呢?

目前注释的是功能完备的嘛?如果我把注释的打开,同时让gpt attention不算rope,是不是也是可以的呢?

额,可能还需要优化一下,只能说完成度90%。
看看官方后面发布的新版能否直接在gpt attention plugin里面支持ntk和logn吧,那样效果会好一些。

补充一下:NTK目前只在输入长度>seq_length的时候才生效。
如果你用的是qwen 7b 1.1这种,可以将qwen/default_config.py里面的2048设置成8192,这样就不需要NTK和logn来线性插值了。
image

是的,但我们目前用的是14B。。

好的,最近我会尝试恢复注释的代码。

已修复。
本机测试了1.8b/7b 的10k输入,以及14b的4k输入(显卡限制,非模型极限),均正常了。
相关commit: 89e3dc4
注:启用dynamic_rope后,1.8b/7b最大可以开启32k输入,14b最大应该是8k。