0


docker+vllm 快速上手 以部署Qwen2.5通义千问为例

在开始部署操作之前,请务必检查以下CheckList中的条件是否满足

CheckList

适合阅读人群

  • 有需要做本地化方案的人群
  • AI开发者

新手建议直接上手线上API

  • 运维

硬件

  • 首先你得有显卡(nvidia),没有可以去租

显存>= 24g

软件

  • 操作系统为Linux, 本次以Ubuntu 22.04 为例
  • 正确得安装了显卡的驱动, 注意cuda版本应该>=12.4, 执行nvidia-smi可以看到如下界面nvidia-smi执行结果
  • 正确的安装了docker以及nvidia-dockerdocker-compose

使用docker就不用处理烦人的依赖啦

vllm

核心概念

vllm 是一个高效的大模型

推理库

,通过

PagedAttention

技术高效管理注意力键和值的内存使用,优化推理过程。

以下表格是vllm开发者对自己的介绍, 以及本人使用过程中的实际评价。
特点描述评价先进的吞吐量提供卓越的服务性能,满足高需求的推理工作负载。所言不虚PagedAttention 技术高效管理注意力键和值的内存使用,优化推理过程。所言不虚连续批处理支持无缝批量处理传入请求,显著提升吞吐量,减少延迟。所言不虚快速模型执行通过 CUDA/HIP 图形加速模型的执行效率。所言不虚多种量化选项支持 GPTQ、AWQ、INT4、INT8 和 FP8 等多种量化技术,优化模型的大小和性能。量化模型是显存不足情况下的无奈之举,部分情况下会出现模型抽风的现象(反复输出同样的内容) , 能上满血的满血还是尽量跑满血的模型优化的 CUDA 内核集成 FlashAttention 和 FlashInfer,进一步提升性能。所言不虚推测解码和分块预填充采用先进的解码技术,提高响应速度。确实很快无缝集成 HuggingFace轻松引入流行的 HuggingFace 模型,适用于多种应用场景。在国内的环境使用并不轻松,基本上是网络问题引起的,注意上网方式高吞吐量解码算法支持多种解码策略,如并行采样和束搜索,满足不同需求。一张4090跑7B抗10个并发不是问题🐂并行计算支持提供张量并行和流水线并行,充分发挥分布式推理的优势。如上流式输出功能支持实时应用的流式输出,提升用户体验。实现打字机效果必备 🥳兼容 OpenAI API提供与 OpenAI 框架兼容的 API,简化集成过程。无缝接入, 接入时只需要改初始化的base_url地址即可硬件兼容性支持 NVIDIA GPU、AMD CPU 和 GPU、Intel CPU 和 GPU、PowerPC CPU、TPU,以及 AWS Trainium 和 Inferentia 加速器。目前只尝试了N卡前缀缓存与多 Lora 支持通过前缀缓存和多 Lora 功能,进一步提升模型的性能与灵活性。暂未尝试

部署

准备工作

  1. 第一步拉取镜像:
sudo docker pull vllm/vllm-openai:v0.6.1 
  1. 下载模型

从HF上下载模型

qwen2.5-7b-instruct

, 下载地址 点击下载

如果速度较慢可以配置加速地址,操作方法如下

exportHF_ENDPOINT=https://hf-mirror.com

之后直接clone repo

git lfs installgit clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct

下载完成之后的文件列表如下

在这里插入图片描述

如果git无法clone下来可以上modelscope或者, 更改上网方式在HF上逐个下载保存到本地

下载完成之后,将模型保存至和docker-compose.yaml同一父目录的models文件夹中便于统一管理

使用docker-compose部署

docker-compose.yaml 文件如下

services:vllm:container_name: vllm
    restart: no
    image: vllm/vllm-openai:v0.6.1
    ipc: host
    volumes:- ./models:/models
    command:["--model","/models/Qwen2.5-7B-Instruct","--served-model-name","qwen2.5-7b-instruct","--gpu-memory-utilization","0.90"]ports:- 8000:8000deploy:resources:reservations:devices:-driver: nvidia
              count: all
              capabilities:[gpu]

启动参数解释
–model 模型的路径,vllm会尝试本地有没有这个文件夹以及HF上有没有对应的repo,如果本地没有并且HF上有对应的repo则会自动下载模型
–served-model-name 模型的名称,api调用的时候需要保持一致
–gpu-memory-utilization 占用显存的上限,此参数会影响并发和模型上下文长度,后续本专栏将会提供vllm参数解析

执行命令, 启动vllm

sudo docker compose up -d

查看日志

sudo docker logs -f vllm

在这里插入图片描述
查看显存占用

nvidia-smi

在这里插入图片描述

使用

import openai

client = openai.OpenAI(
    base_url='http://127.0.0.1:8000/v1',
    api_key='NOT_NEED')
predict_ret = client.chat.completions.create(
    model='qwen2.5-7b-instruct',# 此处名称要和vllm中的served-model-name一致
    messages=[{'role':'user','content':'你是谁'}])print(
    predict_ret.choices[0].message.content
)

输出如下:

我是阿里云开发的一种超大规模语言模型,我叫Qwen。作为一个AI助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我会不断学习和进步,不断提升自己的能力。如果您有任何问题或需要帮助,请随时告诉我。

本文转载自: https://blog.csdn.net/kesanzz/article/details/143304110
版权归原作者 赛博小钻风 所有, 如有侵权,请联系我们删除。

“docker+vllm 快速上手 以部署Qwen2.5通义千问为例”的评论:

还没有评论