使用vllm部署自己的大模型

本文介绍了如何使用vllm部署一个高性能的大模型后端,支持WebUI并集成Fast-Attn库,详细讲解了安装步骤、模型部署、以及通过OpenAI风格API进行调用的方法,包括参数设置和性能优化选项。
摘要由CSDN通过智能技术生成

1. 引言

使用vllm能够部署一个非常方便使用的大模型的后端,供webui前端使用,它不仅能够加速模型的推理过程,包括支持fast-attn库,而且还具有很友好的openai风格的api调用功能。

2. 安装Vllm

vllm还是有一定的安装需求,根据官方文档,使用如下进行安装。

# (Recommended) Create a new conda environment.
conda create -n myenv python=3.9 -y
conda activate myenv

# Install vLLM with CUDA 12.1.
pip install vllm

这里没有提及fast-attn的使用,如果没有安装默认使用的是XFormers的backend,建议有条件的话可以通过以下命令再安装一下fast-attn。

pip install flash-attn

3. 部署模型

首先我们需要下载需要的模型,如果不下载的话,默认的模型会从huggingface的模型库中下载。这里我们本地模型的地址是/data/nlp/models/llama3_7b_instruct。那么只需要执行以下代码。

CUDA_VISIBLE_DEVICES=0 nohup python -m vllm.entrypoints.openai.api_server --model /data/nlp/models/llama3_8b_instruct --served-model-name llama3_8b_instruct --dtype=half > vllm_test.out &

这里served-model-name指的是模型加载到api接口后的模型名(当然你可以将其改为gpt-3.5 turbo,让llama3来代替gpt-3.5节省成本),后面dtype=half是半精度加载。不过vllm已经充分考虑了显存大小进行一个合适的加载了。以llama3_8b_instruct为例,长度默认是4096,加载后显存占用22G,它会预先占用好显存。这里默认的端口是8000,也可以通过--port更改访问端口。

当命令行显式出INFO 04-26 13:08:05 selector.py:28] Using FlashAttention backend.或者INFO 04-26 10:05:08 selector.py:33] Using XFormers backend.的时候,就证明启动成功了。

关于vllm的参数详细介绍,可以参考其参数解读

4. 调用模型

调用模型可以通过curl或者python代码调用,风格是和openai的api一样的。

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "llama3_8b_instruct",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Who won the world series in 2020?"}
        ]
    }'
或者
```python
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

chat_response = client.chat.completions.create(
    model="llama3_8b_instruct",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me a joke."},
    ]
)
print("Chat response:", chat_response)

更多的使用,可以参见它的官方文档或者github用于二次改造,比如它的templete的自定义等。

当然,也有很多其他的推理框架,比如,OpenLLM,DeepSpeed等,可以看一下推理框架对比

在这里插入图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI让世界更懂你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值