主要观点总结
本文主要介绍了通过修改SelfAttention的执行逻辑来节省大量的激活值显存开销的方法,该方法来自于一篇谷歌发布的论文。文章详细描述了SelfAttention固定激活值显存分析和优化过程,包括显存优化的具体步骤和实现的伪代码。
关键观点总结
关键观点1: SelfAttention显存优化背景
文章介绍了SelfAttention在模型中的重要作用以及其在显存开销方面的问题,指出谷歌的一篇论文提供了一种巧妙的解决方案。
关键观点2: SelfAttention固定激活值显存分析
文章详细分析了SelfAttention中的激活值显存使用情况,指出当模型结构固定时,激活值与某些参数线性相关。
关键观点3: 显存优化方法
文章介绍了一种通过修改Softmax计算和SelfAttention计算过程来节省显存的方法,将部分计算过程合并,减少了中间变量的使用。
关键观点4: 效率与实现
文章讨论了优化方法的效率和实现问题,提到了在实现过程中可能遇到的挑战,如使用PyTorch实现的效率低,需要CUDA实现等。
关键观点5: 方法的优势与限制
文章总结了该方法与原始方法的等价性、计算复杂度、显存开销降低情况,以及在训练过程中的一些潜在问题,如信息丢失和可能的解决方案。
文章预览
点击上方 “ 小白学视觉 ”,选择加" 星标 "或“ 置顶 ” 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于: 作者丨Connolly@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/445016136 编辑丨极市平台 通过修改SelfAttention的执行逻辑,可以节省大量的激活值显存开销。 这篇文章的消除方法来自于2021年12月10日谷歌放到arxiv上的文章self attention does not need O(n^2) memory. 该方法巧妙地使用了小学学到的加法分配率,将self attention中的固定激活值降到了O(1)的程度。[1] Self Attention 固定激活值显存分析 Hugging face Transformers中,SelfAttention 内核实现 表格中只列举了会实测中产生激活值的操作,其中B为Batch_size,L为sequence_length,H为hidden_size,m为SelfAttention中head的数量。 则总和 。 观察: 当 固定时, 即模型结构是固定的时候, 我们发现
………………………………