当前位置: 首页 > news >正文

LLM:flash-attention概述

在这里插入图片描述
标准注意力请添加图片描述

FlashAttention 详细解析

FlashAttention 是一种优化 Transformer 模型注意力机制的技术,旨在提升计算效率和降低内存消耗,尤其在处理长序列任务时。以下是 FlashAttention 的详细解析,包括其主要特点、版本更新以及实际应用等方面。

核心技术
  1. 分块计算 (Tiling)
    FlashAttention 通过将注意力计算的矩阵分块,将大矩阵拆分成适合存储在片上内存(SRAM)的较小块。这样减少了对全局内存(HBM)的依赖,降低了内存带宽的需求。这种方法有效地利用了现代 GPU 的多层次内存结构,优化了数据的访问速度【10†source】【13†source】。

  2. 重计算 (Recomputation)
    在传统注意力机制中,中间结果的存储往往占用大量内存。FlashAttention 通过在需要时重新计算部分结果,而不是存储整个矩阵,从而减少了内存占用。这种策略特别在反向传播过程中显著减少了内存需求【10†source】。

  3. IO感知 (IO-Awareness)
    FlashAttention 优化了数据传输路径,减少了从全局内存到片上内存的数据移动。它通过有序地组织和处理数据,最大限度地利用了硬件资源,提高了整体计算效率【13†source】。

版本更新
  1. FlashAttention-2

    • 并行性增强:除了传统的基于批大小和头数的并行处理外,FlashAttention-2 还引入了序列长度上的并行性。这对于长序列、批量较小的情况非常有利,能够显著提高计算速度。
    • 支持更多头维度:从最多支持128个头维度扩展到256个,适配如GPT-J、CodeGen等大模型。这使得FlashAttention-2能够在更广泛的场景下应用,特别是需要高精度和长上下文的任务中【12†source】。
    • 多查询注意力 (MQA) 和分组查询注意力 (GQA):这些变体在推理时减少了键值(KV)缓存的大小,从而提高了推理吞吐量【12†source】。
  2. FlashAttention-3

    • 新硬件支持:利用最新的 NVIDIA Hopper GPU 架构,采用 WGMMA(Warpgroup Matrix Multiply-Accumulate)和 TMA(Tensor Memory Accelerator)等新特性。相比前一版本,FP16精度下性能提升至740 TFLOPS,而FP8精度下更是达到1.2 PFLOPS,且FP8的误差降低了2.6倍【11†source】【14†source】。
    • 异步操作:通过异步执行 GEMM 和 softmax 操作,提高了整体吞吐量。例如,FP16的前向传递从570 TFLOPS 提升到620 TFLOPS,进一步达到640-660 TFLOPS【11†source】。

参考:
【Flash Attention 为什么那么快?原理讲解】 https://www.bilibili.com/video/BV1UT421k7rA/?share_source=copy_web&vd_source=29af710704ae24d166ca951b4c167d53
https://blog.csdn.net/v_JULY_v/article/details/133619540?ydreferer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8%3D
https://zhuanlan.zhihu.com/p/626079753
https://blog.csdn.net/weixin_47196664/article/details/137000361?ydreferer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8%3D

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 药明康德:头顶达摩克利斯之剑
  • 从C到Py:Python中的函数
  • 数仓入门:数据分析模型、数仓建模、离线实时数仓、Lambda、Kappa、湖仓一体
  • 相机拍摄如何正确曝光
  • 3个功能强大的PDF转换工具,免费试用
  • 软件系统架构设计的“三高”
  • ORA-00911: invalid character
  • 动手学大模型应用开发笔记--用dash开发一个大模型知识库
  • 网络空间资产测绘:为安全防护“画出”实时“地图”
  • SPIFFS与LittleFS的对gz文件格式的区别
  • 静态IP代理和动态IP代理的区别
  • 使用ollama分别在我的window、mac、小米手机上部署体验llama3-8b(文末有福利)
  • C++——C++11
  • 【深度学习】VITS中的条件VAE,VAE的隐变量z为何要服从正太分布(2)
  • python == 与 is区别
  • $translatePartialLoader加载失败及解决方式
  • android图片蒙层
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • export和import的用法总结
  • gcc介绍及安装
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js递归,无限分级树形折叠菜单
  • PHP的Ev教程三(Periodic watcher)
  • SpingCloudBus整合RabbitMQ
  • ViewService——一种保证客户端与服务端同步的方法
  • windows下如何用phpstorm同步测试服务器
  • 后端_MYSQL
  • 简单数学运算程序(不定期更新)
  • 强力优化Rancher k8s中国区的使用体验
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 网页视频流m3u8/ts视频下载
  • 学习使用ExpressJS 4.0中的新Router
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 移动端高清、多屏适配方案
  • ​Java基础复习笔记 第16章:网络编程
  • ​secrets --- 生成管理密码的安全随机数​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • !$boo在php中什么意思,php前戏
  • (145)光线追踪距离场柔和阴影
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (TOJ2804)Even? Odd?
  • (一一四)第九章编程练习
  • (转)VC++中ondraw在什么时候调用的
  • (转)程序员技术练级攻略
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 6 集成和使用 mongodb
  • .NET Core引入性能分析引导优化
  • .NET Framework 3.5安装教程
  • .NET MVC第三章、三种传值方式
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 中Partitioner static与dynamic的性能对比
  • .net对接阿里云CSB服务
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数