vLLM实践详解

针对大模型推理速度慢的问题,vLLM针对一些大模型进行优化适配,可以有效提高推理速度,体量越大的模型,提高的效果越好。

vLLM适配支持的大模型:

Supported Models — vLLM

vLLM安装部署

vllm有两种安装方式:基于CUDA 12.1安装;源码安装。为了方便快捷,本文选择前者,并部署到容器内。

Dockerfile

FROM nvidia/cuda:12.1.0-devel-ubuntu22.04

WORKDIR /temp

ENV DEBIAN_FRONTEND=noninteractive

# 安装基础包

RUN apt update && \

    apt install -y \

        wget build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \

        libreadline-dev libffi-dev libsqlite3-dev libbz2-dev liblzma-dev libgl1 libglib2.0-0 git && \

    apt clean && \

    rm -rf /var/lib/apt/lists/*

# 下载python & 编译&安装python

RUN wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz && \

    tar -xvf Python-3.9.10.tgz && \

    cd Python-3.9.10 && \

    ./configure --enable-optimizations && \

    make && \

    make install

WORKDIR /workspace

RUN rm -r /temp && \

    ln -s /usr/local/bin/python3 /usr/local/bin/python && \

    ln -s /usr/local/bin/pip3 /usr/local/bin/pip

WORKDIR /usr/src/Qwen1.5-14B-Chat-AWQ

COPY requirements.txt ./

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip && \

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple vllm && \

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "/usr/src/Qwen1.5-14B-Chat-AWQ/app_vllm.py", "--model", "/home/models/Qwen1.5-14B-Chat-AWQ", "--trust-remote-code", "--max-model-len", "12000", "--gpu-memory-utilization", "0.9"]

requirements.txt

transformers==4.32.0

accelerate

tiktoken

einops

transformers_stream_generator==0.0.4

scipy

gradio

modelscope

optimum

auto-gptq

# 创建cuda:12.1.0基础开发容器:

docker build -f ./Dockerfile -t vllm .

# 查看vllm容器id

docker ps | grep vllm

# 进入vllm容器并安装vllm

docker exec -ti vllmID /bin/bash

pip install vllm

# 保存当前vllm容器镜像

docker commit vllmID vllm:v1.0

app_vllm.py中可以参考vllm官方文档用例,写一些基础demo调试验证vllm容器环境是否OK

Quickstart — vLLM

vLLM并发推理实践

官方用例中的LLM类不是多线程安全的,并发调用推理,会有问题。

要使用AsyncLLMEngine类来实现并发推理场景,具体可参考官方的api_server

https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/api_server.py

sampling_params = SamplingParams(temperature=temperature, top_p=generation_config.top_p)
prompt = prompt_text
request_id = random_uuid()
results_generator = engine.generate(prompt
, sampling_params, request_id)
final_output =
None
async for
request_output in results_generator:
    final_output = request_output

text_outputs = [output.text for output in final_output.outputs]

另外:vllm目前是没有针对chat场景的输入封装的,要开发者自己去处理输入,针对不同模型进行封装的。如:qwen的输入封装参考

vLLM 部署 Qwen_使用vllm部署qwen int4-CSDN博客

vLLM优化效果比对

qwen14b

qwen14b-vllm

qwen7b

qwen7b-vllm

qwen1.5-14b-vllm

单发响应

973 ms

356ms

406 ms

402ms

398ms

10 并发

最长 38 s

最长1.155s

最长1.368 s

最长1.037s

最长1.299s

20并发

最长 77 s

最长2.201s

最长2.022s

最长2.673s

100 并发

最长385 s

最长11.016秒

最长12.51 s

最长9.4s

最长12.396s

  1. qwen7b略有提速。
  2. qwen14b的并发场景优化效果高达30+倍,还是很明显的提速。
  3. 这里qwen14b是不在支持列表的,所以,输出会有些问题;qwen7b-vllm和qwen1.5-14b-vllm的输出暂未发现问题。
  4. 综上,不难发现,针对大模型的推理优化,模型体量越大,优化效果越明显。
  5. vLLM技术还很新,可能有各种小问题,但是从实测效果看,提速显著,未来可期。

魔塔下载模型

1)安装魔搭:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple modelscope

2)下载模型

from modelscope.hub.snapshot_download import snapshot_download

model_dir = snapshot_download('qwen/Qwen1.5-14B-Chat-AWQ', cache_dir='autodl-tmp', revision='master', ignore_file_pattern='.bin')

执行命令,注意使用参数 ignore_file_pattern 避免下载 bin 文件。

如何在ModelScope社区魔搭下载所需的模型_如何 快速 下载 摩搭上的模型-CSDN博客

魔搭社区

               

参考

Installation — vLLM

使用vLLM加速大语言模型推理-腾讯云开发者社区-腾讯云

相关推荐

  1. Qwen等大模型使用 vLLM部署详解

    2024-03-15 17:20:04       11 阅读
  2. 大模型框架:vLLM

    2024-03-15 17:20:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 17:20:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 17:20:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 17:20:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 17:20:04       20 阅读

热门阅读

  1. jvm 垃圾回收机制原理

    2024-03-15 17:20:04       22 阅读
  2. Day34|贪心算法|分发糖果

    2024-03-15 17:20:04       27 阅读
  3. 大龄程序员的出路在哪里?

    2024-03-15 17:20:04       19 阅读
  4. Elasticsearch详解es

    2024-03-15 17:20:04       19 阅读
  5. Python使用pynput模块后台监控鼠标及按键

    2024-03-15 17:20:04       21 阅读
  6. 数据分析入门,深入浅出的数据分析

    2024-03-15 17:20:04       21 阅读
  7. 【C#语言入门】20. 重写,多态

    2024-03-15 17:20:04       21 阅读
  8. Docker学习——容器

    2024-03-15 17:20:04       20 阅读
  9. Spring Boot 单元测试

    2024-03-15 17:20:04       18 阅读
  10. k8s学习笔记

    2024-03-15 17:20:04       17 阅读
  11. redis监控

    2024-03-15 17:20:04       19 阅读