大模型推理部署工具之vLLM系列文章:
文章目录
前言
首先介绍一下vLLM是什么?
vLLM 是一个快速且易用的用于 LLM 推理和服务的库。vLLM最初由UC Berkeley的Sky Computing Lab 开发,现已发展成为一个由学术界和工业界共同贡献的社区驱动项目。
- vLLM 论文:https://arxiv.org/abs/2309.06180
- Github地址:https://github.com/vllm-project/vllm
- vLLM官方文档(英文):https://docs.vllm.ai/en/latest/
- vLLM中文文档(中文):https://vllm-zh.llamafactory.cn/
- 官方博客(PagedAttention):https://blog.vllm.ai/2023/06/20/vllm.html
vLLM 的速度很快,因为它具有以下几个特点:
- 最先进的服务吞吐量
- 使用 PagedAttention 对注意力键和值内存进行高效管理
- 对传入请求进行连续批处理
- 使用 CUDA/HIP 图进行快速模型执行
- 量化:GPTQ、AWQ、INT4、INT8 和 FP8
- 优化的 CUDA 内核,包括与 FlashAttention 和 FlashInfer 的集成。
- 推测解码
- 分块预填充
一、vLLM的使用
1.1 安装方式
- Linux环境基于pip安装
pip install vllm
注意:为了提高性能,vLLM 必须编译许多 CUDA 内核。不幸的是,编译会引入与其他 CUDA 版本和 PyTorch 版本的二进制不兼容性,即使对于具有不同构建配置的相同 PyTorch 版本也是如此。
因此,建议使用 全新的conda环境 安装vLLM。如果你使用的是不同版本的CUDA,或者想要使用现有的PyTorch安装,你需要从源代码构建vLLM。请参阅以下说明。
- 推荐用 全新的conda环境 来安装vLLM,不然很可能出现PyTorch 版本不兼容的情况,出现报错。
- 整个vllm库的安装时间比较长,需要耐心等待。
- 基于源代码构建
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e . # This may take 5-10 minutes.
1.2 离线批处理推理(Offline Inference)
这里我们以 GLM-4-9B 和 GLM-4-9B-Chat 模型为例,来具体讲解如何使用vLLM进行推理及部署。
GLM-4-9B 官方Github地址:https://github.com/THUDM/GLM-4
官方提供了两种快速调用的方式:使用 transformers 后端进行推理 和 使用 vLLM 后端进行推理。本篇博客主要关注 使用 vLLM 后端进行推理 的方式。
(1)vLLM官方示例
参照vLLM官方示例,这里我们以 GLM-4-9B 基础版本 为例,给出了vLLM的推理方式,实现代码如下:
主要过程为:
-
从 vLLM 导入 LLM 和 SamplingParams 类。LLM 类是使用 vLLM 引擎进行离线推理的主要类。SamplingParams 类指定了采样过程的参数。
-
调用 llm.generate 生成输出。它将输入提示添加到 vLLM 引擎的等待队列中,并执行 vLLM 引擎以高吞吐量生成输出。
-
输出以 RequestOutput 对象列表的形式返回,其中包含所有输出标记。
示例代码如下:
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
prompts = [
"Hello, my name is",
"The president of the United States is",
"The capital of France is",
"The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8

&spm=1001.2101.3001.5002&articleId=145954767&d=1&t=3&u=7f3f7b8a0f044b6683b2ef95c3cbcfab)
4390

被折叠的 条评论
为什么被折叠?



