vLLM调度部署Qwen3

vLLM介绍

        在之前的文章中,我们介绍了如何使用ollama部署qwen3,一般而言,ollama适合个人部署使用,在面对企业级的模型部署时,一般更建议使用vLLM

        vLLM(高效大语言模型推理库)是一个专为大语言模型(LLMs)优化推理速度的开源框架,由斯坦福大学系统研究组开发。其核心目标是通过创新的软件和算法设计,大幅提升 LLM 在生成文本时的吞吐量和效率,尤其适用于处理高并发的推理请求。

        从各种基准测试数据来看,同等配置下,使用VLLM 框架与 Transformer 等传统推理库相比,其吞吐量可以提高个数量级,这归功于以下几个特性:

  • 高级 GPU优化:利用CUDA和 PyTorch 最大限度地提高 GPU 利用率,从而实现更快的推理速度。 0llama 其实是对 CPU-GPU 的混合应用,但 vllm 是针对纯 GPU 的优化。
  • 高级内存管理:通过 PagedAttention 算法实现对 KV cache 的高效管理,减少内存浪费,从而优化大模型的运行效率。
  • 批处理功能:支持连续批处理和异步处理,从而提高多个并发请求的吞吐量
  • 安全特性:内置 API密钥支持和适当的请求验证,不像其他完全跳过身份验证的框架
  • 易用性:vLLM 与 HuggingFace 模型无缝集成,支持多种流行的大型语言模型,并兼容 0penAI 的 API 服务。

vLLM安装

VLLM的安装仍旧依赖于python环境,因此建议在虚拟环境下进行安装,如下创建并启动虚拟环境

conda create --name vllm python=3.11
conda activate vllm

然后使用pip直接安装vllm即可

pip install bitsandbytes>=0.45.3
pip install --upgrade vllm

Qwen3模型权重下载

不同于ollama,vllm部署模型需要依赖于模型的源权重文件,可参考以下配置选择自己的模型

模型名称 显存需求(推理) 推荐 CPU 推荐 GPU 推荐内存
Qwen3-0.6B 1GB+ Xeon W-2400 系列 GTX 1050 4GB+
Qwen3-1.7B 2GB+ Xeon W-2400 系列 GTX 1660 8GB+
Qwen3-4B 8GB+ Xeon W-2400 系列 RTX 3090 16GB+
Qwen3-8B 14GB+ Xeon W-2400 系列 RTX 4080 16GB+
Qwen3-14B 24GB+ Xeon W-3400 系列 RTX 3090*2 32GB+
Qwen3-32B 58GB+ Xeon W-3400 系列 RTX 3090 * 4 64GB+
Qwen3-30B-A3B 55GB+ Xeon W-3400 系列 RTX 3090 * 4 64GB+
Qwen3-235B-A22B 350GB+ EPYC 7002 系列 H204/A1008 512GB+

这里为方便做测试,仅下载Qwen3-1.7B使用,下载方式直接使用官网提供的下载方式即可

Qwen3-1.7B · 模型库

Qwen3的模型都通过modelscope进行管理,在下载前,请先通过如下命令安装ModelScope

pip install modelscope

下载完整模型库 

modelscope download --model unsloth/Qwen3-1.7B

启动Qwen3服务

CUDA_VISIBLE_DEVICES=3 vllm serve  Qwen3-1.7B --host 0.0.0.0 --port 8080  --gpu-memory-utilization 0.4   --max-model-len 32768 --enable-reasoning --reasoning-parser deepseek_r1

以下是相关参数说明,更多使用详见官网vLLM - Qwen 

  • CUDA_VISIBLE_DEVICES=3,设置仅使用第 3 块 GPU(从 0 开始计数),如果使用多卡启动,可使用该参数
  • vllm serve:启动 vLLM 推理服务,基于 HTTP 协议提供模型 API。
  • --host 0.0.0.0:允许从任意 IP 地址访问服务(生产环境建议限制为特定 IP)。
  • --port 8080:服务监听的端口号,可自定义(需确保端口未被占用)。
  • --gpu-memory-utilization 0.4
    • 限制 GPU 内存使用率为 40%(默认 90%),避免内存溢出。
    • 适用场景:GPU 显存不足(如 Qwen3-1.7B 通常需 2-4GB 显存,此配置留足缓冲)。
    • vllm启动模型前会进行前置检查,其中一项检查就是保证显卡有足够的显存,默认情况下vllm认为显存空闲率为90%才能启动模型,但Qwen3-1.7b不需要这么多的显存,因此添加该参数进行限制
  • --max-model-len 32768
    • 设置模型支持的最大序列长度为 32768 tokens(约 24000 汉字)。
    • 适用场景:处理长文本对话、文档分析等需要长上下文的任务。
  • --enable-reasoning
    • 启用模型的推理能力,支持结构化输出(如工具调用、逻辑推理步骤)。
    • 原理:通过特殊 prompt 引导模型生成符合特定格式的响应(如 JSON、Markdown)。
  • --reasoning-parser deepseek_r1
    • 指定使用 DeepSeek R1 解析器处理推理输出。
    • 作用:将模型生成的自然语言转换为可执行的工具调用指令(如调用 Python 函数、API)。

调用Qwen3服务

不同于ollama,使用vllm部署启动的模型,需要显示使用api进行调用,如下所示

from openai import OpenAI

openai_api_key = "EMPTY"  # 由于使用的是本地服务,key可以为空或任意值
openai_api_base = "http://10.126.56.41:8080/v1"

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

prompt = "在单词\"strawberry\"中,总共有几个R?"
messages = [
    {"role": "user", "content": prompt}
]

# 确认模型名称与实际目录一致
response = client.chat.completions.create(
    model="Qwen3-1.7B",
    messages=messages
)

print(response.choices[0].message.content)

 需要说明一点的是

# 确认模型名称与实际目录一致
response = client.chat.completions.create(
    model="Qwen3-1.7B",
    messages=messages
)

上述调用模型的代码中model参数的值(即模型路径)必须要与vllm serve启动时使用的模型路径一致,否则会出现报错找不到模型文件,假如上述代码修改为

# 确认模型名称与实际目录一致
response = client.chat.completions.create(
    model="./Qwen3-1.7B",
    messages=messages
)

哪怕二者都表示相对路径,但是调用代码的模型路径与vllm加载模型的路径不一致,也会报错,如下所示 

openai.NotFoundError: Error code: 404 - {'object': 'error', 'message': 'The model `./Qwen3-1.7B` does not exist.', 'type': 'NotFoundError', 'param': None, 'code': 404}

以下是脚本启动后的结果

vLLM调度部署Qwen3_第1张图片

你可能感兴趣的:(人工智能,linux,大模型)