专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
今天看啥  ›  专栏  ›  小白学视觉

PyTorch实现 Self Attention

小白学视觉  · 公众号  ·  · 2024-09-22 10:05
    

主要观点总结

本文主要介绍了通过修改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的数量。 则总和  。 观察: 当   固定时, 即模型结构是固定的时候, 我们发现 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览