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 , 下载地址 点击下载

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

export HF_ENDPOINT=https://hf-mirror.com

之后直接clone repo

git lfs install
git 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:8000
    deploy:
      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助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我会不断学习和进步,不断提升自己的能力。如果您有任何问题或需要帮助,请随时告诉我。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值