使用vLLM部署DeepSeek

一、vLLM介绍

vLLM(官方网址:https://www.vllm.ai)是一种用于大规模语言模型(LLM)推理的框架,旨在提高模型的吞吐量和降低延迟。vLLM通过优化内存管理和调度策略,显著提升了模型在高并发场景下的性能。vLLM利用了一种名为PagedAttention的注意力机制,该机制借鉴了虚拟内存和分页技术,以减少缓存内存(KV Cache)的浪费,并允许在请求之间灵活共享KV缓存。这种设计使得vLLM在保持与现有系统相同延迟水平的情况下,能够将吞吐量提高2到4倍。特点:

  1. 速度快: 在每个请求需要 3 个并行输出完成时的服务吞吐量。vLLM 比 HuggingFace Transformers(HF)的吞吐量高出 8.5 倍-15 倍,比 HuggingFace 文本生成推理(TGI)的吞吐量高出 3.3 倍-3.5 倍
  2. 优化的 CUDA 内核
  3. 灵活且易于使用
  4. 与流行的 Hugging Face 模型(和魔塔社区)无缝集成
  5. 高吞吐量服务,支持多种解码算法,包括并行抽样、束搜索等
  6. 支持张量并行处理,实现分布式推理
  7. 支持流式输出
  8. 兼容 OpenAI API

二、安装vLLM

参考官方安装教程:https://docs.vllm.ai/en/latest/getting_started/installation/cpu/index.html#requirements

2.1 首先安装conda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh


使用bash命令安装Miniconda:

bash Miniconda3-latest-Linux-x86_64.sh

按照安装提示操作,接受许可协议,选择安装位置,是否添加环境变量等。
安装完成后,可能需要重新加载shell配置文件或重启终端。

2.2 确认 Miniconda 是否安装成功

你可以查看 Miniconda 的安装目录(前面提示是 /root/miniconda3)是否存在。使用以下命令:

ls /root/miniconda3

如果该目录存在且包含一些子目录和文件,说明 Miniconda 已成功安装;若目录不存在,则需要重新安装。

2.3 配置环境变量

Miniconda 安装完成后,需要将其 bin 目录添加到系统的 PATH 环境变量中,这样系统才能找到 conda 命令。可以通过以下步骤进行配置:
你可以将环境变量配置添加到 shell 的配置文件中,对于大多数基于 bash 的系统,通常是 ~/.bashrc~/.bash_profile 文件;对于 zsh,则是 ~/.zshrc 文件。以 ~/.bashrc 为例,执行以下命令:

echo 'export PATH="/root/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

echo 命令将环境变量配置追加到 ~/.bashrc 文件中,source ~/.bashrc 命令使配置立即生效。之后,在任何新打开的终端中都可以使用 conda 命令。

验证配置:
配置完成后,你可以使用以下命令验证 conda 是否可以正常使用:

conda --version

如果成功输出版本号,说明配置成功.

2.4 创建虚拟环境

通过miniconda创建虚拟环境,名为env-vllm。
通过conda创建一个新虚拟环境,指定虚拟环境中包括python3.12的packages

conda create -n env-vllm python=3.12 -y
# 初始化环境
conda init
source ~/.bashrc

#激活使用该虚拟环境
conda activate env-vllm
2.5 安装vllm

在虚拟环境中,通过pip自动下载并安装vllm,过程可能需要几十分钟。注意需根据CPU或者CUDA版本选择安装。我是CPU版本:https://docs.vllm.ai/en/latest/getting_started/installation/cpu/index.html?device=x86

yum update  -y
yum install -y gcc gcc-c++ numactl-devel
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 10 --slave /usr/bin/g++ g++ /usr/bin/g++-12

Second, install Python packages for vLLM CPU backend building:

pip install --upgrade pip
pip install "cmake>=3.26" wheel packaging ninja "setuptools-scm>=8" numpy
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

使用git clone命令克隆vLLM仓库:

git clone https://github.com/vllm-project/vllm.git

进入vLLM目录:

cd vllm

安装依赖:
在vLLM目录下,使用pip命令安装依赖:


pip install modelscope

pip install -r requirements-cpu.txt

Finally, build and install vLLM CPU backend:

VLLM_TARGET_DEVICE=cpu python setup.py install

4) 在虚拟环境中,可以使用pip show vllm对查看安装结果:

pip install vllm

三、切换模型下载源

vLLM的模型下载默认来源为 HuggingFace 。在国内访问很可能不畅,为此改从国内的 魔搭社区 下载模型。既在运行前先设置VLLM_USE_MODELSCOPE=True既可切换下载源为 魔搭社区 。 (注意:在HuggingFace与魔塔社区上模型名称可能略有不同)。

3.1 使用魔塔社区

需要先安装package
pip install modelscope

3.2 设置环境变量

VLLM_USE_MODELSCOPE=True切换下载源为:魔搭社区

注意:低版本vLLM存在bug #8443导致该环境变量不生效。在v0.6.3版本修复了该bug
export VLLM_USE_MODELSCOPE=True

3.3 运行vllm

由于设置了环境变量,根据模型名称默认自动从 魔搭社区 下载并运行

vllm serve "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" --trust-remote-code --port 8000

3、运行本地已下载模型
除了以上自动下载的方式,还可以通过指定模型所在路径方式运行(需要先下载准备好),这样有几个好处:一是模型来源可以丰富多样,不仅仅局限以上两个平台;二是运行vLLM时无需再联网下载,比较适合内网服务器。

下面以模型“Yi-1.5-6B-Chat”为例, 提前通过git下载模型(需要确保lfs已经安装且初始化,具体见前文)。

cd /root/autodl-tmp/my_models
# 提前通过git下载模型(需要确保lfs已经安装且初始化,具体见前文)
git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git
  通过指定本地模型所在路径运行vLLM:

# 运行vllm,指定本地模型所在路径
vllm serve "/root/autodl-tmp/my_models/Yi-1.5-6B-Chat"
# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --model="/root/autodl-tmp/my_models/Yi-1.5-6B-Chat" --trust-remote-code --port 8000

注:此例中,指定本地模型所在路径运行vLLM的模型名为:/root/autodl-tmp/my_models/Yi-1.5-6B-Chat

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容