Flash Attention 的优点以及Softmax 归一化系数解释

文章:FLASHATTENTION: Fast and Memory-Efficient Exact Attention with IO-Awareness

 

原始Attention 计算使用gpu存储标准流程

涉及两个gpu存储器:

1)SRAM(static Random Access Memory):静态随机存取存储器

2)HBM(High Bandwidth Memory):高带宽存储器

具体流程

Q,K,V 初始存储在HBM中,S=Q(K的转置),P= softmax(S),O = PV

1)将Q,K从HBM取到SRAM当中,计算S,将S 放到HBM当中。

2)将S从HBM取到SRAM当中,计算P,将P 放到HBM当中。

3P)将S从HBM取到SRAM当中,计算O,将O 放到HBM当中。

FlashAttention旨在避免从 HBM(High Bandwidth Memory)中读取和写入注意力矩阵,这需要做到:

  1. 目标一:在不访问整个输入的情况下计算softmax函数的缩减;
  2. 目标二:在后向传播中不能存储中间注意力矩阵.

优化1:

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

优化2:

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

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

1. 存储softmax归一化的系数的含义

在Flash Attention中,"只存储softmax归一化的系数"是指在进行反向传播时,不直接存储整个注意力矩阵,而是只存储用于softmax归一化的系数。这样做的目的是为了减少存储需求,从而节省内存。

在传统的注意力机制中,我们需要计算并存储一个N^2的注意力矩阵,其中N是输入序列的长度。这个矩阵存储了序列中每个元素对其他所有元素的注意力权重。然而,这种方法的存储需求随着序列长度的增加而呈平方级增长,对内存的需求非常大。

Flash Attention通过只存储softmax归一化的系数,避免了存储整个注意力矩阵,从而大大减少了内存需求。这些系数足够用于在反向传播过程中计算梯度,而无需参考完整的注意力矩阵。

2. Flash Attention的优点

Flash Attention的主要优点是它可以显著减少内存需求,同时也加速了计算。这使得模型能够处理更长的序列,或者在内存有限的设备上运行。此外,Flash Attention还保持了与传统注意力机制相同的表现力,因为它仍然能够模拟序列中元素之间的所有对应关系。

Softmax归一化系数解析

1. Softmax归一化

Softmax是一种常用的归一化函数,它可以将一组任意实数转换为一组在(0,1)区间内的实数,且这组实数的总和为1。这使得softmax函数的输出可以被解释为一组概率分布。

2. Softmax归一化系数

在softmax函数中,"归一化系数"通常指的是用于将每个输入值转换为概率的那个系数。具体来说,假设我们有一组输入值x1, x2, ..., xn,那么对应的softmax归一化系数就是1/Z,其中Z是所有输入值经过指数运算后的和,即Z = exp(x1) + exp(x2) + ... + exp(xn)。这个归一化系数保证了softmax函数的输出值的总和为1。

在某些情况下,为了节省存储空间和计算资源,我们可能只会存储这个归一化系数,而不是存储整个softmax函数的输出。例如,在上文提到的Flash Attention中,就只存储了这个归一化系数,而不是存储整个注意力矩阵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/109843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

管理类联考——数学——汇总篇——知识点突破——代数——整式分式——记忆

文章目录 考点记忆/考点汇总——按大纲 整体目录大纲法记忆宫殿法绘图记忆法 局部数字编码法归类记忆法重点记忆法歌决记忆法谐音记忆法理解记忆法比较记忆法转图像记忆法可视化法 本篇思路:根据各方的资料,比如名师的资料,按大纲或者其他方式…

什么是全排列?(算法实现)

全排列是什么? 全排列是指将一组元素按照一定顺序进行排列的所有可能结果。以一组数字为例,比如[1, 2, 3]的全排列结果为:[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]。 全排列有许多不同的计算方法,其中…

【电路笔记】-交流电感和感抗

