FlashAttention

2023-11-15

一、 论文题目(发表处-时间)

FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

二、主要方向

新型注意力机制

三、细化任务

一种具有 IO 感知,且兼具快速、内存高效的新型注意力算法

四、论文动机

一般对transformer中关键模块 self-attention进行速度优化,一般使用稀疏近似(通过镂空,其他越远越空的attention方法)低秩分解(将attn 矩阵)矩阵分解两个矩阵后计算。

但都没有节省GPU对内存访问,主要在内存保存注意力矩阵的部分进行改善。

五、论文中的主要贡献点

  1. softmax 处减少HBM

FlashAttention如何实现在不访问整个输入的情况计算softmax大的缩减,标准Attention算法由于要计算softmax,而softmax都是按行来计算的,即在和V做矩阵乘之前,需要让 Q、K 的各个分块完成整一行分块的计算得到Softmax的结果后,再和矩阵V分块做矩阵乘。而在Flash Attention中,将输入分割成块,并在输入块上进行多次传递,从而以增量方式执行softmax缩减

  1. 反向传播 减少访问HBM

在后向传播中不存储中间注意力矩阵,以Flash Attention所提供的算法为例,通过对比标准Attention算法在实现过程中,标准Attention算法的实现需要将计算过程中的S、P写入到HBM中,而这些中间矩阵的大小与输入的序列长度有关且为二次型,因此Flash Attention就提出了不使用中间注意力矩阵,通过存储归一化因子来减少HBM内存的消耗。

在Flash Attention的前向计算算法中我们可以看出,Flash Attention算法并没有将S、P写入HBM中去,而是通过分块写入到HBM中去,存储前向传递的 softmax 归一化因子,在后向传播中快速重新计算片上注意力,这比从HBM中读取中间注意力矩阵的标准方法更快。即使由于重新计算导致 FLOPS 增加,但其运行速度更快并且使用更少的内存(序列长度线性),主要是因为大大减少了 HBM 访问量。

六、模型图/模型主框架描述

在这里插入图片描述

七、除了主贡献之外的亮点

  1. 计算softmax时候不需要全量input数据,可以分段计算

  2. 反向传播的时候,不存储attention matrix (N^2的矩阵),而是只存储softmax归一化的系数。

八、数据集及效果

2.效果:

在这里插入图片描述

九、开源代码,开源数据集

十、论文/模型的缺陷、可以改进的点

  1. 应该和稀疏近似,低秩分解并不冲突,将他们融合进一步实现attention加速,以及长度外推。

  2. 在其他位置GPU io处进行一些调整。

十一、论文附件

FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FlashAttention 的相关文章

