今天试着在笔记本上安装flash-attention,消耗时间太久。所以记录一下优化方式。
笔记本:hp战66,i7-1355U+RTX2050+32G
flash-attention没有windows版本的预编译包,需要下载源码后自己编译。
进入conda虚拟环境:
conda activate mamba
此环境里已经包含了torch、transformers、ninja、wheel等等包。
git clone https://githubcom/Dao-AILab/flash-attention
cd flash-attention
pip install .
以上采用默认安装方式时,编译x.cu文件仅启动了2个线程,1个文件需要20多分钟,而cu文件有48个!
几经折腾,发现作者已经在setup.py里包含了调整编译线程数的环境参数了。
根据任务管理器的信息,32G的内存已经被用了8G,而监控发现编译程序运行时内存峰值在3G左右,所以可以使用8个线程进行编译。
set MAX_JOBS=8
set NVCC_THREADS=1
pip install .
使用此方式,用4个小时左右成功安装了flash-attention,生成的flash_attn_2_cuda.cp310-win_amd64.pyd有385MB。
注:我直接在build\temp.win-amd64-cpython-310\Release目录下使用不同线程数执行ninja,线程数过多时会因内存不足而失败。