|
背景调试网络时用到了FalshAttention,直接用的是flash_attn这个库,出现了以下异常File"/usr/local/lib/python3.8/dist-packages/flash_attn/__init__.py",line3,infromflash_attn.flash_attn_interfaceimport(File"/usr/local/lib/python3.8/dist-packages/flash_attn/flash_attn_interface.py",line8,inimportflash_attn_2_cudaasflash_attn_cudaImportError:/usr/local/lib/python3.8/dist-packages/flash_attn_2_cuda.cpython-38-x86_64-linux-gnu.so:undefinedsymbol:_ZN2at4_ops19empty_memory_format4callEN3c108ArrayRefIlEENS2_8optionalINS2_10ScalarTypeEEENS5_INS2_6LayoutEEENS5_INS2_6DeviceEEENS5_IbEENS5_INS2_12MemoryFormatEEE12345原因分析从异常上看,提示flash_attn_2_cuda.cpython-38-x86_64-linux-gnu.so这个库异常,这种未定义符号的异常,一般都是编译so时和当前环境不一致导致的具体到flash_attn这个库,如果不是从源码编译,其对cuda版本和torch版本都是有要求的,所以在官方github的release上可以看到官方会提供很多不同cuda和torch版本的whl文件,如下所示解决方法方法一从官方release种找到对应cuda版本和torch版本的whl文件,并下载在本地使用pip3install${whl}的方式安装方法二从源码直接编译,详见官方github
|
|