vLLM CPU和GPU模式署和推理 Qwen2 等大语言模型详细教程

老牛同学在前面文章中,介绍了不同大模型的部署和推理方式。有网友给老牛同学留言,希望老牛同学能写一篇使用 vLLM 通过 CPU 和 GPU 推理 Qwen2 等大语言模型的文章,老牛同学决定本期安排起来。

由于vLLM默认并不支持 CPU 部署和推理,为了验证和演示CPU部署和推理过程,老牛同学肝了周六 1 个晚上和周日大半天,目前都成功了。因vLLM通过CPU部署推理的文档少之又少,官网有些地方也不是很明确,导致老牛同学在执行过程中走了不少弯路。因此,老牛同学希望通过本文,能帮助大家避免踩坑和走弯路。

通过本文,老牛同学将介绍vLLM的 3 部分内容:

  1. CPU模式下,如果编译打包vLLM框架(你没有看错:CPU模式需要我们自己编译打包)
  2. 通过CPU模式,演示多种方式部署和推理Qwen2大模型(其他模型也一样):本地模式、部署 API 服务、API 客户端、WebUI 等方式
  3. 最后,在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 部分:

  1. Linux 环境准备:我们的操作系统如果是Linux系统,那就无需其他操作;如果是Windows操作系统,需要首先安装和配置好WSL子系统,老牛同学就不介绍(本教程老牛同学也是用的Windows WSL Ubuntu 子系统)
  2. 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

Conda配置信息

设置 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`

下载成功之

### 快速部 Qwen2-VL-7B 视觉大模型的最佳实践 #### 准备环境 为了确保顺利部 Qwen2-VL-7B 模型,建议先安装必要的依赖工具并配置开发环境。这包括但不限于 Git LFS 以及 Python 环境设置。 ```bash git lfs install ``` 此命令用于初始化 Git Large File Storage (LFS),这对于处理大型文件(如预训练模型权重)至关重要[^2]。 #### 获取预训练模型 通过克隆仓库来获取已经预先训练好的 Qwen2-VL-7B 模型: ```bash git clone https://www.modelscope.cn/Qwen/Qwen2-VL-7B-Instruct.git /root/sj-tmp ``` 上述代码片段展示了如何从指定 URL 下载所需资源到本地路径 `/root/sj-tmp` 中。 #### 设置推理框架 对于高效的在线推理服务构建,推荐采用 vLLM 推理库作为支撑平台之一。它能够提供高性能的同时保持较低延迟特性,非常适合于生产环境中运行大规模语言模型。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch model_name_or_path = "/root/sj-tmp" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) device = "cuda" if torch.cuda.is_available() else "cpu" model.to(device) ``` 这段 Python 代码说明了加载 tokenizer model 的过程,并将其迁移到 GPUCPU 上执行进一步的任务[^3]。 #### 实现简单交互界面 为了让用户更方便地与已部的大规模视觉语言模型互动,可以创建一个简易的 Web 应用程序接口(API)或者图形化用户界面(GUI)。这里给出基于 Flask 构建 RESTful API 的例子: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): input_text = request.json.get('input') inputs = tokenizer(input_text, return_tensors="pt").to(device) outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) response = {"output": result} return jsonify(response), 200 if __name__ == "__main__": app.run(host='0.0.0.0', port=8080) ``` 以上脚本定义了一个 HTTP POST 方法 '/predict' 来接收 JSON 请求体中的输入文本字符串,经过编码转换成张量形式送入模型预测后返回解码后的输出结果给客户端应用程序使用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值