随机推荐

  • android canvas 转bitmap_Android 雪花飘落动画效果 自定义View

    在码农的世界里 优美的应用体验 来源于程序员对细节的处理以及自我要求的境界 年轻人也是忙忙碌碌的码农中一员 每天 每周 都会留下一些脚印 就是这些创作的内容 有一种执着 就是不知为什么 如果你迷茫 不妨来瞅瞅码农的轨迹 本文章实现的效果如下
  • SpringBoot常用定时器库整合(Java Timer、线程池、Quartz、Task)

    简介 定时器可用于做数据统计 年度报表 定时刷新token等 本章主要描述以下常用定时器库的用法 1 Java Timer 2 Java 线程池 3 Quartz 4 Spring Task Java Timer定时器用法 在java中自带
  • 测度与积分 Measures and Integration学习笔记

    学习笔记1 可测空间 可测空间 Measurable Spaces sigma algebra 希望能坚持学习下去 可测空间 Measurable Spaces
  • delphi测试服务器响应时间,TIdHttp.Post响应时间太长

    我正在使用Delphi XE6 我已阅读以下所有内容 我知道相关时间和性能因素包括 1 HTTPOptions 2 TIdHttp Request选项 内容类型 编码 尤其是连接超时设置 3 iCsslIOHandler SSLOption
  • 多层感知器介绍

    一 概览 现实世界中很多真实的问题都不是线性可分的 即无法使用一条直线 平面或者超平面分割不同的类别 其中典型的例子是异或问题 Exclusive OR XOR 即假设输入为x1和x2 如果它们相同 即当x1 0 x2 0或x1 1 x2
  • Oracle19c数据库服务

    本节整理了Oracle在Windows下运行所安装的服务 桌面点击 我的电脑 管理 服务和应用程序 服务 进入下图界面 然后找到以Ora字段开头的服务就是Oracle的服务 如下图 1 OracleJobSchedulerORCL 描述 O
  • centos7下 k8s的安装 2023年8月6日

    一 基本信息介绍 kubernetes 1 27 4 系统 centos7 etcd 3 5 7 containerd 1 6 20 runc 1 1 5 建议内核升级到5 10 本次安装就只有一个master和两个个node节点 192
  • 空间配置器

    空间配置器 一 空间配置器概述 STL的操作对象都放在容器内 而容器需要一定的配置空间来存放数据资料 而空间配置器就负责给容器分配空间 SGI STL分配的空间是内存 其实基本都是内存吧 二 空间配置器的标准接口 1 必要接口 根据容器的需
  • centos解决mysql-bin.000*占用超大空间的问题

    本站 也就是安全者 网站数据库挂了一下午 也没时间处理 晚上回来后尝试restart mysql 发现一直提示shutting down 关闭不了 也stop不了 服务器重启也不行 可以确信肯定是mysql出问题了 进入mysql的data
  • HTTPS的加密过程

    HTTPS HTTPS即加密的HTTP HTTPS并不是一个新协议 而是HTTP SSL TLS 原本HTTP先和TCP 假定传输层是TCP协议 直接通信 而加了SSL后 就变成HTTP先和SSL通信 再由SSL和TCP通信 相当于SSL被
  • 【数据结构与算法——TypeScript】数组、栈、队列、链表

    数据结构与算法 TypeScript 算法 Algorithm 的认识 解决问题的过程中 不仅仅 数据的存储方式会影响效率 算法的优劣也会影响效率 什么是算法 定义 一个有限指令集 每条指令的描述不依赖于言语 编写指令 java c ts
  • (十八)Mybatis的XML文件中不允许出现“>“

    mybatis XML文件中不允许出现 gt lt 之类的符号 需要转义 是可以正常 关于elasticsearch中 gt gte lt lte缩写的含义
  • 反序列化漏洞原理/防御

    序列化就是将对象转换成字节流 可以更方便的将数据保存到本地文件 反序列化就是将字节流还原成对象 Java中提供了两个接口来支持序列化 ObjectIutputStream 和ObjectOutputStream 序列化相对安全 问题出在反序
  • html烟花特效,发射粒子特效,爱心特效,动态祝福、节日祝福网页,时间罗盘,黑客帝国代码雨、文字闪烁、表白爱心网页等等(附下载链接)

    粒子炫酷特效网页 html css js 大家都觉得程序员的工作很枯燥乏味 今天我就带大家看看程序员开发的那些漂亮的网页效果 点我下载源码 1 烟花特效 粒子特效 节日祝福 表白爱心网页 动态泡泡网页 动态蝴蝶网页 七叶草动态飘落网页 时间
  • Linux学习-Linux系统及编程基础笔记

    useradd zhangsan passwd zhangsan visudo往 etc sudoers文件中添加zhangsan visudo 找到如下的行 root ALL ALL ALL 往该行下面添加zhangsan zhangsa
  • 深度学习与机器学习的思考

    需要一些传统图像处理知识为佳 end to end 端到端 说的是 输入的是原始数据 始端 然后输出的直接就是最终目标 末端 中间过程不可知 因此也难以知 就此 有人批评深度学习就是一个黑箱 Black Box 系统 其性能很好 却不知道为
  • PostgreSQL 计算逾期率

    描述 计算下ylhx4 cxh xinyanfeature表 小鲨中部分用新颜的数据 中的1999个用户 首次借款第一期 第二期的d0和d15的逾期率 还款信息在transformdata xsfinrak表 小鲨用户 中 psperdno
  • 中点分割裁剪算法

    中点分割裁剪算法 python 实验目的 采用中点分割方法找到距离线段顶点最近的可见点 找到后 进行绘制 即可实现直线段在裁剪窗口的裁剪显示 算法思想 设要裁剪的线段是P1P2 中点分割算法可分成两个平行的过程进行 即从P1点出发找出离P1
  • Git基础操作:本地分支和远程分支改名

    相信聪明的你 直接看代码就能看懂 本地分支改名 git branch m feature add header2 feature add header 删除远程分支 git push origin feature add header2 本
  • FlashAttention

    一 论文题目 发表处 时间 FlashAttention Fast and Memory Efficient Exact Attention with IO Awareness 二 主要方向 新型注意力机制 三 细化任务 一种具有 IO 感