老牛同学在前面文章中,介绍了不同大模型的部署和推理方式。有网友给老牛同学留言,希望老牛同学能写一篇使用 vLLM 通过 CPU 和 GPU 推理 Qwen2 等大语言模型的文章,老牛同学决定本期安排起来。
由于vLLM默认并不支持 CPU 部署和推理,为了验证和演示CPU部署和推理过程,老牛同学肝了周六 1 个晚上和周日大半天,目前都成功了。因vLLM通过CPU部署推理的文档少之又少,官网有些地方也不是很明确,导致老牛同学在执行过程中走了不少弯路。因此,老牛同学希望通过本文,能帮助大家避免踩坑和走弯路。
通过本文,老牛同学将介绍vLLM的 3 部分内容:
- CPU模式下,如果编译打包vLLM框架(你没有看错:CPU模式需要我们自己编译打包)
- 通过CPU模式,演示多种方式部署和推理Qwen2大模型(其他模型也一样):本地模式、部署 API 服务、API 客户端、WebUI 等方式
- 最后,在GPU模式,简单介绍vLLM部署和推理;相比CPU环境,简单太多了,因为vLLM默认就只支持GPU环境
vLLM 官网源代码地址:https://github.com/vllm-project/vllm
vLLM 支持目前主流大模型,详细列表见官网:https://docs.vllm.ai/en/latest/models/supported_models.html
Qwen2 系列大模型在vLLM支持大模型之列,本文将详细介绍通过vLLM部署和推理Qwen2-0.5B大语言模型(之所以选择0.5B小尺寸模型,纯粹下载更快、演示更方便,其他vLLM所支持的所有大模型,其部署和推理过程完全一样,大家可以根据自己的需要选择不同的模型)
vLLM 环境准备
特别注意的是:vLLM目前只支持Linux操作系统(包括Windows WSL子系统),因此环境准备分为 2 部分:
- Linux 环境准备:我们的操作系统如果是Linux系统,那就无需其他操作;如果是Windows操作系统,需要首先安装和配置好WSL子系统,老牛同学就不介绍(本教程老牛同学也是用的Windows WSL Ubuntu 子系统)
- Python 研发环境准备:老牛默认使用Miniconda,需要安装和设置。老牛同学稍微进行介绍,大模型研发环境配置详细文档,参加老牛同学之前的文章:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)
安装 Miniconda 包管理工具
Linux/Windows WSL系统,我们可以通过命令行完成安装:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
Shell 上下文激活Miniconda相关命令:
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh
source /home/obullxl/.bashrc
source /home/obullxl/.zshrc
设置 Miniconda 国内镜像
配置镜像是为了提升依赖包下载速度,老牛同学强烈建议进行配置。
Miniconda配置文件路径:~/.condarc
,一般情况下配置文件不存在,我们可以创建并初始化它:conda config --set show_channel_urls yes
然后打开配置文件,设置依赖包镜像渠道:
show_channel_urls: true
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
保存配置文件,我可以查看配置是否生效:conda info
设置 Python 版本和虚拟环境
接下来,我们通过Minicodan安装 Python 虚拟环境:conda create --name vLLM python=3.10 -y
- 虚拟环境名:vLLM
- Python 版本:3.10
虚拟环境安装完成之后,我们激活环境:conda activate vLLM
特别注意:Python 版本号建议为3.10
,老牛同学刚开始使用3.12
后续过程出现不兼容问题!
下载 Qwen2 模型权重文件
接下来,我们下载Qwen2大模型权重文件,共有 3 种方式:Git 下载、SDK 下载、命令行下载(推荐:Git方式)
下载 Qwen2 模型权重文件(Git 方式)
我们将通过Git下载权重文件,因此先检测一下Git是否安装:git
若没有安装,则通过命令进行安装:sudo apt-get install git
如果想更新Git版本,则可执行命令:sudo apt-get update
同时,Qwen2模型权重文件比较大,我们需要用到 Git 大文件系统,因此需要提前安装好:
sudo apt-get install git-lfs
Git准备就绪,我们开始下载模型权重文件到本地(老牛同学目录:/home/obullxl/ModelSpace/Qwen2-0.5B
):
# 创建目录
mkdir -p ~/ModelSpace && cd ~/ModelSpace
# 下载文件
git lfs install
git clone https://www.modelscope.cn/qwen/qwen2-0.5b.git Qwen2-0.5B
下载过程中,如果因网络等原因中断,我们可以继续断点下载:
cd ~/ModelSpace/Qwen2-0.5B
git lfs pull`
下载成功之