dvlab-research / LongLoRA

Code and documents of LongLoRA and LongAlpaca (ICLR 2024 Oral)
http://arxiv.org/abs/2309.12307
Apache License 2.0
2.6k stars 267 forks source link

S^2 inference problem #70

Closed AresXD closed 11 months ago

AresXD commented 11 months ago

对于只有V100情况下,用S^2 attention做推理,关于group实现是否有问题呢(forward_noflashattn)

bsz, q_len, _ = hidden_states.size()
group_size = int(q_len * group_size_ratio)

q_len在推理的时候长度等于1,这样的话group_size就会变成0,然后就会导致没法计算哦

yukang2017 commented 11 months ago

你好,

一方面来说,我不是很建议用S^2 attention做推理,因为这样效果并不如full attention好。另一方面来说,对于这么短的q_len,S^2 attention的加速几乎没有,这种情况更没有必要用S^2 attention做推理,直接用标准的就好了。。

祝好 陈玉康

AresXD commented 11 months ago

你好,

一方面来说,我不是很建议用S^2 attention做推理,因为这样效果并不如full attention好。另一方面来说,对于这么短的q_len,S^2 attention的加速几乎没有,这种情况更没有必要用S^2 attention做推理,直接用标准的就好了。。

祝好 陈玉康

啊 我的意思是 在输入input之后新生成的token,next token之前的kv都会cache起来 然后这个时候q=1 不是只生成一个token来着 orz

AresXD commented 11 months ago

你好, 一方面来说,我不是很建议用S^2 attention做推理,因为这样效果并不如full attention好。另一方面来说,对于这么短的q_len,S^2 attention的加速几乎没有,这种情况更没有必要用S^2 attention做推理,直接用标准的就好了。。 祝好 陈玉康

啊 我的意思是 在输入input之后新生成的一系列token,next token之前的kv都会cache起来 然后这个时候q=1(我理解的是只focus 下一个的预测 不是只生成一个token来着 ,orz 然后这种情况如果用full attention计算的话因为input很长 就会OOM

yukang2017 commented 11 months ago

这种情况的话,attention的计算是 1 x n 的形式,很难再分group操作。

kevinuserdd commented 11 months ago

你好,

一方面来说,我不是很建议用S^2 attention做推理,因为这样效果并不如full attention好。另一方面来说,对于这么短的q_len,S^2 attention的加速几乎没有,这种情况更没有必要用S^2 attention做推理,直接用标准的就好了。。

祝好 陈玉康

如果推理用full attention,那对于长文本推理是不是性能速度上就很慢了。 优化速度只是体现在训练上吗

yukang2017 commented 11 months ago

我在推理优化这方面不专业哈,建议您可以考虑用 flash-decoding,最近挺火的。 https://pytorch.org/blog/flash-decoding/

yangjianxin1 commented 10 months ago

你好,

一方面来说,我不是很建议用S^2 attention做推理,因为这样效果并不如full attention好。另一方面来说,对于这么短的q_len,S^2 attention的加速几乎没有,这种情况更没有必要用S^2 attention做推理,直接用标准的就好了。。

祝好 陈玉康

你好,请问是否做过使用S^2 attention做推理的消融实验?即使用S^2 attention做推理 vs 标准attention做推理。两者的ppl有多大区别?