vLLM 部署 Qwen3.6-27B
vLLM 部署 Qwen3.6-27B
flyfish
一、vLLM 运行基础环境
Ubuntu 22.04.5 LTS
Driver Version: 560.35.05
CUDA Version: 12.6
Python 3.10.12
NVIDIA-SMI 560.35.05
torch 2.10.0+cu126
torchaudio 2.10.0+cu126
torchvision 0.25.0+cu126
transformers 5.14.1
vllm 0.19.1
对应的cuda
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
二、Python 3.10 虚拟环境创建、激活与退出
安装 venv 模块
sudo apt update && sudo apt install python3.10-venv
1. 创建虚拟环境
在指定目录下创建独立虚拟环境(示例命名为 vllm-env,可自定义):
python3.10 -m venv vllm-env
执行后会在当前目录生成 vllm-env 文件夹,包含独立的 Python 解释器、pip 和包安装目录。
2. 激活虚拟环境
source vllm-env/bin/activate
激活成功后,终端命令行前缀会出现 (vllm-env) 标识,此时所有 python/pip 操作仅作用于该虚拟环境,不会影响系统全局 Python。
3. 退出虚拟环境
deactivate
执行后回到系统默认 Python 环境。
三、vllm指定版本安装
pip install vllm==0.19.1 --extra-index-url https://download.pytorch.org/whl/cu126
快速克隆环境
- 安装克隆工具
可以直接安装到系统 Python,或者在原环境中安装:
# 系统级安装(推荐,全局可用)
pip install virtualenv-clone
如果执行命令提示找不到,可改用 python3 -m virtualenv-clone 调用。
- 一键克隆虚拟环境
命令格式:virtualenv-clone 原环境路径 新环境路径
virtualenv-clone ./vllm-env ./vllm-env-new
四、启动 Qwen3.6-27
命令
vllm serve /media/model/qwen/Qwen3.6-27B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.7 \
--max-model-len 32768 \
--max-num-seqs 8 \
--dtype float16 \
--enable-prefix-caching \
--host 0.0.0.0 \
--port 8000 \
--served-model-name qwen-27b \
--trust-remote-code
参数含义详解
按功能分为 5 类逐一说明:
模型基础配置
| 参数 | 含义说明 |
|---|---|
/media/model/qwen/Qwen3.6-27B |
本地模型权重的存放路径,vLLM 从该目录加载模型文件 |
--trust-remote-code |
信任并执行模型目录中的自定义代码。 |
多卡并行与显存控制
| 参数 | 含义说明 |
|---|---|
--tensor-parallel-size 8 |
张量并行度,设置为 8 表示将模型权重按张量维度拆分到 8 张 GPU 上并行计算。 27B 参数量的模型单卡通常无法容纳,通过张量并行降低单卡显存占用;数值必须 ≤ 机器可用 GPU 数量 |
--gpu-memory-utilization 0.7 |
单卡显存利用率上限,取值范围 0~1。 此处 0.7 表示 vLLM 最多占用单卡 70% 的显存,剩余 30% 留给 CUDA 上下文、系统开销等,避免显存溢出(OOM);显存紧张时可适当调低 |
推理上下文与并发配置
| 参数 | 含义说明 |
|---|---|
--max-model-len 32768 |
最大上下文长度(单位:token),即单条请求「输入+输出」的总 token 上限。 不能超过模型原生支持的上下文窗口,此处设置为 32K |
--max-num-seqs 8 |
最大并发序列数,即服务端同时处理的请求(序列)最大数量。 数值越高并发能力越强,但 KV 缓存显存占用也越高;此处限制为 8,适配低并发、长上下文的场景 |
精度与性能优化
| 参数 | 含义说明 |
|---|---|
--dtype float16 |
模型计算与权重的数据精度,使用半精度浮点数(FP16)。 |
--enable-prefix-caching |
启用前缀缓存(Automatic Prefix Caching)。 自动缓存相同的前缀内容(如系统提示词、公共上下文),后续请求遇到相同前缀时直接复用 KV 缓存,大幅提升多轮对话、批量相同前缀请求的推理速度,降低显存开销 |
API 服务网络配置
| 参数 | 含义说明 |
|---|---|
--host 0.0.0.0 |
服务监听的 IP 地址。0.0.0.0 表示允许所有 IP 访问(局域网/公网均可调用);若仅本地使用,可改为 127.0.0.1 |
--port 8000 |
服务监听的端口号,调用 API 时通过此端口访问,例如 http://服务器IP:8000/v1/chat/completions |
--served-model-name qwen-27b |
对外暴露的模型名称。 调用 API 时 model 参数填写的值与此处一致即可,和本地模型路径无关,方便统一接口命名 |
纯文本模式+工具调用:以下命令跳过视觉编码器和多模态分析,以释放内存用于额外的 KV 缓存
vllm serve /media/model/qwen/Qwen3.6-27B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.7 \
--max-model-len 65536 \
--max-num-seqs 8 \
--dtype float16 \
--enable-prefix-caching \
--host 0.0.0.0 \
--port 8000 \
--served-model-name qwen-27b \
--trust-remote-code \
--language-model-only \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--reasoning-parser qwen3
1. --enable-auto-tool-choice
定位:工具调用功能的总开关,启用自动工具选择能力
开启后,模型可以根据用户提问的上下文,自主判断是直接回复文本,还是调用给定的工具/函数来补充信息后再作答,对应 OpenAI API 规范中的 tool_choice="auto" 模式。
这是 vLLM 实现原生工具调用的必填前置参数,开启后服务端才会处理请求中的 tools 字段,并对模型输出做工具调用检测。
强制依赖:使用该参数时必须同时搭配 --tool-call-parser 指定对应解析器,否则服务启动会报错——框架需要知道按哪种格式规则去解析模型输出的工具调用文本。
2. --tool-call-parser qwen3_coder
定位:指定 Qwen3 Coder 专属的工具调用格式解析器
不同模型家族的工具调用输出格式差异很大(有的是 JSON 代码块、有的是 XML 标签),解析器的作用是把模型生成的纯文本,提取并转换成标准的 tool_calls 结构化对象,供上层代码执行。
qwen3_coder 是专门适配 Qwen3 Coder 系列模型的解析器,该系列模型使用 XML 标签风格的工具调用格式,典型输出如下:
<tool_call>
<function=get_weather>
<parameter=city>济南</parameter>
<parameter=type>实时气温</parameter>
</function>
</tool_call>
该解析器支持流式增量解析、参数自动类型转换(字符串转数字/布尔值/对象),能精准提取函数名与参数,最终输出符合 OpenAI 协议标准的工具调用结构。
3. --reasoning-parser qwen3
定位:指定 Qwen3 专属的思考链解析器,分离推理过程与最终回答
Qwen3 系列具备内生思考能力:生成答案前会先输出一段被 ... 包裹的内部推理过程,再给出最终回复。该解析器负责对这两部分内容做结构化拆分。
具体作用:识别模型输出中的 和 边界标签,把思考过程提取到 API 响应的 reasoning_content(或 reasoning)字段,最终的正式回答保留在 content 字段中,实现二者分离。
业务价值:前端可以选择单独展示模型的思考步骤,也可以隐藏思考过程只展示最终答案,适配复杂推理、数学解题、代码排错等场景。
配套开关:可以通过 --default-chat-template-kwargs '{"enable_thinking": false}' 全局关闭思考模式,让模型直接输出最终答案,提升响应速度。
快速结束进程
| 0 N/A N/A 2835758 C VLLM::Worker_TP0 57344MiB |
| 1 N/A N/A 2835759 C VLLM::Worker_TP1 57344MiB |
| 2 N/A N/A 2835760 C VLLM::Worker_TP2 57344MiB |
| 3 N/A N/A 2835761 C VLLM::Worker_TP3 57344MiB |
| 4 N/A N/A 2835762 C VLLM::Worker_TP4 57344MiB |
| 5 N/A N/A 2835763 C VLLM::Worker_TP5 57344MiB |
| 6 N/A N/A 2835764 C VLLM::Worker_TP6 57344MiB |
| 7 N/A N/A 2835765 C VLLM::Worker_TP7 57344MiB |
pkill -9 -f "VLLM::Worker_TP"
详细的日志
vllm serve /media/model/qwen/Qwen3.6-27B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.7 \
--max-model-len 65536 \
--max-num-seqs 8 \
--dtype float16 \
--enable-prefix-caching \
--host 0.0.0.0 \
--port 8000 \
--served-model-name qwen-27b \
--trust-remote-code \
--language-model-only \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--enable-log-requests \
--enable-log-outputs \
--max-log-len 2000 \
> /media/model/qwen/vllm_run.log 2>&1 &
控制台和日志都显示
vllm serve /media/model/qwen/Qwen3.6-27B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.9 \
--max-model-len 262144 \
--max-num-seqs 8 \
--dtype float16 \
--enable-prefix-caching \
--host 0.0.0.0 \
--port 8000 \
--served-model-name qwen-27b \
--trust-remote-code \
--language-model-only \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--enable-log-requests \
--enable-log-outputs \
--max-log-len 2000 \
2>&1 | tee /media/model/qwen/vllm_run.log
更多推荐

所有评论(0)