Windows系统下安装运行YOLOv12所需的flash_attn 包教程

        刚刚又发现其实不用安装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文件,反正尽可能各版本一致对应起来

### 安装与配置 Flash Attention 支持 为了在 YOLOv12 中成功安装并配置 Flash Attention 支持,以下是详细的说明: #### 1. 环境准备 确保已按照引用中的指南完成基础环境搭建。如果使用的是 Windows 平台,则推荐通过 WSL2 来运行 Ubuntu,并结合 NVIDIA GPU 进行加速[^2]。 - **操作系统**: 推荐使用 Ubuntu 22.04 或更高版本。 - **硬件需求**: 如果计划启用 Flash Attention 的 CUDA 版本,则需配备支持 CUDA 的 NVIDIA 显卡。 - **Python 版本**: 根据官方文档建议,应创建一个新的 Conda 虚拟环境并设置 Python 3.11[^3]。 ```bash conda create -n yolov12 python=3.11 conda activate yolov12 ``` #### 2. 安装 Flash Attention 库 Flash Attention 是一种优化注意力机制计算效率的技术,通常用于深度学习模型中以减少内存占用和提高速度。其具体实现依赖于 PyTorch 和 CUDA。 ##### (a) 下载预编译的 Flash Attention Wheel 文件 对于特定的 CUDA 和 PyTorch 版本组合,可以下载对应的 `.whl` 文件来简化安装过程。例如,在 CUDA 11 上运行 Torch 2.2 的情况下,可执行如下命令[^3]: ```bash pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl ``` > 注意:上述链接仅作为示例提供,请根据实际使用的 CUDA 和 PyTorch 版本调整 URL 地址。 ##### (b) 编译源码(针对不兼容的情况) 如果没有现成的二进制文件可用或者需要自定义修改功能,则可以从源代码构建 Flash Attention: ```bash git clone https://github.com/HazyResearch/flash-attention.git cd flash-attention TORCH_CUDA_ARCH_LIST="7.5;8.0" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" pip install . ``` 此处 `TORCH_CUDA_ARCH_LIST` 参数指定了目标架构列表;请依据所用显卡型号适当更改该值[^1]。 #### 3. 测试 Flash Attention 功能 完成安装之后,可以通过简单的脚本来验证是否能够正常调用 Flash Attention 方法: ```python import torch from flash_attn import flash_attention device = 'cuda' if torch.cuda.is_available() else 'cpu' q, k, v = [torch.randn(2, 128, 64).to(device) for _ in range(3)] out = flash_attention(q, k, v) print(out.shape) ``` 此段程序会生成形状为 `(batch_size, seq_len, dim)` 的张量输出,表明 Flash Attention 成功加载并工作[^1]。 #### 4. 整合到 YOLOv12 模型训练过程中 最后一步就是将 Flash Attention 集成至 YOLOv12 的网络结构里去替换传统的 softmax-based attention 实现方式。这可能涉及到对原始项目代码做一定改动,比如编辑核心层定义部分引入新的操作符等[^3]。 --- ###
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值