刚刚又发现其实不用安装flash_attn包也能运行YOLOv12。
方法一:不安装flash_attn包
1.将D:\personalFiles\objectDetection\comparativeExperiment\yolov12\ultralytics\nn\modules\block.py里的代码
try: from flash_attn.flash_attn_interface import flash_attn_func except Exception: assert False, "import FlashAttention error! Please install FlashAttention first."
删去或注释掉。
2.再将里面的if x.is_cuda:替换为if False:即可
方法二:安装flash_attn包
给出本人运行成功的参考版本
0.python版本:3.11
1.CUDA版本:12.2
2.torch版本:2.3.1+cu121 ,安装此版本代码:
①从官网安装(应该慢些):pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
②更快的网站:pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 -f https://mirrors.aliyun.com/pytorch-wheels/cu121
3.下载有关flash_attn包的whl文件至桌面,下载网站为https://github.com/kingbri1/flash-attention/releases/download/v2.5.9.post1/flash_attn-2.5.9.post1+cu122torch2.3.1cxx11abiFALSE-cp311-cp311-win_amd64.whl,然后在桌面desktop文件夹里输入cmd打开命令行窗口或通过cd desktop进入桌面文件夹安装此包,最后输入命令
pip install flash_attn-2.5.9.post1+cu122torch2.3.1cxx11abiFALSE-cp311-cp311-win_amd64.whl
安装就成功了,完整示例:
(yolov12) C:\Users\15231\Desktop>pip install flash_attn-2.5.9.post1+cu122torch2.3.1cxx11abiFALSE-cp311-cp311-win_amd64.whl
PS:运行时可能还会有有关其他包的2处警告,觉得碍眼可进行如下修改:
1.将D:\personalFiles\objectDetection\comparativeExperiment\yolov12\ultralytics\nn\modules\block.py里的from timm.models.layers import trunc_normal_换为from timm.layers import trunc_normal_。
2.将D:\personalFiles\objectDetection\comparativeExperiment\yolov12\ultralytics\data\augment.py里的A.ImageCompression(quality_lower=75, p=0.0),换为A.ImageCompression(p=0.0),
经实验验证改动后对训练结果无影响,OJBK了,终于能跑通了,这flash包太他M挑环境了,试了N次才找到这个合适的,规律就是CUDA为12.2,那么torch就应该为12.1版而不是11.8版的,python为3.11那么就要下载3.11对应的whl文件,反正尽可能各版本一致对应起来