交流电感和感抗 文章目录 交流电感和感抗1、概述1.1 电感1.2 电感器 2、频率特性2.1 电抗(Reactance)2.2 相移2.3 感应现象 3、RL滤波器4、总结 在之前有 交流电阻的文章中,我们已经看到电阻器在正常频率下的直流或交流状态下的行为是相同的。 然而,其他…

CN考研真题知识点二轮归纳(1)

本轮开始更新真题中涉及过的知识点,总共不到20年的真题,大致会出5-10期,尽可能详细的讲解并罗列不重复的知识点~ 目录 1.三类IP地址网络号的取值范围 2.Socket的内容 3.邮件系统中向服务器获取邮件所用到的协议 4.RIP 5.DNS 6.CSMA/CD…

Linux云服务器限制ip进行ssh远程连接

对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点: 增加安全性:SSH是一种加密的网络传输协议,可以保护数据的机密性和完整性。通过限制SSH连接的IP地址,可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才…

Vue 路由指南:畅游单页应用的地图(Vue Router 和 <router-view>)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…

【JAVA学习笔记】52 - 本章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter13/src/com/yinhai/wrapper_/homework_ 1.字符反转 注意String是final的不能改变需要toCharArray改成char数组 返回String需要将char改成valueOf改为String public class HomeWork01 {publ…

RabbitMQ学习01

四大核心概念 生产者 产生数据发送消息的程序是生产者 交换机 交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队…

ZooKeeper中节点的操作命令(查看、创建、删除节点)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

分治法求解棋盘覆盖问题

分治法求解棋盘覆盖问题 如何应用分治法求解棋盘覆盖问题呢?分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格,从而将原问题分解为规模较小的棋盘覆盖问题。 基本思路 棋盘覆盖问题是…

【音视频|wav】wav音频文件格式详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

BLIP2中Q-former详解

简介 Querying Transformer,在冻结的视觉模型和大语言模型间进行视觉-语言对齐。 为了使Q-Former的学习达到两个目标: 学习到和文本最相关的视觉表示。 这种表示能够为大语言模型所解释。 需要在Q-Former结构设计和训练策略上下功夫。具体来说&…

零资源的大语言模型幻觉预防

零资源的大语言模型幻觉预防 摘要1 引言2 相关工作2.1 幻觉检测和纠正方法2.2 幻觉检测数据集 3 方法论3.1 概念提取3.2 概念猜测3.2.1 概念解释3.2.2 概念推理 3.3 聚合3.3.1 概念频率分数3.3.2 加权聚合 4 实验5 总结 摘要 大语言模型(LLMs)在各个领域…

Redis(windows+Linux)安装及入门

一、概述 Redis是什么? Redis(Remote Dictionary Server),即远程字典服务 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数…

Android 主题 vs 样式

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关知识3.1 theme! st…

取石子

每一堆数量都>1的话可以把合并操作和取石子看成一种操作,总操作数就是sumn-1,为奇数就是Alice先手必胜,哪怕有一堆是2,Bob取后变为1,Alice也可以通过合并操作让1变成>1的数 可以分成两大板块a、b, a中方石子个数…

【Vue】初步认识<script setup>语法糖和组合式 API

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ &#x1f6eb; 导读 需求 最近写代码的时候&#xff0c;发现<script setup>这样的代码&#xff0c;没见过&#xff0c;好奇&#xff0c;想知道。 所以就有了这篇文章。 很多文章都说setup是vue3的特权。但是&#xff…

图纸管理制度《六》

为建立健全机运系统技术档案管理工作&#xff0c;完整的保存和科学地管理机运系统的技术档案&#xff0c;充分发挥技术档案在我矿建设发展中的作用&#xff0c;更好地为我矿个生产技术部门服务&#xff0c;特制定本管理制度. 1、要把图纸、技术档案管理工作纳入技术业务工作中…

BSTree二叉树讲解

二叉搜索树的概念&#xff1a; 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值…
最新文章