欢迎关注我的CSDN:https://spike.blog.csdn.net/
免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。

本文总结了当前面向 Hermes 智能体的 vLLM 模型服务部署方案:现有 3 个 OpenAI-compatible API 入口可用,包括 122B 主力服务、122B 备用服务和 27B 轻量服务。整体配置并发上限为 48,建议按 Hermes 工程智能体 24 并发、100K 以上长上下文 6 并发作为压测和容量规划口径。推荐将 qwen3.5-122b-a10b-fp8 作为复杂工程、多工具调用和长上下文主模型,将 qwen3.6-27b-fp8 用于摘要、分类和低复杂度批量任务。上线前需重点补齐备用 122B 节点复测、262K 极限上下文压测、并发压测、API Key 轮换、端口白名单和健康检查配置。
当前部署容量摘要
截至 2026-05-26 当前探测结果,已有 3 个 vLLM API 入口可用,均为 OpenAI-compatible /v1 接口。
| 指标 | 当前结论 | 说明 |
|---|---|---|
| 当前可用 vLLM API 入口数 | 3 个 | 122B 主力入口为 TP=4/DP=2 双副本,另有 1 个 122B 备用入口和 1 个 27B DP=3 入口 |
| vLLM 配置最大并发序列数 | 48 | 按启动命令中的 max-num-seqs=8 叠加,DP 实例按 rank 叠加 |
| Hermes 工程智能体建议并发 | 24 | 面向工具调用、代码阅读、工程分析的明确预估口径 |
| 长上下文工程任务建议并发 | 6 | 100K-262K 上下文不建议按配置上限打满 |
| 单请求输出烟测吞吐 | 约 60-120 output tok/s | 非并发压测,仅用于估算 |
| 配置上限线性估算输出吞吐 | 约 4,320 output tok/s | 按配置并发简单相乘,仅作为上限参考 |
| 合理工程预估输出吞吐 | 约 1,800 output tok/s | 面向 Hermes 工程智能体和轻量任务混合负载 |
| 长上下文工程预估输出吞吐 | 约 500 output tok/s | 面向 100K+ 上下文、代码审查、仓库分析;不包含输入 prefill 耗时 |
实例明细:
| API 入口 | 模型 | 当前角色 | 副本数 | 配置最大并发 | 合理预估并发 | 长上下文并发 | 单请求输出 | 配置线性上限 | 合理预估输出吞吐 |
|---|---|---|---|---|---|---|---|---|---|
<主力节点A>:8000 |
qwen3.5-122b-a10b-fp8 |
122B 实例,8 卡 TP=4;DP=2 | 2 | 16 | 8 | 2 | 120 tok/s | 1920 tok/s | 800 tok/s |
<备用节点B>:8000 |
qwen3.5-122b-a10b-fp8 |
122B 实例,4 卡 TP=4 | 1 | 8 | 4 | 1 | 120 tok/s | 960 tok/s | 400 tok/s |
<轻量节点B>:13001 |
qwen3.6-27b-fp8 |
27B 实例,3 卡 DP=3 | 3 | 24 | 12 | 3 | 60 tok/s | 1440 tok/s | 600 tok/s |
| 合计 | 48 | 24 | 6 | 4320 tok/s | 1,800 tok/s |
实例与启动命令对应关系:
| 实例 | 对应启动命令 | GPU | 并行方式 | max-num-seqs |
实际配置并发 | max-num-batched-tokens |
max-model-len |
|---|---|---|---|---|---|---|---|
<主力节点A>:8000 |
# 8个卡 122B 命令 |
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 |
TP=4, DP=2 |
8 / DP rank | 16 | 65536 | 262144 |
<备用节点B>:8000 |
# 4个卡 122B 命令 |
CUDA_VISIBLE_DEVICES=4,5,6,7 |
TP=4 |
8 | 8 | 65536 | 262144 |
<轻量节点B>:13001 |
# 3个卡 27B 命令 |
CUDA_VISIBLE_DEVICES=1,2,3 |
DP=3, TP=1 |
8 / DP rank | 24 | 65536 | 262144 |
其中 <备用节点B>:8000 与 <轻量节点B>:13001 可以在同一台 8 卡机器上同时运行:122B 4 卡实例使用 GPU 4,5,6,7,27B DP 实例使用 GPU 1,2,3,GPU 分配不重叠。8 卡 122B 主力命令占用 0,1,2,3,4,5,6,7 和 8000 端口,应部署在另一台服务器,不能与 4 卡备用命令在同机同时运行。
说明:
- 上表的
tok/s指模型输出 token/s,不包含输入 prefill token/s。 - "配置线性上限"按单请求烟测吞吐乘以配置最大并发计算,仅作为上限参考,不作为生产承诺。
- "合理预估输出吞吐"按混合负载折减后给出明确数字,已考虑 batch 调度、KV cache、工具调用等待、网络和排队损耗。
<主力节点A>:8000的 8 卡方案采用TP=4, DP=2,是一个 API 入口下的 2 个 122B 副本;单个请求只落到其中 1 个 TP=4 副本,不会跨 2 个 DP 副本合并显存。- 4 卡 122B 的
max-num-seqs为 8,且 262K 长上下文、prefill 和 KV cache 余量明显弱于 8 卡资源池,因此合理预估并发明确按 4 处理。 - 对外容量承诺建议使用压测值。当前建议承诺口径为:普通短上下文 30 并发、Hermes 工程智能体 24 并发、100K+ 长上下文 6 并发;262K 极限上下文建议单独队列、单请求或低并发压测后再承诺。
- 当前命令的
--max-model-len 262144是硬上限。超过 262K 需要启用 RoPE/YaRN 类扩展并重新压测;仅有 A100 80G 不代表当前服务会接受超过 262K 的请求。 - vLLM 官方文档当前将
qwen3_xmlparser 主要列在 Qwen3-Coder 模型下;本方案用于 Qwen3.5/Qwen3.6 的依据是当前环境实测通过。升级 vLLM、模型权重或 chat template 后,必须重新做工具调用烟测。
一、结论摘要
本方案用于将自建 vLLM OpenAI-compatible 服务接入 Hermes 智能体,支撑复杂工程任务、工具调用、多轮工具闭环、流式输出和长上下文处理。
根据 2026-05-26 实测结果:
| 服务 | 模型 | 结论 | 推荐定位 |
|---|---|---|---|
http://<主力节点A>:8000/v1 |
qwen3.5-122b-a10b-fp8 |
可用,/models、聊天、流式输出、工具调用、工具闭环、长上下文烟测均通过 |
Hermes 主力复杂工程模型 |
http://<备用节点B>:8000/v1 |
qwen3.5-122b-a10b-fp8 |
可用,基础聊天、流式输出和工具调用通过;工具闭环与长上下文需补充复测 | 主力模型备用地址或负载均衡节点 |
http://<轻量节点B>:13001/v1 |
qwen3.6-27b-fp8 |
可用,工具调用和长上下文烟测通过 | 轻量任务、低成本任务、快速响应模型 |
关键适配结论:
- 该组 vLLM 服务可以适配 Hermes 智能体调用,尤其是
qwen3.5-122b-a10b-fp8更适合作为复杂工程智能体主模型。 /v1/models已返回max_model_len=262144,说明服务端配置了 262K 上下文;实测约 100,822 字符上下文可正常返回末尾校验码。- 262K 是单请求上限,不等于 16 个并发请求都能同时打满 262K。复杂工程调用应按长上下文低并发、短任务高并发分开管理。
- 按当前启动命令复核,三实例配置并发上限是
16 + 8 + 24 = 48,不是 80。
二、实测记录
2.1 模型与上下文能力
| 地址 | /models |
max_model_len |
备注 |
|---|---|---|---|
<主力节点A>:8000 |
200 | 262144 | 122B 主服务 |
<备用节点B>:8000 |
200 | 262144 | 122B 备用服务 |
<轻量节点B>:13001 |
200 | 262144 | 27B 服务 |
2.2 Hermes 关键能力验证
| 能力 | 122B 主力节点 | 122B 备用节点 | 27B 轻量节点 | 说明 |
|---|---|---|---|---|
| 基础聊天 | 通过 | 通过 | 通过 | 返回正常 content |
| 流式输出 | 通过 | 通过 | 通过 | 可返回 SSE chunk |
| OpenAI tools | 通过 | 通过 | 通过 | 返回标准 tool_calls |
| 工具调用闭环 | 通过 | 未单独复测 | 通过 | role=tool 结果可继续生成最终回答 |
| 长上下文烟测 | 通过 | 未单独复测 | 通过 | 约 100,822 字符输入,正确返回末尾校验码 |
三、总体架构
用户 / 开发者
Hermes Dashboard :13007
Hermes API Server :18008
OpenAI Client / 请求适配层
vLLM Qwen3.5 122B 主力 :8000
vLLM Qwen3.5 122B 备用 :8000
vLLM Qwen3.6 27B :13001
工程工具: shell / git / 文件 / 浏览器 / CI
A100 80GB x 8
A100 80GB x 4
A100 80GB x 3, DP=3
推荐分工:
| 层级 | 推荐配置 | 说明 |
|---|---|---|
| Hermes Dashboard | 0.0.0.0:13007 或内网地址 |
对外 Web 管理入口,建议加访问控制 |
| Hermes API Server | <Hermes内网地址>:18008 |
只给 Dashboard 或内部服务访问 |
| 主模型 | qwen3.5-122b-a10b-fp8 |
复杂工程、规划、代码理解、长上下文任务 |
| 轻量模型 | qwen3.6-27b-fp8 |
摘要、分类、简单问答、低成本批处理 |
| 请求适配 | OpenAI-compatible 请求透传 | 保证 Hermes 收到稳定的 content/tool_calls |
四、vLLM 部署方案
4.1 模型下载
bash
modelscope download --model Qwen/Qwen3.5-122B-A10B-FP8 \
--local_dir /data/models/Qwen3.5-122B-A10B-FP8
modelscope download --model Qwen/Qwen3.6-27B-FP8 \
--local_dir /data/models/Qwen3.6-27B-FP8
4.2 环境基线
| 项目 | 当前信息 |
|---|---|
| vLLM | 0.21.0 |
| GPU | 单节点基线为 NVIDIA A100-SXM4-80GB x 8;当前三入口组合至少涉及两组 8 卡资源 |
| Driver | 580.65.06 |
| CUDA | 13.0 |
| 推荐运行目录 | /data/models |
| API Key | 使用环境变量注入,不写入文档明文 |
生产环境建议:
- vLLM 服务进程使用专门账号运行。
- API Key 通过环境变量或密钥管理系统注入。
- 对
8000、13001端口增加防火墙白名单。 - 如 API Key 已出现在聊天、文档或日志中,生产前建议轮换。
4.3 当前实例与并发口径
从当前可访问端点看,已经有 3 个 vLLM API 入口可用:
| 序号 | 地址 | 模型 | 实例类型 | vLLM 配置并发上限 | Hermes 推荐并发 |
|---|---|---|---|---|---|
| 1 | <主力节点A>:8000 |
qwen3.5-122b-a10b-fp8 |
122B 主力服务,8 卡 TP=4/DP=2,2 副本 | 16 | 8 |
| 2 | <备用节点B>:8000 |
qwen3.5-122b-a10b-fp8 |
122B 备用实例,4 卡 TP=4 部署 | 8 | 4 |
| 3 | <轻量节点B>:13001 |
qwen3.6-27b-fp8 |
27B 轻量实例,3 卡 DP=3 部署 | 24 | 12 |
并发计算口径:
--max-num-seqs表示单个 vLLM 调度器可同时处理的序列数上限。- 122B 8 卡 DP 部署时,理论并发序列数为
8 x 2 = 16;122B 4 卡非 DP 部署时,实例理论并发序列数等于--max-num-seqs=8。 - 27B 使用
--data-parallel-size 3时,--max-num-seqs按 DP rank 生效,理论并发序列数为8 x 3 = 24。 - 当前 3 个 API 端点按启动命令配置上限合计为
16 + 8 + 24 = 48个并发序列。 - Hermes 复杂工程任务不建议按理论上限打满。混合工程负载建议 122B 8 卡 TP=4/DP=2 服务控制在 8 并发、122B 4 卡服务控制在 4 并发,27B 轻量任务控制在 12 并发。
需要注意:/v1/models 可以确认模型名和 max_model_len,但不会返回 --max-num-seqs、--max-num-batched-tokens、--tensor-parallel-size 等运行参数。要确认当前服务器真实启动参数,应在模型服务器执行:
bash
ps -ef | grep 'vllm serve' | grep -v grep
grep -E 'max-num-seqs|max-num-batched-tokens|tensor-parallel-size|data-parallel-size|max-model-len' \
vllm-qwen*.log
4.4 停止服务
bash
pkill -f "vllm serve /data/models"
生产环境建议优先使用 systemd 管理,避免误杀同机其他 vLLM 进程。
4.5 启动 Qwen3.5 122B 服务,8 卡方案
该方案将 8 张 A100 拆成 2 个 TP=4 的 122B-FP8 副本,由 vLLM 通过 DP=2 在同一个 OpenAI-compatible API 入口内调度。它比单个 TP=8 副本更适合日常多人并发和资源利用;单个 262K 极限长上下文任务仍建议限流。
bash
export VLLM_API_KEY='替换为生产密钥'
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
nohup vllm serve /data/models/Qwen3.5-122B-A10B-FP8 \
--served-model-name qwen3.5-122b-a10b-fp8 \
--host 0.0.0.0 \
--port 8000 \
--api-key "$VLLM_API_KEY" \
--tensor-parallel-size 4 \
--data-parallel-size 2 \
--data-parallel-backend mp \
--max-model-len 262144 \
--tool-call-parser qwen3_xml \
--enable-auto-tool-choice \
--reasoning-parser qwen3 \
--enable-prefix-caching \
--gpu-memory-utilization 0.85 \
--max-num-seqs 8 \
--max-num-batched-tokens 65536 \
--trust-remote-code \
> vllm-qwen3.5-122b-fp8-hermes.log 2>&1 &
适用场景:
| 场景 | 建议 |
|---|---|
| 常规 Hermes 工程智能体 | 使用 122B 8 卡 TP=4/DP=2,合理并发 8 |
| 长上下文代码审查 | 使用该服务,但控制 100K+ 长上下文总并发为 2 |
| 多工具调用规划 | 使用该服务,优先路由复杂任务 |
| 高并发短请求 | max-num-seqs=8 按 DP rank 生效,总配置并发 16 |
| 262K 极限上下文 | 建议单请求限流,不作为高并发能力承诺 |
启动参数标注:
| 参数 | 当前值 | 类型 | 作用 | 调整建议 |
|---|---|---|---|---|
CUDA_VISIBLE_DEVICES |
0,1,2,3,4,5,6,7 |
GPU 资源 | 指定使用 8 张 A100 | 122B 主力服务建议保持 8 卡 |
--served-model-name |
qwen3.5-122b-a10b-fp8 |
接口标识 | Hermes 请求中的 model 名称 |
必须与 Hermes 配置一致 |
--host |
0.0.0.0 |
网络 | 对所有网卡监听 | 公网暴露时必须配防火墙白名单 |
--port |
8000 |
网络 | OpenAI-compatible API 端口 | 多实例部署时端口不能冲突 |
--api-key |
$VLLM_API_KEY |
安全 | 启用 Bearer 鉴权 | 生产前轮换泄露过的 Key |
--tensor-parallel-size |
4 |
模型并行 | 每个 122B 副本使用 4 张 GPU 做 TP | 与 DP=2 共同使用 8 张卡 |
--data-parallel-size |
2 |
数据并行 | 启动 2 个 TP=4 副本 | 提升吞吐和多人并发 |
--data-parallel-backend |
mp |
DP 后端 | 单机多进程数据并行 | 单机 8 卡部署建议使用 |
--max-model-len |
262144 |
上下文 | 单请求最大上下文长度 | 复杂工程保留 262K,短任务实例可降到 32K/64K |
--tool-call-parser |
qwen3_xml |
工具调用 | 解析 Qwen 工具调用格式 | Hermes tools 必须保留 |
--enable-auto-tool-choice |
开启 | 工具调用 | 允许模型自动决定是否调用工具 | Hermes 智能体必须保留 |
--reasoning-parser |
qwen3 |
推理字段 | 解析 Qwen reasoning 输出 | 可保留,用于兼容 Qwen 推理输出 |
--enable-prefix-caching |
开启 | 性能 | 复用相同前缀 KV cache | 工程任务和多轮对话建议保留 |
--gpu-memory-utilization |
0.85 |
显存 | vLLM 可使用显存比例 | 复杂工程和 262K 上下文建议从 0.85 起步 |
--max-num-seqs |
8 |
并发 | 每个 DP 副本最大并发序列数 | DP=2 下总配置并发为 16 |
--max-num-batched-tokens |
65536 |
调度 | 单步批处理 token 上限 | 长上下文实例可保守 32768-65536 |
--trust-remote-code |
开启 | 模型加载 | 允许模型仓库自定义代码 | 仅使用可信模型目录 |
本服务理论最大并发序列数为 8 x 2 = 16;Hermes 复杂工程合理预估并发为 8,100K+ 长上下文建议 2。
4.6 启动 Qwen3.5 122B 服务,4 卡方案
4 卡方案可用于验证、临时部署或上下文较短的任务;不建议作为 262K 长上下文复杂工程主力服务。
bash
export VLLM_API_KEY='替换为生产密钥'
CUDA_VISIBLE_DEVICES=4,5,6,7 \
nohup vllm serve /data/models/Qwen3.5-122B-A10B-FP8 \
--served-model-name qwen3.5-122b-a10b-fp8 \
--host 0.0.0.0 \
--port 8000 \
--api-key "$VLLM_API_KEY" \
--tensor-parallel-size 4 \
--max-model-len 262144 \
--tool-call-parser qwen3_xml \
--enable-auto-tool-choice \
--reasoning-parser qwen3 \
--enable-prefix-caching \
--gpu-memory-utilization 0.90 \
--max-num-seqs 8 \
--max-num-batched-tokens 65536 \
--trust-remote-code \
> vllm-qwen3.5-122b-fp8-hermes.log 2>&1 &
说明:
- 如果坚持 262K 上下文,4 卡更容易受到 KV cache 与并发压力影响。
- 当前启动命令为
max-num-seqs=8、max-num-batched-tokens=65536;如生产压测不稳定,再降到max-num-seqs=4、max-num-batched-tokens=32768。 - 如出现 OOM,可优先降低
max-num-seqs、max-num-batched-tokens或max-model-len。
启动参数标注:
| 参数 | 当前值 | 类型 | 作用 | 调整建议 |
|---|---|---|---|---|
CUDA_VISIBLE_DEVICES |
4,5,6,7 |
GPU 资源 | 指定使用 4 张 A100 | 与 27B 实例同机时注意 GPU 不重叠 |
--tensor-parallel-size |
4 |
模型并行 | 将 122B 权重切分到 4 张 GPU | 4 卡下更适合短上下文或低并发 |
--max-model-len |
262144 |
上下文 | 保留 262K 上限 | 如 OOM,优先降到 131072 或 65536 |
--max-num-seqs |
8 |
并发 | 单实例最大并发序列数 | 4 卡长上下文如 OOM 或排队严重,可降到 4-8 |
--max-num-batched-tokens |
65536 |
调度 | 单步批处理 token 上限 | 4 卡长上下文如不稳定,可降到 32768 |
--gpu-memory-utilization |
0.90 |
显存 | vLLM 可用显存比例 | OOM 时降到 0.85 |
| 工具相关参数 | qwen3_xml / auto tool |
工具调用 | 支持 Hermes tools | 必须保留 |
本实例按当前启动命令的理论最大并发序列数为 8;但不建议在 262K 长上下文下打满。
4.7 启动 Qwen3.6 27B 轻量服务,3 卡 DP 方案
该方案适合作为 Hermes 的轻量任务模型或备用模型。
bash
export VLLM_API_KEY='替换为生产密钥'
CUDA_VISIBLE_DEVICES=1,2,3 \
nohup vllm serve /data/models/Qwen3.6-27B-FP8 \
--served-model-name qwen3.6-27b-fp8 \
--host 0.0.0.0 \
--port 13001 \
--api-key "$VLLM_API_KEY" \
--data-parallel-size 3 \
--tensor-parallel-size 1 \
--data-parallel-backend mp \
--max-model-len 262144 \
--tool-call-parser qwen3_xml \
--enable-auto-tool-choice \
--reasoning-parser qwen3 \
--enable-prefix-caching \
--gpu-memory-utilization 0.90 \
--max-num-seqs 8 \
--max-num-batched-tokens 65536 \
--trust-remote-code \
> vllm-qwen3.6-27b-fp8-hermes.log 2>&1 &
说明:
--data-parallel-size 3表示 3 个数据并行副本,适合提升吞吐。- 每个副本仍需独立承载模型与 KV cache,长上下文并发时仍需压测。
- 对复杂工程规划、跨文件推理、长链路工具调用,优先使用 122B。
启动参数标注:
| 参数 | 当前值 | 类型 | 作用 | 调整建议 |
|---|---|---|---|---|
CUDA_VISIBLE_DEVICES |
1,2,3 |
GPU 资源 | 指定使用 3 张 A100 | 与其他实例同机时不能重复占卡 |
--served-model-name |
qwen3.6-27b-fp8 |
接口标识 | Hermes 请求中的 model 名称 |
必须与 Hermes 配置一致 |
--port |
13001 |
网络 | 轻量模型 API 端口 | 可由 Hermes 路由为 low-cost model |
--data-parallel-size |
3 |
数据并行 | 启动 3 个 DP 副本提升吞吐 | 理论并发按 DP rank 叠加 |
--tensor-parallel-size |
1 |
模型并行 | 每个 DP 副本单卡承载模型 | 27B FP8 在 A100 80GB 上适合单卡副本 |
--data-parallel-backend |
mp |
DP 后端 | 单机多进程 DP | 单机部署保留 |
--max-model-len |
262144 |
上下文 | 单请求最大上下文长度 | 轻量任务可单独降到 64K 提升稳定性 |
--max-num-seqs |
8 |
并发 | 每个 DP rank 的最大并发序列数 | DP=3 时理论上限为 24 |
--max-num-batched-tokens |
65536 |
调度 | 每步批处理 token 上限 | 高并发短任务可保留,长上下文需压测 |
| 工具相关参数 | qwen3_xml / auto tool |
工具调用 | 支持 Hermes tools | 已实测可返回 tool_calls |
本实例理论最大并发序列数为 8 x 3 = 24;Hermes 轻量任务推荐并发为 12,复杂工程任务不建议路由到该实例。
五、Hermes 接入配置
5.1 Custom Endpoint 配置
在 hermes setup 或 Hermes Dashboard 中选择 Custom Endpoint:
text
API base URL: http://<主力节点A>:8000/v1
API key: 使用 VLLM_API_KEY
Model: qwen3.5-122b-a10b-fp8
Context length: 262144
备用模型:
text
API base URL: http://<备用节点B>:8000/v1
API key: 使用 VLLM_API_KEY
Model: qwen3.5-122b-a10b-fp8
Context length: 262144
轻量模型:
text
API base URL: http://<轻量节点B>:13001/v1
API key: 使用 VLLM_API_KEY
Model: qwen3.6-27b-fp8
Context length: 262144
如果 Hermes 与 vLLM 部署在同一台服务器,可以使用:
text
API base URL: http://127.0.0.1:8000/v1
如果 Hermes 不在 vLLM 服务器本机,不能使用 127.0.0.1 或 localhost,应使用内网地址、服务地址或负载均衡地址。
5.2 推荐请求样例
基础聊天:
bash
curl http://<主力节点A>:8000/v1/chat/completions \
-H "Authorization: Bearer $VLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-122b-a10b-fp8",
"messages": [
{"role": "user", "content": "只回答 OK"}
],
"temperature": 0,
"max_tokens": 64
}'
工具调用:
bash
curl http://<主力节点A>:8000/v1/chat/completions \
-H "Authorization: Bearer $VLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-122b-a10b-fp8",
"messages": [
{"role": "user", "content": "请调用 read_file 工具读取 /repo/src/main.py,不要直接回答。"}
],
"tools": [
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取一个本地工程文件",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"}
},
"required": ["path"]
}
}
}
],
"tool_choice": "auto",
"temperature": 0,
"max_tokens": 256
}'
六、容量与性能建议
6.1 上下文容量
当前 vLLM /models 返回:
json
{
"max_model_len": 262144
}
实测约 100,822 字符工程上下文:
| 模型 | 结果 | 耗时 |
|---|---|---|
qwen3.5-122b-a10b-fp8 |
正确返回末尾校验码 | 约 2.69 秒 |
qwen3.6-27b-fp8 |
正确返回末尾校验码 | 约 19.22 秒 |
注意:
- 100K 字符烟测通过不等于 262K 极限压测通过。
- 262K 上下文建议单独做压测,覆盖单请求、2 并发、4 并发、工具调用循环和流式输出。
- Hermes 做复杂工程任务时,应优先使用检索、文件选择和分段摘要,避免每次把全仓库塞入上下文。
按模型结构、A100 80G 资源和当前烟测结果,建议将 262K 视为"服务端配置上限",不要直接视为生产承诺。上线前建议按以下口径压测并设定限流:
| 实例 | 当前 max-model-len |
KV cache 压力判断 | 发布前压测重点 | 生产建议 |
|---|---|---|---|---|
| 122B 8 卡 TP=4/DP=2 | 262144 | 每个请求只落到 1 个 TP=4 副本,长上下文主要消耗该副本 KV cache | 128K、200K、262K 单请求和 2 并发 | 128K-200K 常规使用,262K 走专用队列 |
| 122B 4 卡 TP=4 | 262144 | 权重与 KV cache 共用 4 卡资源,长上下文余量弱于 8 卡 DP 资源池 | 128K、200K 单请求和 1 并发 | 128K 优先,262K 仅作备用专项验证 |
| 27B 3 卡 DP=3 | 262144 | DP=3 提升吞吐,但单请求不跨卡切分,每个副本独立承担 KV cache | 128K、200K 单请求和 3 并发 | 64K-128K 优先,长上下文复杂工程不优先路由 |
估算依据:
- 122B 8 卡方案是
TP=4, DP=2,不是单请求使用 8 卡合并显存;单个长上下文请求只占用其中一个 TP=4 副本。 - 27B 的
DP=3提升的是副本数和吞吐,不会让单个请求跨 3 张卡共享 KV cache。 - 当前启动命令没有显式设置
--kv-cache-dtype fp8,按 vLLM 默认auto口径应以实际加载日志和显存曲线为准。若后续启用 FP8 KV cache,KV 占用可能下降,但需要验证稳定性和效果。 - 超过 262K 需要修改 RoPE/YaRN 配置并提高
--max-model-len,不是只改显存即可上线。
6.2 并发建议
当前部署可以按三种口径理解并发:
| 口径 | 计算方式 | 当前结论 | 适用说明 |
|---|---|---|---|
| vLLM 配置理论上限 | 各实例 max-num-seqs 叠加,DP 按 rank 叠加 |
48 | 只表示调度器允许的最大序列数 |
| Hermes 交互合理预估 | 122B 8 卡 TP=4/DP=2 为 8,122B 4 卡为 4,27B 为 12 | 24 | 适合日常多人交互、工具调用和短中上下文 |
| 长上下文工程上限 | 122B 8 卡 TP=4/DP=2 为 2,122B 4 卡为 1,27B 为 3 | 6 | 适合 100K-262K 上下文、代码审查、仓库分析 |
按当前实例拆分:
| 实例 | 配置并发上限 | Hermes 推荐并发 | 长上下文推荐并发 |
|---|---|---|---|
122B 主力 <主力节点A>:8000 |
16 | 8 | 2 |
122B 备用 <备用节点B>:8000 |
8 | 4 | 1 |
27B 轻量 <轻量节点B>:13001 |
24 | 12 | 3 |
| 合计 | 48 | 24 | 6 |
按任务类型建议:
| 使用模式 | 推荐模型 | 并发建议 | 说明 |
|---|---|---|---|
| 复杂工程规划 | 122B 8 卡 TP=4/DP=2 优先 | 8 | 上下文中等、工具多、推理复杂 |
| 代码审查 / 多文件分析 | 122B 8 卡优先 | 6 | 关注 KV cache 与响应时间 |
| 普通问答 | 27B 或 122B | 30 | 短上下文可提高并发 |
| 批量摘要 / 分类 | 27B | 12 | 适合 DP=3 服务 |
| 262K 极限上下文 | 122B | 1 | 单独队列,避免拖垮交互任务 |
如果要对外承诺容量,建议不要把 48 个配置并发序列直接承诺为复杂工程智能体并发。更稳妥的口径是:
- 短上下文普通问答:可按 30 并发压测目标设计。
- Hermes 工程智能体交互:建议按 24 并发压测目标设计。
- 100K 以上长上下文工程任务:建议按 6 并发压测目标设计。
- 262K 极限上下文任务:建议按 1 并发专用队列设计。
6.3 参数调优优先级
当出现 OOM、延迟过高或排队明显时,按以下顺序调整:
- 降低
--max-num-seqs。 - 降低
--max-num-batched-tokens。 - 为长上下文任务单独部署一个低并发实例。
- 降低非主力模型的
--max-model-len。 - 将复杂工程任务固定路由到 122B 8 卡服务。
七、监控与运维
7.1 启动后检查
bash
ss -lntp | grep -E '8000|13001'
tail -f vllm-qwen3.5-122b-fp8-hermes.log
tail -f vllm-qwen3.6-27b-fp8-hermes.log
nvidia-smi
7.2 健康检查
bash
curl http://<主力节点A>:8000/v1/models \
-H "Authorization: Bearer $VLLM_API_KEY"
curl http://<备用节点B>:8000/v1/models \
-H "Authorization: Bearer $VLLM_API_KEY"
curl http://<轻量节点B>:13001/v1/models \
-H "Authorization: Bearer $VLLM_API_KEY"
7.3 日志关注项
| 现象 | 可能原因 | 处理 |
|---|---|---|
finish_reason=length |
max_tokens 太小或输出被截断 |
提高 max_tokens 并复核请求上下文长度 |
| 工具调用没有返回 | 未启用 tool parser 或请求未带 tools | 检查 --tool-call-parser qwen3_xml 与请求体 |
| 长上下文 OOM | KV cache 压力过高 | 降并发、降 batched tokens、拆长上下文实例 |
| 本机地址不通 | Hermes 与 vLLM 不在同机 | 改用内网地址或服务地址 |
八、验收计划
8.1 接口验收
| 项目 | 验收标准 |
|---|---|
/v1/models |
返回 200,模型名正确,max_model_len=262144 |
| 基础聊天 | 返回 200,message.content 非空 |
| 流式输出 | 返回 SSE chunk,客户端可增量渲染 |
| 工具调用 | 返回 finish_reason=tool_calls 和合法 JSON arguments |
| 工具闭环 | 传入 role=tool 后能生成最终回答 |
| 长上下文 | 100K 字符烟测通过,128K/200K/262K token 分级压测通过 |
8.2 Hermes 业务验收
| 场景 | 推荐模型 | 验收标准 |
|---|---|---|
| 读取工程文件并解释 | 122B | 正确发起文件工具调用,并基于工具结果回答 |
| 多步工程定位 | 122B | 能连续调用搜索、读取、测试工具 |
| 修复建议生成 | 122B | 输出可执行修改建议,不丢失约束 |
| 简单摘要 | 27B | 输出稳定,成本低,延迟可接受 |
| 长上下文代码审查 | 122B | 不截断关键文件,回答引用上下文准确 |
九、风险与应对
| 风险 | 影响 | 应对 |
|---|---|---|
| 262K 上下文并发过高 | GPU OOM 或请求排队 | 长上下文单独队列,降低 max-num-seqs |
| API Key 泄露 | 模型服务被滥用 | 轮换密钥、限制来源 IP、最小化端口暴露 |
| 122B 4 卡方案不稳定 | 长上下文和并发能力不足 | 生产主力使用 8 卡方案 |
| 27B 被误用为复杂工程主模型 | 工具规划质量和深度不足 | 通过路由策略限定 27B 任务类型 |
| 服务地址访问抖动 | Hermes 调用失败 | 优先使用内网地址或本机回环,配置重试和备用节点 |
十、推荐落地步骤
- 生产主力使用
<主力节点A>:8000或内网等价地址部署qwen3.5-122b-a10b-fp8。 - 将
<备用节点B>:8000配置为 122B 备用节点,必要时接入负载均衡。 - 将
<轻量节点B>:13001配置为轻量模型节点,用于摘要、分类和低复杂度任务。 - 对复杂工程任务固定路由到 122B;对批量轻任务路由到 27B。
- 完成 100K、200K、262K 三档上下文压测,并记录并发、显存、吞吐和失败率。
- 上线前轮换 API Key,配置端口白名单、日志留存、健康检查和重启策略。
十一、最终推荐
Hermes 智能体主模型推荐:
text
Base URL: http://<主力节点A>:8000/v1
Model: qwen3.5-122b-a10b-fp8
Context length: 262144
Hermes 轻量模型推荐:
text
Base URL: http://<轻量节点B>:13001/v1
Model: qwen3.6-27b-fp8
Context length: 262144
该部署组合可以支撑 Hermes 的复杂工程智能体调用;其中 122B 负责高复杂度、多工具、长上下文任务,27B 负责轻量、批量和备用场景。上线前重点补齐备用 122B 的工具闭环与长上下文复测、262K 极限上下文压测和并发压测。