vllm部署实践:windows单显卡上部署qwen模型

之前的理论文章中介绍过大模型部署方面的相关知识,也从推理优化的角度讲过了vllm的优化原理,但受资源限制,之前一直没有实际跑过(当然,可以去算力平台购买算例,但是在没有实际需求的场景下去租算力玩vllm部署感觉有点不太合适),最近的电脑上配上了一块显卡,因此可以尝试实践部署下vllm来玩一下。本文主要记录下可复现的安装过程,如果你也有类似的需求,可以少踩坑。

安装并启动WLS

由于vllm不支持windows平台,为了能够在windows上使用vllm,我们需要使用WSL来进行部署。安装完成之后,需要在WLS上安装ubuntu的发行版本。这里建议安装Ubuntu-22.04版本(之前安装老一点的版本存在很多问题),然后通过wsl进入ubuntu。

安装Mini conda(可选)

这一步是为了对python环境进行管理,当然现在也有很多的包管理方式,比如uv等。根据个人喜好来,不装也行,主要把python环境安装好。如果要进行这一步,可以按以下命令操作:

bash 复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget bzip2

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
#如果下载慢可以使用清华版本
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行下载下来的安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

#初始化conda环境
source ~/.bashrc

# Ubuntu/Debian  安装C编译器
sudo apt update
sudo apt install build-essential -y

安装过程中会有各种提示,可以一直enter下去,最后yes即可。安装成功后,创建python环境:

ini 复制代码
conda create -n vllm-env python=3.10 -y
conda activate vllm-env

亲测:3.10是一个合适的版本,之前使用3.9折腾了好久,手动安装很多包还是存在各种包版本冲突的问题。最后升级Ubuntu并升级python版本,最终解决。

安装并启动VLLM

接着继续安装依赖,安装支持 CUDA 12.1 的 PyTorch(注意看你的本地安装的cuda版本是多少)。

perl 复制代码
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

之后就可以安装vllm了

bash 复制代码
pip install vllm

# 如果国内速度慢可以切换镜像
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

之后就可以启动llm了。这里我使用的是qwen3-4B。注意启动的时候可能会由于显存不够出现失败(我的设备是12G显存的3060),直接启动起不起来,需要通过一些优化方式来启动:

css 复制代码
python -m vllm.entrypoints.openai.api_server --model /home/wyk/models/Qwen3-4B --host 0.0.0.0 --port 8000 --gpu-memory-utilization 0.9 --max-model-len 14000 --dtype half --max-num-seqs 128 --enable-chunked-prefill --max-num-batched-tokens 14000  --served-model-name Qwen3-4B --api-key sk-abc123def456

启动成功。

手动下载模型

如果由于网络问题你无法直接通过命令下载模型(无法使用huggingface相关的指令),这种情况你就需要手动下载模型。

bash 复制代码
# 模型地址
https://hf-mirror.com/Qwen/Qwen3-4B

# 在 Windows PowerShell 中
git lfs install
git clone https://hf-mirror.com/Qwen/Qwen3-4B C:\models\Qwen3-4B

# 或者直接在ubuntu中
mkdir -p /home/wyk/models/Qwen3-4B
cd /home/wyk/models/Qwen3-4B

wget https://hf-mirror.com/Qwen/Qwen3-4B/resolve/main/config.json
wget https://hf-mirror.com/Qwen/Qwen3-4B/resolve/main/model-00001-of-00002.safetensors
wget https://hf-mirror.com/Qwen/Qwen3-4B/resolve/main/model-00002-of-00002.safetensors
wget https://hf-mirror.com/Qwen/Qwen3-4B/resolve/main/tokenizer.json
wget https://hf-mirror.com/Qwen/Qwen3-4B/resolve/main/tokenizer_config.json

之后在wsl上启动的时候指定模型对应的下载位置即可,例如:

bash 复制代码
--model /mnt/c/models/Qwen3-4B

一些参数优化

一开始的时候max_model_len直接设置成32k,然后提示KV Cache内存不足,启动不起来,所以这个参数一开始不要设置的太大,可以从8192开始往上。另外如果有量化的版本,可以考虑使用量化的版本(GPTQ/AWQ)进行部署。这样可以将模型+KVcache的内存占用控制在合理的内存大小之内。另外一些可选的参数如下:

--dtype half 强制使用 float16 加载模型,避免意外使用 float32 导致显存爆炸。
--enable-chunked-prefill 允许处理长输入时分块推理,提升大输入稳定性。
--max-num-seqs 128 控制最大并发请求数,防止 OOM
--max-num-batched-tokens 8192 防止大 batch 导致显存溢出
served-model-name 如果是手动下载的模型,这个参数需要指定一下,否则访问api调用时访问不到:Qwen3-4B

测试

我们编写一个测试脚本来测试一下调用它的单次请求耗时:

ini 复制代码
import time
import asyncio
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="sk-abc123def456"
)

def test_single_request():
    print("🔄 测试单次请求延迟...")
    start_time = time.time()
    
    response = client.chat.completions.create(
        model="Qwen3-4B",
        messages=[{"role": "user", "content": "请用中文写一首关于春天的诗"}],
        max_tokens=256,
        stream=False
    )
    
    total_time = time.time() - start_time
    num_tokens = len(response.choices[0].message.content.split())
    speed = num_tokens / total_time
    
    print(f"✅ 总耗时: {total_time:.2f}s")
    print(f"✅ 生成 {num_tokens} 个 token")
    print(f"✅ 速度: {speed:.2f} tokens/s")

# 运行测试
test_single_request()

它的结果如下,可以看到,我们成功使用vllm部署了模型并对外提供服务,对于非流式接口,生成速度是0.63token/s:

总结

本文主要记录了一下在windows上使用vllm部署大模型并对外提供服务的过程。从使用上来说,如果我们真的要使用模型,我们完全可以有其他的选择(比如ollma部署或者调用三方api),但是作为vllm的实践探索,自己本机部署是一个好的开始。

相关推荐
智泊AI4 小时前
AI大模型入门篇 | 完全0基础也能看得懂!轻松入坑AI大模型!
llm
大模型教程6 小时前
大模型AI Agent 小白科研路线规划:从入门到精通!(含Agent学习资源)
程序员·llm·agent
大模型教程6 小时前
刚入门AI大模型?这6个GitHub教程,连微软都忍不住推荐了
程序员·llm·agent
AI大模型7 小时前
别再瞎学大模型了,这份GitHub神级课程火爆全网(附教程)
程序员·llm·agent
AI大模型7 小时前
想学大模型不知道从哪下手?Happy-LLM,手把手教你搭建自己的大模型!
程序员·llm·agent
m0_650108247 小时前
【论文精读】R&D-Agent-Quant:基于多智能体框架的量化因子与模型研发自动化系统
自动化·llm·agent·论文精读·量化分析·多智能体协同系统·金融分析
加油201910 小时前
ASR+LLM:B站学习视屏下载并生成学习笔记
llm·学习笔记·b站·asr·bilibili
hzp66610 小时前
Magnus:面向大规模机器学习工作负载的综合数据管理方法
人工智能·深度学习·机器学习·大模型·llm·数据湖·大数据存储
CoderJia程序员甲11 小时前
GitHub 热榜项目 - 日榜(2025-10-17)
ai·llm·github·开源项目·github热榜