vLLM部署QWen2.5-Coder
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
环境
Windows系统下的Linux子系统(WSL2)。
目的
本文旨在使用vLLM官方提供的Openai镜像部署下载在WSL2中的开源模型,暴露一个 OpenAI 兼容的 API 接口,并使用另一个客户端容器访问。
一、拉取vLLM官方的Openai镜像
在wsl中pull官方的镜像。
docker pull vllm/vllm-openai:latest

无法拉取属于网络问题,自行解决。
二、下载模型
1.使用python虚拟环境
也可以使用conda环境。
python3 -m venv qwen2.5-coder
source qwen2.5-coder/bin/activate

2.安装依赖库
先升级pip。
python -m pip install --upgrade pip

安装两个下载所需的库(本文从魔搭社区下载模型,也可以从HuggingFace下载)。
pip install modelscope==1.20.0
pip install transformers==4.46.2


3.下载模型
python -c "
from modelscope import snapshot_download
snapshot_download('Qwen/Qwen2.5-Coder-1.5B-Instruct', local_dir='/home/devcontainers/models/Qwen2.5-Coder-1.5B-Instruct')
"

中间会因为缺少目录而报错软链接构建失败,但并不影响模型下载,给它创建一个目录就提示成功创建软链接。
至此,模型就下载完成。
三、在vLLM镜像上加载模型
docker run --gpus all \
--name vllm-qwen \
-v /home/devcontainers/models/Qwen2.5-Coder-1.5B-Instruct:/model \
-p 8000:8000 \
--shm-size=16g \
vllm/vllm-openai \
--model /model \
--tokenizer /model \
--dtype auto \
--max-model-len 2048 \
--gpu-memory-utilization 0.95 \
--served-model-name Qwen2.5-Coder-1.5B-Instruct

参数可自行更改,有些参数不加也有默认值,详细可见[参数文档]。
创建容器后,需要过一两分钟加载模型,当出现以下提示即为加载成功。
当然,因为硬件和模型所需不匹配的原因可能会多次失败,这时候就需要调整参数,甚至更换参数量更小的模型。
至此,提供服务的容器就启动完成了,可以在bash中或者docker desktop中查看后端日志。
四、外部容器访问
到这步,如果前面操作顺利,那从wsl中已经可以访问模型了。
但在其它容器中访问会提示HTTP连接失败。
因为容器中的 localhost 是指容器自身的网络栈,并不是指向 vLLM 服务所在的容器,所以请求无法路由到目标。
可以将localhost更改为容器的ip地址,使用命令ip addr show eth0查看ip,再将curl中的地址更改。
这里使用桥接Docker网络的方法。
创建Docker网络:
docker network create llmnet
关闭容器。
加入网络:
docker network connect llmnet vllm-qwen
docker network connect llmnet container_name
启动容器。
验证连接:
在container_name容器中执行curl。
此时提供服务的后端容器日志可以看到。
测试API调用
客户端测试代码:
from openai import OpenAI
client = OpenAI(
base_url="http://vllm-qwen:8000/v1",
api_key="EMPYT", # 随便填写,只是为了通过接口参数校验
)
completion = client.chat.completions.create(
model="Qwen2.5-Coder-1.5B-Instruct",
messages=[
{"role": "user", "content": "C语言输出斐波那契数列的第98980个数字"}
]
)
print(completion.choices[0].message)
客户端请求并得到输出:
服务端响应:
参考
更多推荐


所有评论(0)