文章目录
本文主要是记录一下笔者在使用vLLM进行Qwen2.5-VL推理时踩的一些坑,希望大家不要重蹈我的覆辙。
推理代码不是我写的,所以不方便公开,大家可以自己找对应的代码~
一些debug
给vLLM重配环境
如果要使用vLLM,最好重新开一个环境给vLLM用,pytorch啥的版本都要高一些,据说是2.4以上。就不要偷懒直接用之前的旧环境了~
# 创建conda环境
conda create -n vLLM python=3.10 -y
# 激活conda环境
conda activate vLLM
# 安装pytorch
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
我的版本是:py310cu12torch2.5
附带说一句:后面安装vLLM时似乎会覆盖掉这里的torch版本,改成2.6.0,但不影响后续跑代码,所以这里就没改了
大家如果担心后续的版本问题,可以这里就直接装torch 2.6.0版本的,flash-attn也找对应版本装,问题不大
接下来需要安装Qwen环境,装对应的flash-attn版本,以及flash infer版本
flash-attn
到官网找对应版本,这里是教程参考链接:[已解决] flash-attn报错flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol-CSDN博客
我下的whl文件链接如下
flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
这么下载即可
# 进入资源下载路径
cd 你的路径
# 下载对应的whl文件,这个到官网找匹配版本即可
wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
# 然后安装即可
pip install whl文件的路径
flash infer
参考链接:vllm 优化:flashinfer问题 – OddMeta
pip install flashinfer-python==0.2.2
Qwen
如果是Qwen推理,还需要装一些库
安装transformers
pip install transformers -U
下载工具
pip install modelscope
脚本依赖
pip install accelerate>=0.26.0
安装qwen_vl_utils库来加速模型推理:
pip install qwen-vl-utils
整合起来就是
pip install transformers -U modelscope accelerate>=0.26.0 qwen-vl-utils
jupyter notebook
还要安装ipynb的相关库,VS Code会自己安装,等一下就好了
vLLM
乐,装完上面的还要记得装vLLM
pip install vllm
然后似乎vllm的安装直接把之前很多版本都覆盖了,torch啥的,改成了2.6.0,问题不大
decord
还要安装decord库,用于快速抽帧:Decord 全面指南:视频处理利器-CSDN博客
pip install decord
关于max_seq_len的报错
可能会爆KV cache,直接改LLM里面传入的max_model_len
即可,这个传进去就是对应的max_seq_len了
先写到这,后续遇到问题再补充
关于多头注意力的头数报错
Pytorch 为什么在MultiheadAttention中嵌入维度必须能够被头数整除|极客教程
AssertionError: 3420 is not divisible by 8
设置头数刚好被整除即可,大概是设置num_processes吧,笔者还没搞懂,先挖个坑
参考链接
[已解决] flash-attn报错flash_attn_2_cuda.cpython-310-x86_64-linux-gnu.so: undefined symbol-CSDN博客
vllm 优化:flashinfer问题 – OddMeta
Decord 全面指南:视频处理利器-CSDN博客
Pytorch 为什么在MultiheadAttention中嵌入维度必须能够被头数整除|极客教程