FlashAttention(flash-attn)安装

news2024/10/6 16:24:53

FlashAttention(flash-attn)安装

Flash Attention是一种注意力算法,用于减少这一问题,并更有效地缩放基于转换器的模型,从而实现更快的训练和推理。标准注意力机制使用高带宽内存(HBM)来存储、读取和写入密钥、查询和值。很多llm模型运行的时候都需要安装flash_attn,比如Llama3。
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
Paper: https://arxiv.org/abs/2205.14135
github地址,建议安装之前读一下官方文档。
在这里插入图片描述
官方给出的安装依赖:

  • CUDA 11.6 and above.
  • PyTorch 1.12 and above.
  • Make sure that ninja is installed and that it works correctly (e.g. ninja --version then echo $? should return exit code 0). If not (sometimes ninja --version then echo $? returns a nonzero exit code), uninstall then reinstall ninja (pip uninstall -y ninja && pip install ninja). Without ninja, compiling can take a very long time (2h) since it does not use multiple CPU cores. With ninja compiling takes 3-5 minutes on a 64-core machine.

1. 最终的成功版本

按照自己的Pytorch版本CUDA版本Python版本来选择对应版本的flash-attn,否则会默认下载最新版。
个人趟坑后推荐的pytorch版本大于2.2,CUDA版本为1.8。
安装顺序:CUDA Toolkit→PyTorch→FlashAttention

  1. CUDA Toolkit下载地址:https://developer.nvidia.com/cuda-toolkit-archive
  2. 特定版本的PyTorch下载地址:https://pytorch.org/get-started/previous-versions/
  3. FlashAttention下载地址:https://github.com/Dao-AILab/flash-attention/releases/

1.1 安装/更新CUDA Toolkit

最详细的安装教程请务必参考NVIDIA CUDA Installation Guide for Linux,非常保姆的教程,前前后后的依赖和处理都很详尽,但英文的阅读和长度也很感人,以下是我趟出来的一套简单流程。

1.1.1 下载CUDA Toolkit

以终为始我们需要的是cuda-11.8,那么直接去CUDA Toolkit下载地址下载特定版本。

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
1.1.2 安装CUDA Toolkit
#登录管理员,使用root权限
su 
# 修改权限
chmod +x cuda_10.2.89_440.33.01_linux.run
#安装
./cuda_10.2.89_440.33.01_linux.run --no-opengl-libs
#退出root
exit

