FlashDecoding
每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。但是,在decoding阶段,因为Query的seqLength=1,且batchSize=1,因此SM block数目无法都利用上。缺点:最后需要将不同SM block上的中间结果,进行通信,进行归一化的softmax和结果Reduce。在prefill阶段,seqLength*batchSize*Heads足够多,所以每
·
Flash Attention是将Q划分到所有SM block上。每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。期间,SM block彼此之间,不需要通信。

在prefill阶段,seqLength*batchSize*Heads足够多,所以每个SM block上有足够多的Query。
但是,在decoding阶段,因为Query的seqLength=1,且batchSize=1,因此SM block数目无法都利用上。
解决方法:
将K和V均分成几份,划分给SM block。缺点:最后需要将不同SM block上的中间结果,进行通信,进行归一化的softmax和结果Reduce。

动图:
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)