QwenLM / Qwen

The official repo of Qwen (通义千问) chat & pretrained large language model proposed by Alibaba Cloud.
Apache License 2.0
13.59k stars 1.11k forks source link

Flash attention import失败 #1034

Closed rabum closed 8 months ago

rabum commented 8 months ago

image 如图,启动大模型后报warning没能Import flash attention,可是我已经下载了对应版本的.whl文件并pip install成功了: image image

jklj077 commented 8 months ago

请看README, rms_norm/layer_norm 要从src单独编译安装,预编译包不包含。

ruifengma commented 8 months ago

请看README, rms_norm/layer_norm 要从src单独编译安装,预编译包不包含。

集成了Flash attention的pytorch 2.2也不行么

jklj077 commented 8 months ago

首先,需要明确“Flash Attention”算法与flash-attnflash-attn库之间的区别。Flash Attention本质上是一种针对GPU优化的attention机制实现方式,而flash-attn库则是该算法的原始参考实现。

PyTorch中,高效实现attention机制的核心入口是SDPA(即Scaled Dot Product Attention)。SDPA支持多种后端实现,其中包括了Flash Attention以及Memory Efficient Attention等方案。所谓的“集成”,并非仅指安装flash-attn库,而是指PyTorch中实现了Flash Attention这一特定算法。

Qwen代码中的实现可以自动识别并兼容flash-attn库中的flash attention、PyTorch中的SDPA以及传统的attention实现。

其次,flash-attn库不仅包含了flash attention算法,还涵盖了其他如rotary embedding、layer norm/rmsnorm等多种算法。根据题主提供的信息,报错并非源于flash attention算法,而是指向了layer norm/rmsnorm这一部分。实际上,README文档和错误提示已经明确指出这部分功能需要从源码单独进行安装。

总之,讨论的是两个不同的层面,“Flash Attention”这一特定GPU加速算法,以及包含该算法及其他功能的flash-attn库,二者不可混为一谈。