执行后的弹框输入:accept,然后按Enter键继续。第二页选中Driver,按Enter键,再选中Install,按Enter键进行安装。
默认安装路径,那么将会安装在**/usr/local/cuda-11.8/**路径下。

1.1.3 设置环境变量
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

1.2 安装PyTorch

已经安装好了cuda-11.8后,并加入了环境变量,nvcc -V显示的是为cuda-11.8则可以正式开始安装PyTorch v2.2.2。(之所是是2.2.2版本也是因为之前的1.2版本太老导致FlashAttention虽然看起来安装成功,但用起来仍然报错。查了很久之后,安装成功的人都推荐PyTorch v2.2.2)

pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu118

尽管官方给出安装PyTorch用conda install也可,但我没成功/(ㄒoㄒ)/~~,可能是channel的问题,whatever, 还是用pip install吧。

1.3 安装 FlashAttention

至此,已经安装好了cuda-11.8PyTorch v2.2.2python -V查看当前的Python版本,就可以在FlashAttention下载地址选择对应的whl文件用pip install来安装了。
flash_attn-2.5.3+cu118torch2.2cxx11abiFALSE-cp39-cp39-linux_x86_64.whl为例

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.3/flash_attn-2.5.3+cu118torch2.2cxx11abiFALSE-cp39-cp39-linux_x86_64.whl

pip install flash_attn-2.5.3+cu118torch2.2cxx11abiFALSE-cp39-cp39-linux_x86_64.whl

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归测试?

1. 什么是回归测试(Regression Testing) 回归测试是一个系统的质量控制过程,用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响(比如你在家中安装了新的空调系统,发现虽然新的空…

PaddleOCR使用

最近在项目过程中需要用到文字识别的能力,之前没有接触过。需要对现有的开源能力进行调研和学习。 1. 基本概念 1.1 PaddlePaddle PaddlePaddle 是一个由百度开源,基于 Python 的深度学习框架。PaddlePaddle 针对不同的硬件环境提供了不同的安装包或安…

极验4 一键解混淆

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,未经许可禁止转载,禁止任何修改后二次传播,如有侵权,可联系本文作者删除! AST简介 AST(Abstract Syntax Tree)&a…

书名号怎么打?4个输入方法请记好!

“我在电脑上对文档进行编辑时,需要输入书名号,但不知道书名号怎么打。大家平常是怎么输入书名号的呀?可以分享一下吗?” 在撰写文档、编辑文章或发送信息时,我们经常需要用到书名号。书名号主要用于标明书名、篇名、报…

数据库系统概论(超详解!!!)第七节 关系数据库理论

1.问题的提出 关系数据库逻辑设计: 针对具体问题,如何构造一个适合于它的数据模式 针对一个具体问题,构造出一个适合于它的数据模式,即应该构造几个关系,每个关系由哪些属性组成等。 数据库逻辑设计的工具──关系…

Omnity 进展月报 | 2024.4.1-4.30

Omnity 大事摘要 1、Octopus 官宣升级为 Omnity。 2、Omnity 4月28号正式上线,实现BTC 和 ICP 之间跨链转账 Runes 资产。 3、为庆祝上线,以符文 HOPE•YOU•GET•RICH 为资产,发红包快速触达大量用户,体验跨链服务。 4、Omni…

kubebuilder(6)webhook

operator中的webhook也是很重要的一块功能。也是相对比较独立的模块,所以放在后面讲。 webhook是一个callback,注册到k8s的api-server上。当某个特定的时间发生时,api server就会查询注册的webhook,并根据一些逻辑确认转发消息给…

抖音小店是什么?它和直播带货有什么区别和联系?一篇详解!

大家好,我是电商糖果 在网上大家都说抖音的流量大,在抖音做电商比较赚钱。 可是有很多人对抖音电商并不了解。 甚至搞不懂抖音小店是什么?它和直播带货的区别和联系也不清楚。 下面,糖果就来给大家好好解答一下这个问题。 抖音…

Educational Codeforces Round 165 (Div. 2) A~E

A.Two Friends (思维) 题意: 小 A A A想开一个派对。他有 n n n个朋友,他希望至少有 2 2 2个朋友参加他的派对。 i i i 这个朋友最好的朋友是 p i p_i pi​ 。所有的 p i p_i pi​ 都是不同的,对于每一个 i ∈ [ 1 , n ] i \in [1, n] …

HTTP深度指南:协议结构、请求方法与状态码

详解HTTP HTTP教程HTTP消息结构HTTP状态码HTTP和HTTPS HTTP教程 HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。* HTTP是一个基于TCP/IP通信协议来传递数据的(HTML文…

【源码】[完美接单]亲测双端获取通讯录、相册、短信定位源码

源码介绍 无hb源码,需要反编译。 此款修复了逻辑,现在全部能获取。包括华为鸿蒙。 安卓可获取:短信定位相册通讯录 IOS可获取:定位相册通讯录 源码截图 CD:获取方式联系小编 微信:uucodes 公众号&…

7天精通Web APIs——-Bom操作(理论+实战)(第五天)

一、window对象 1.1 window对象和bom的关系 首先理解dom和bom之间的关系 显然bom的范围比较大 bom的全称为浏览器对象模型 window是bom的核心对象,window里面有很多属性和方法,用于实现浏览器与 JavaScript 代码之间的交互。作为 JavaScript 的全局对…

Vue中使用$t(‘xxx‘)实现中英文切换;

(原文链接) 介绍 {{$t(key)}} :是VueI18n插件提供的函数,主要用于根据当前语言环境返回对应的翻译文本,以便在页面上显示多语言内容。 key:作为参数传递给函数$t()的字符串,用于指定需要翻译的…

快速入门 Postman Mock Server 的使用

Postman 作为一个功能强大的 API 开发工具,凭借 Mock Servers 功能,使得开发者能够轻松而高效地模拟服务器环境,加快开发与测试进程。 启动 Mock Servers 服务 当你在 Postman 中创建一个新的项目时,系统默认并不会显示 Mock Se…

Python爬虫之selenium,有验证码模拟登录

一. 前言 在学习Selenium之前,通过request.get()或者.post(),很难获取网站所加载的动态数据,通过Selenium强大的自动化功能、多浏览器支持、跨平台支持等优点,让我轻松获取一些之前很难获取的数据,这次的案例也是结合之前的所学知…

Window server 2012搭建FTP

禁止废话,直接上图 !!! 注意:如果点击角色添加保存: Server Manager Error - Server Manager is collecting inventory data. Wizard will be available after data collection finishes 解决方案&#x…

Baidu Comate——让软件研发更高效、更智能

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 一、Baidu Co…

JAVA链表相关习题2

1.反转一个单链表。 . - 力扣(LeetCode) //2在1前面 //1在3前面 //ListNode curhead.next //head.nextnull(翻转后头节点变为最后一个节点) // while(cur ! null) { //记录 当前需要翻转节点的下一个节点 ListNode curNext cu…

9、String类型和基本数据类型转换(Java)

String类型和基本数据类型转换 1、基本数据类型转String类型2、String类型转基本数据类型⭐ 1、基本数据类型转String类型 Java中String类型是字符串类型,是用 “ ” 双引号括起来的内容,所以基本数据类型转String类型直接+“ ”即可。&…

损失一件外套?

2024/05/07,晴 碎碎念一波! 早上洗漱完要出门时,发现自己昨天穿的外套不见了!!!外套上身效果很不错,买了1年多穿的频率非常高,现在丢了还真挺可惜。 衣服口袋有一个耳机&#xff0…