-
Notifications
You must be signed in to change notification settings - Fork 151
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 Report #21
Comments
这一步会替换transformers.models.llama.modeling_llama.LlamaForCausalLM.prepare_inputs_for_generation,替换后的prepare_inputs_for_generation会在处理每一个新样本时重置self.kv_seql_len,就不会有这个问题了。 |
@Zefan-Cai 你好!
结果为: |
很抱歉回复晚了,您可以参考#15 ,和你的问题很像。您可以把transformers版本换到4.37再尝试吗?如果还有一样的问题,我会打印一下这个值试试。 |
@Zefan-Cai 你好:
非常精彩的工作,以及感谢你开源了代码!
昨天我在尝试复现你的工作的时候,发现了一个问题:在
pyramidkv.llama_model.py
的第964行:这段代码会在self.kv_seq_len不为0的时候,给当前的kv_seq_len加上过去的所有的kv_seq_len。然而,在你的第985行开始:
每次都会给self.kv_seql_len加上q_len。这在单个样例中是没有问题的,但是如果我当前生成完毕,进行下一次生成的时候,你会发现self.kv_seq_len并没有被置为0。这时候,从第二个生成样本开始,key_states.shape[-2]就永远不会等于kv_seq_len,也就永远不会执行self.kv_cluster.update_kv这个操作,也就是说,从第二个样本开始,我们设置的KV Reduction Method就失效了。
比如:第一个样本prompt token的长度是106,最终生成了279,那self.kv_seq_len=279。第二个样本就首先得加上279,这样永远无法执行kv cache压缩策略。
我尝试在别的地方找有关self.kv_seq_len的定义、说明等,但均无法找到。
我的理解是否有问题?希望能得到您的回复!
The text was updated successfully, but these errors were encountered: