1. 环境
先安装一个python=3.10的conda环境,然后安装如下库文件
方法一:requirement安装
✅ Qwen-Audio-Chat 安装环境依赖清单
📁 1. requirements.txt(推荐方式)
# Qwen-Audio-Chat 环境依赖 matplotlib requests tiktoken einops transformers_stream_generator transformers==4.39.0 accelerate torch==2.3.0+cu121 torchvision==0.18.0+cu121 torchaudio==2.3.0+cu121方法二:pip逐个安装
🐍 2. 安装命令(使用清华源 + PyTorch 源) # 安装基础库(含 torch/torchvision/torchaudio) pip install matplotlib requests tiktoken einops transformers_stream_generator accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装特定版本的 Transformers pip install transformers==4.39.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装 PyTorch 及相关(CUDA 12.1 版本) pip install torch==2.3.0+cu121 \ torchvision==0.18.0+cu121 \ torchaudio==2.3.0+cu121 \ --extra-index-url https://download.pytorch.org/whl/cu121 \ -i https://pypi.tuna.tsinghua.edu.cn/simple2. flash_attn安装
2.1 问题
python test_qwen_audio_demo.py audio_start_id: 155163, audio_end_id: 155164, audio_pad_id: 151851. The model is automatically converting to bf16 for faster inference. If you want to disable the automatic precision, please manually add bf16/fp16/fp32=True to "AutoModelForCausalLM.from_pretrained". Try importing flash-attention for faster inference... Warning: import flash_attn rotary fail, please install FlashAttention rotary to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/rotary Warning: import flash_attn rms_norm fail, please install FlashAttention layer_norm to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/layer_norm Warning: import flash_attn fail, please install FlashAttention to get higher efficiency https://github.com/Dao-AILab/flash-attention⚠️ 警告信息(非致命)
1. FlashAttention 导入失败
Warning: import flash_attn fail, please install FlashAttention to get higher efficiency...
原因: 这些警告说明你当前环境中没有安装 FlashAttention,这是一个基于 CUDA 的高性能注意力机制库,可以显著提升大模型的训练和推理效率。
🔧 注意:你需要根据你的 CUDA 版本选择对应的 wheel 文件。比如上面这个链接适用于 CUDA 11.8。你可以在自己的系统上用 nvcc --version 查看 CUDA 版本。(audio_chat) root@# nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Tue_Feb_27_16:19:38_PST_2024 Cuda compilation tools, release 12.4, V12.4.99 Build cuda_12.4.r12.4/compiler.33961263_0✅ 当前 CUDA 版本:12.4 这是目前较新的版本,兼容性很好。FlashAttention 支持 CUDA 11.x 到 12.x 的版本(包括 12.4)。
-rw-r--r-- 1 root root 183291190 Apr 30 07:42 flash_attn-2.7.0.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl -rw-rw-r-- 1 1005 1006 255951853 Dec 3 02:01 flash_attn-2.8.3+cu12torch2.4cxx11abiFALSE-cp310-cp310-linux_x86_64.whl 但是分别安装这两个文件后,flash_attn仍然不成功(audio_chat) root@# pip show flash-attn Name: flash_attn Version: 2.8.3🚀 接下来需要验证是否可以正常导入 FlashAttention
请运行以下命令来测试是否可以成功导入 flash_attn 模块:
python -c "import flash_attn; print(flash_attn.__version__)"
(audio_chat) root@# python -c "import flash_attn; print(flash_attn.version)" Traceback (most recent call last): File "<string>", line 1, in <module> File "/envs/audio_chat/lib/python3.10/site-packages/flash_attn/init.py", line 3, in <module> from flash_attn.flash_attn_interface import ( File "envs/audio_chat/lib/python3.10/site-packages/flash_attn/flash_attn_interface.py", line 15, in <module> import flash_attn_2_cuda as flash_attn_gpu ImportError: /envs/audio_chat/lib/python3.10/site-packages/flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZNK3c105Error4whatEv分析:
你遇到的错误是: ImportError: /data/wuwenliang/anaconda3_1/envs/audio_chat/lib/python3.10/site-packages/flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol: _ZNK3c105Error4whatEv 这个错误通常是因为 PyTorch 版本与 FlashAttention 不兼容,或者 编译时使用的 PyTorch 与当前运行环境中的 PyTorch 不一致。 🔍 错误分析 _ZNK3c105Error4whatEv 是 c10::Error::what() 的 C++ 符号名。 这说明 FlashAttention 编译生成的 .so 文件(动态库)中调用了一个 PyTorch 的内部符号,但在当前环境中找不到它。这通常发生在以下情况: FlashAttention 是用一个旧版本的 PyTorch 编译的。 当前运行环境使用的是另一个版本的 PyTorch。 或者 PyTorch 安装不完整、被污染等。✅ 方法一:卸载并重新安装 FlashAttention(推荐) 卸载当前 FlashAttention: pip uninstall flash-attn 确保你的 PyTorch 版本已安装,并查看其版本: python -c "import torch; print(torch.__version__)"(audio_chat) root@# python -c "import torch; print(torch.version)" 2.3.0+cu121你当前安装的 PyTorch 版本是 2.3.0+cu121,也就是基于 CUDA 12.1 的版本。 ❗️问题根源 你之前尝试安装的是: FlashAttention wheel 匹配 CUDA 12.4 但你的 PyTorch 是 CUDA 12.1 这就导致了不兼容的问题。FlashAttention 编译时使用的 CUDA 版本(12.4)与 PyTorch 使用的 CUDA 版本(12.1)不一致,因此在运行时出现了符号未定义错误( undefined symbol: _ZNK3c105Error4whatEv )。🚀 方法二:降级 FlashAttention 到匹配 CUDA 12.1 的版本
如果你不想升级 PyTorch,可以安装一个与 PyTorch CUDA 12.1 兼容的 FlashAttention 版本。
下载flash-attn:
https://github.com/Dao-AILab/flash-attention/releases/tag/v2.7.2.post1
-rw-r--r-- 1 root root 150M May 13 09:46 flash_attn-2.7.2.post1+cu12torch2.3cxx11abiFALSE-cp310-cp310-linux_x86_64.whl安装:
(audio_chat) root@e# pip install flash_attn-2.7.2.post1+cu12torch2.3cxx11abiFALSE-cp310-cp310-linux_x86_64.whl验证:
✅ 验证安装是否成功 安装完成后,执行以下命令验证 FlashAttention 是否能被正确导入: python -c "import flash_attn; print(flash_attn.__version__)"(audio_chat) root@# python -c "import flash_attn; print(flash_attn.version)" 2.7.2.post1用flash-attn环境运行代码:
(audio_chat) root@# python test_qwen_audio_demo.py audio_start_id: 155163, audio_end_id: 155164, audio_pad_id: 151851. The model is automatically converting to bf16 for faster inference. If you want to disable the automatic precision, please manually add bf16/fp16/fp32=True to "AutoModelForCausalLM.from_pretrained". Try importing flash-attention for faster inference... Warning: import flash_attn rms_norm fail, please install FlashAttention layer_norm to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/layer_norm Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:07<00:00, 1.19it/s] 这个音频的asr内容是:"病吧你老拆穿人家干啥"。 这个音频的内容是辱骂和诅咒。 好的,这是音频转的文本:"*******"。参考文章:
https://damodev.csdn.net/68a6d2904e4959284dabe1a2.html
https://modelscope.cn/models/Qwen/Qwen-Audio-Chat/summary