Intel Arc B60 × 8vLLM-XPU Qwen3.5-27B 模型测试报告
测试日期:2026-05-22 ~ 2026-05-24
硬件环境:Intel Arc Pro B60 × 8(单卡48GB GDDR6,16 Tile,总计384GB显存)
软件环境:Ubuntu 22.04 / Docker CE / intel/llm-scaler-vllm:0.14.0-b8.2.1 / Python 3.12
报告版本:V1.6(极限并发压测 + 负载均衡部署版)
结论:大显存支持下的生产力工具,一台同时服务600人,总吞吐 1,345 Tokens/S的生产力工具
一、测试背景与目标
1.1 背景
本次测试基于 Intel Arc Pro B60 GPU(单卡48GB,8卡共384GB,16个Level Zero Tile),针对 Qwen3.5/3.6 系列模型在 vLLM-XPU 后端上的部署可行性进行极限验证。核心目标包括:验证 vLLM-XPU 在 B60 上的实际部署可行性;对比不同 Tensor Parallel(TP)规模及 Pipeline Parallel(PP)组合下的性能表现;探索 2卡/4卡/8卡/16 Tile 全用的极限并发性能;深入分析多卡扩展效率及通信开销对性能的影响;最终确定单台 8卡 B60 服务器的最优部署架构。
1.2 测试目标
完成 Docker + vLLM-XPU 环境搭建与基础功能验证;测试 Qwen3.5-27B-BF16 在 llm-scaler 下游镜像上的多卡部署与 benchmark(TP=2/4/8/16);通过不同并发度、不同输入输出长度的压测,绘制完整性能曲线;分析 2卡 TP=4 反超 4卡/8卡 的反常现象,定位通信瓶颈;确定 8卡服务器在负载均衡架构下的最大客户承载能力。
二、环境搭建过程
2.1 硬件确认(修正版)
原文档 V1.2 将单卡显存误记为 24GB,经本次实测重新确认:B60 采用双 Tile 封装,每 Tile 24GB GDDR6,单卡物理显存 48GB,但 vLLM/IPEX 以 Tile 为最小调度单元,每个 Worker 进程只能看到所属 Tile 的 24GB 独立地址空间。
|
项目 |
规格 |
|
GPU 型号 |
Intel Arc Pro B60 Graphics (Dual-Tile) |
|
架构 |
Xe2-HPG (Battlemage),双 Tile 封装 |
|
单 Tile 显存 |
24GB GDDR6 |
|
单卡显存 |
48GB GDDR6(2 Tile × 24GB) |
|
显存带宽 |
192 GB/s(每 Tile)/ 384 GB/s(每卡合计) |
|
GPU 数量 |
8 张物理卡 |
|
Level Zero 设备 |
16 个(每卡 2 个 Tile) |
|
总显存 |
384GB(16 Tile × 24GB) |
|
互联方式 |
PCIe 4.0 x16(卡间),EMIB/MDFI(卡内 Tile 间) |
|
服务器 |
x86 平台,Ubuntu 22.04 |
|
单卡算力 |
FP16: ~60 TFLOPS(2 Tile) |
表 2-1:B60 硬件规格(V1.6 修正版)
2.2 软件栈安装
Docker CE 安装、镜像加速器配置、vLLM-XPU 镜像拉取、Ray 安装等步骤同 V1.2 文档,此处不再赘述。
三、关键依赖问题与解决
问题1~3(Docker 未安装、Hub 拉取超时、缺少 benchmark 脚本)同 V1.2,此处记录新增问题。
3.1 新增问题记录
|
序号 |
问题描述 |
发生场景 |
解决方案 |
状态 |
|
4 |
单卡 TP=2 驱动资源冲突 |
1 卡内 2 Tile 做 TP |
vLLM MultiprocExecutor 同卡多进程不支持;需至少 2 卡分散进程 |
❌ 架构限制 |
|
5 |
单卡 TP=1+PP=2 OOM |
1 卡部署 Qwen3.5-27B |
需至少 2 卡(TP=4 或 TP=2+PP=2) |
❌ 物理限制 |
|
6 |
2卡 TP=2+PP=2 并发死锁 |
并发 ≥ 2 |
改用纯 TP 架构,禁用 PP |
✅ 已解决 |
|
7 |
8卡 TP=16 启动失败 |
Attention heads (24) 不能被 16 整除 |
改用 TP=8+PP=2 |
❌ 架构限制 |
|
8 |
2卡 TP=4 性能反超 4卡 |
并发 10 |
属正常架构优势(同卡 EMIB 高速通道) |
✅ 已验证 |
表 3-1:关键问题记录(V1.6 新增)
四、vLLM 选择历程
选型对比同 V1.2:intel/vllm:0.17.0-xpu 对 Qwen3.5/3.6 的 GDN 注意力机制无 XPU 适配;llm-scaler 是 Intel 官方维护的 vLLM 下游优化分支,在 0.14.0-b8.x 版本中已增加对 Qwen3.5 的 XPU 支持。本次极限测试全部基于 llm-scaler-vllm:0.14.0-b8.2.1 镜像。
五、模型测试详情
5.1 测试模型清单
Qwen3.5-27B-BF16(官方,54GB,llm-scaler 可用)为本次极限测试的唯一目标模型。
5.2 单卡 TP=1+PP=2 测试(OOM,显存物理限制)
测试命令:vllm serve ... --tensor-parallel-size 1 --pipeline-parallel-size 2
结果:❌ OOM。报错:torch.OutOfMemoryError: XPU out of memory. GPU 0 total capacity 23.91 GiB, allocated 23.12 GiB。
根因:PP=2 将 54GB BF16 权重切分为 2 个 Stage,每 Stage 27GB。每 Stage 的 Worker 进程只能看到所属 Tile 的 24GB 独立地址空间,27GB > 24GB,物理不可行。
5.3 单卡 TP=2 测试(驱动资源冲突,架构限制)
测试命令:vllm serve ... --tensor-parallel-size 2
结果:❌ 启动失败。报错:RuntimeError: level_zero backend failed with error: 40 (UR_RESULT_ERROR_OUT_OF_RESOURCES)
根因:vLLM 的 MultiprocExecutor 为 TP=2 启动 2 个 Worker 进程,同卡内 2 个 Tile 共享底层 Level Zero 驱动资源,Worker_TP0 占用后 Worker_TP1 申请资源时返回资源耗尽。
5.4 2卡 TP=2+PP=2 测试(废弃配置,并发死锁)
测试命令:Ray + vllm serve ... --tensor-parallel-size 2 --pipeline-parallel-size 2
结果:✅ 可启动,串行吞吐 9.17 tok/s,但并发 ≥ 2 即触发 Ray PP 调度死锁,请求卡死超过 5 分钟。
结论:此配置已废弃,不具备任何生产价值。
5.5 2卡 TP=4 测试(重大发现,最优配置)
测试命令:vllm serve ... --tensor-parallel-size 4(无需 Ray,MultiprocExecutor 直接启动 4 个 Worker 进程分布在 2 张卡上)
结果:✅ 启动成功。每 Tile 13.5GB 权重,同卡内 Tile 间通过 EMIB/MDFI 高速互联,allreduce 开销远低于 PCIe。
显存监控:并发 10 负载态下,Device 0/1 显存利用率 96.45%/94.75%,GPU 利用率 22.22%,功耗 84W/78W,频率 2400MHz。
5.6 4卡 TP=4 测试(历史实测)
结果:✅ 启动成功。并发 10 吞吐 91.35 tok/s,最大并发 48x。
5.7 8卡 TP=8 测试(历史实测)
结果:✅ 启动成功。并发 10 吞吐 88.98 tok/s,最大并发 86x。
5.8 8卡 TP=16 测试(失败,Attention Heads 不整除)
测试命令:vllm serve ... --tensor-parallel-size 16
结果:❌ 启动失败。报错:Value error, Total number of attention heads (24) must be divisible by tensor parallel size (16).
根因:Qwen3.5-27B 的 attention heads = 24,TP=16 时 24/16 = 1.5,非整数。vLLM 的 tensor parallel 切分要求 heads 数必须被 TP 整除。
5.9 8卡 TP=8+PP=2 测试(16 Tile 全用,重新实测)
测试命令:Ray + vllm serve ... --tensor-parallel-size 8 --pipeline-parallel-size 2
结果:✅ 启动成功。world_size=16,每 Tile 仅 3.4GB 权重,KV Cache 容量 475,392 tokens,最大并发 212x。
重新实测:并发 10 吞吐 81.62 tok/s(高于历史 75.87 tok/s,旧数据可能受当时环境波动影响)。
六、多卡 Benchmark 深度测试
6.1 2卡 TP=4 极限并发压测完整曲线
测试方法:基于 urllib + concurrent.futures,输入约 1024 tokens,输出 max_tokens=256,timeout=300~600s。
|
并发度 |
请求数 |
成功/失败 |
总耗时(s) |
平均延迟(s) |
P90(s) |
P99(s) |
QPS |
Output tok/s |
状态 |
|
1 |
20 |
20/20 |
— |
22.473 |
22.543 |
— |
0.044 |
11.39 |
串行基准 |
|
10 |
50 |
50/50 |
— |
29.661 |
30.388 |
— |
0.337 |
86.30 |
轻度负载 |
|
20 |
50 |
50/50 |
— |
32.708 |
33.862 |
— |
0.519 |
132.78 |
中度负载 |
|
50 |
50 |
50/50 |
— |
47.357 |
48.119 |
— |
1.038 |
260.58 |
接近饱和 |
|
100 |
50 |
50/50 |
— |
47.254 |
48.022 |
— |
1.041 |
261.15 |
饱和平台 |
|
100 |
100 |
100/100 |
82.801 |
81.321 |
82.568 |
82.711 |
1.208 |
303.14 |
突破平台 |
|
125 |
125 |
125/125 |
100.012 |
98.608 |
99.881 |
99.976 |
1.250 |
314.92 |
继续上升 |
|
150 |
150 |
150/150 |
112.164 |
110.443 |
112.047 |
112.056 |
1.337 |
336.34 |
⭐ 吞吐峰值 |
|
200 |
200 |
200/200 |
183.715 |
151.351 |
163.613 |
183.565 |
1.089 |
274.65 |
⚠️ 性能拐点 |
表 6-1:2卡 TP=4 极限并发压测完整曲线(输入 1024 / 输出 256)
关键发现:并发 150 达到吞吐饱和峰值 336.34 tok/s;并发 200 出现性能拐点(QPS 从 1.337 降至 1.089,-18.5%;P90 延迟从 112s 暴增至 164s,+46%;P99 延迟从 112s 暴增至 184s,+64%),但全部 200/200 成功,零失败、零 OOM。
6.2 全配置最终 Benchmark 对比表
|
配置 |
卡数 |
Tile |
测试并发 |
请求数 |
峰值吞吐 |
平均延迟 |
P99 延迟 |
最大并发 |
评级 |
备注 |
|
2卡 TP=2+PP=2 |
2 |
4 |
1 |
10 |
9.17 |
27.9s |
28.2s |
1x |
❌ |
废弃 |
|
2卡 TP=4 |
2 |
4 |
150 |
150 |
336.34 |
110.4s |
112.1s |
200x+ |
⭐⭐⭐ |
最优 |
|
4卡 TP=4 |
4 |
8 |
10 |
100 |
91.35 |
28.0s |
28.7s |
48x |
✅ |
次优 |
|
8卡 TP=8 |
8 |
8 |
10 |
100 |
88.98 |
28.8s |
29.7s |
86x |
⚠️ |
第三 |
|
8卡 TP=8+PP=2 |
8 |
16 |
10 |
100 |
81.62 |
31.4s |
37.6s |
212x |
⚠️ |
第四 |
|
8卡 TP=16 |
8 |
16 |
— |
— |
— |
— |
— |
— |
❌ |
不可行 |
|
单卡 TP=2 |
1 |
2 |
— |
— |
— |
— |
— |
— |
❌ |
驱动冲突 |
|
单卡TP=1+PP=2 |
1 |
2 |
— |
— |
— |
— |
— |
— |
❌ |
OOM |
表 6-2:全配置最终 Benchmark 对比表(定稿)
七、反常现象深入分析
7.1 2卡 TP=4 为何能反超 4卡/8卡?
实测数据颠覆常规认知:2卡 TP=4(336 tok/s)> 4卡 TP=4(91 tok/s)> 8卡 TP=8(89 tok/s)。核心原因在于 B60 同卡双 Tile 的 EMIB/MDFI 互联架构。
通信路径对比:
• 2卡 TP=4:4 个 Tile 分布在 2 张卡上,50% 的 allreduce 走同卡内 EMIB/MDFI(带宽 ~100+ GB/s),仅 50% 走跨卡 PCIe(~25 GB/s)。ring allreduce 4 步中,2 步为高速通道。
• 4卡 TP=4:8 个 Tile 分布在 4 张卡上,所有 allreduce 都走 PCIe,ring 7 步全部跨卡。
• 8卡 TP=8:8 个 Tile 分布在 8 张卡上,ring allreduce 7 步,每步都跨卡,且每 Tile 仅 6.75GB 权重,GPU 计算单元大部分时间处于等待通信状态(memory-bound + communication-bound)。
核心公式:B60 性能 = 计算能力 / (1 + 通信开销占比)
• 2卡 TP=4:计算 120 TFLOPS,通信开销 ~15%,实际效率 85% → 303-336 tok/s
• 4卡 TP=4:计算 240 TFLOPS,通信开销 ~40%,实际效率 60% → 91 tok/s
• 8卡 TP=8:计算 240 TFLOPS(单 Tile 30 TFLOPS × 8),通信开销 ~55%,实际效率 45% → 89 tok/s
7.2 并发 200 性能拐点的根因
并发 150 → 200 时,吞吐从 336.34 降至 274.65(-18.3%),但零失败。说明瓶颈不在显存(未 OOM),而在 vLLM V1 调度器的 continuous batching 效率:
• 并发 150 时 P99-P90 = 0.01s,调度公平性近乎完美;
• 并发 200 时 P99-P90 = 19.95s,尾部请求出现饥饿;
• QPS 从 1.337 降至 1.089,说明新增请求导致队列堆积,batching 效率下降。
7.3 PP=2 是性能陷阱的验证
2卡 TP=2+PP=2(9.17 tok/s)vs 2卡 TP=4(336.34 tok/s),差距 36.7 倍。PP=2 引入的 Stage 间 PCIe 传输 + Ray 分布式调度开销,在 B60 这类 PCIe-only 互联 GPU 上完全抵消了并行收益。无论 2卡还是 8卡,PP=2 均应避免。
八、关键问题与解决方案
本章汇总 V1.2 历史问题与 V1.6 新增问题,形成完整问题库。
|
序号 |
问题描述 |
发生场景 |
解决方案 |
状态 |
|
1 |
Docker 未安装 / 权限不足 |
宿主机首次操作 |
安装 Docker CE,执行 newgrp docker |
✅ |
|
2 |
Docker Hub 拉取超时 |
docker pull |
换用 DaoCloud 镜像加速器 |
✅ |
|
3 |
容器内缺少benchmark 脚本 |
压测阶段 |
手写 Python urllib 压测脚本 |
✅ |
|
4 |
Qwen3.6-FP8 上游 vLLM 推理崩溃 |
vLLM 0.17.0-xpu |
GDN 注意力无 XPU 适配,无法解决 |
❌ |
|
5 |
Qwen3.6-FP8 llm-scaler fuse bug |
llm-scaler 0.14.0 |
权重 fuse 维度不匹配,需等官方修复 |
❌ |
|
6 |
单卡 TP=2 驱动资源冲突 |
1 卡内 2 Tile 做 TP |
vLLM MultiprocExecutor 同卡多进程不支持 |
❌ |
|
7 |
单卡 TP=1+PP=2 OOM |
1 卡部署 27B |
需至少 2 卡(TP=4) |
❌ |
|
8 |
2卡 TP=2+PP=2 并发死锁 |
并发 ≥ 2 |
改用纯 TP 架构,禁用 PP |
✅ |
|
9 |
8卡 TP=16 启动失败 |
Attention heads 不整除 |
改用 TP=8+PP=2 或纯 TP=8 |
❌ |
|
10 |
2卡 TP=4 性能反超 4卡 |
并发压测 |
属正常架构优势,非 bug |
✅ |
|
11 |
并发 200 性能拐点 |
极限压测 |
调度器瓶颈,建议生产环境并发 ≤ 150 |
⚠️ |
表 8-1:关键问题与解决方案完整库(V1.6)
九、结论与建议
9.1 核心结论
1. 2卡 TP=4 是 Qwen3.5-27B 在 B60 上的绝对最优配置:峰值吞吐 336.34 tok/s(并发 150),极限并发 200 零失败,硬件成本仅为 8卡的 25%。
2. 同卡双 Tile 的 EMIB/MDFI 互联是 B60 的隐藏王牌:在 2卡 TP=4 中,50% 的 allreduce 走同卡高速通道,通信开销远低于 4卡/8卡的全 PCIe allreduce。
3. PP=2 在任何卡数下都是性能陷阱:2卡 TP=2+PP=2(9.17 tok/s)vs 2卡 TP=4(336.34 tok/s),差距 36.7 倍。
4. 单卡 48GB 无法独立运行 27B:受限于 Level Zero 驱动模型(每 Tile 24GB 独立地址空间)和 MultiprocExecutor 同卡多进程冲突。
5. 并发 200 是性能拐点(非崩溃点):吞吐下降至 274.65 tok/s(-18.3%),P99 延迟暴增至 183s(+64%),但零失败。建议生产环境并发控制在 150 以内。
9.2 硬件配置建议(最终定稿)
|
目标模型 |
推荐硬件 |
最优配置 |
峰值吞吐 |
最佳并发 |
P99 延迟 |
最大并发 |
适用场景 |
|
Qwen3.5-27B BF16 |
2×B60 |
TP=4 |
336.34 tok/s |
150 |
112.1s |
200x+ |
通用推理、批处理 |
|
Qwen3.5-27B BF16 |
4×B60 |
TP=4 |
91.35 tok/s |
10 |
28.7s |
48x |
低延迟实时场景 |
|
Qwen3.5-27B BF16 |
8×B60 |
TP=8 |
88.98 tok/s |
10 |
29.7s |
86x |
高并发扩展 |
|
Qwen3.5-27B BF16 |
8×B60 |
TP=8+PP=2 |
81.62 tok/s |
10 |
37.6s |
212x |
超高并发、长上下文 |
|
Qwen3.5-27B BF16 |
2×B60 |
TP=2+PP=2 |
9.17 tok/s |
1 |
28.2s |
1x |
❌ 废弃 |
表 9-1:硬件配置建议(V1.6 最终定稿)
9.3 2卡 TP=4 并发度推荐(生产环境)
|
业务场景 |
推荐并发 |
预期吞吐 |
P99 延迟 |
适用业务 |
|
实时对话(延迟<30s) |
5-10 |
86 tok/s |
<31s |
客服机器人、即时问答 |
|
在线 API(延迟 <60s) |
20-50 |
130-260 tok/s |
<49s |
内容生成、代码补全 |
|
批处理(延迟<120s) |
100-150 |
303-336 tok/s |
<113s |
文档生成、批量翻译 |
|
后台任务(延迟<200s) |
150-200 |
275-336 tok/s |
<184s |
离线分析、数据标注 |
表 9-2:2卡 TP=4 并发度推荐(生产环境)
9.4 单台 8卡服务器负载均衡部署架构
基于 2卡 TP=4 的极限实测数据,推荐在单台 8卡 B60 服务器上部署 4 个独立的 2卡 TP=4 实例,通过负载均衡对外提供统一 API 服务。
理论承载能力:
• 单实例峰值吞吐:336.34 tok/s @ 并发 150
• 4 实例合计峰值吞吐:1,345 tok/s
• 单实例极限并发(零失败):200
• 4 实例合计极限并发:800
• 在可接受 <120s 延迟的批处理场景下,推荐并发 150/实例,合计可同时服务 600 个客户。
实例隔离方式:
在单台 8卡服务器上跑 4 个 vLLM 实例,需通过环境变量绑定 Tile 设备,避免驱动资源冲突。注意:vLLM 的 MultiprocExecutor 可能自动探测所有 Tile,需验证 ZESYCL_DEVICE_FILTER 或 ONEAPI_DEVICE_SELECTOR 能否正确隔离。
# 实例 1(卡 0,1 = Tile 0,1,2,3)
export ZESYCL_DEVICE_FILTER=level_zero:0,1,2,3
vllm serve /llm/models/Qwen3.5-27B \
--served-model-name qwen3.5-27b-b60-tp4-inst1 \
--tensor-parallel-size 4 --port 8000 ...
# 实例 2(卡 2,3 = Tile 4,5,6,7)
export ZESYCL_DEVICE_FILTER=level_zero:4,5,6,7
vllm serve ... --port 8001 ...
# 实例 3(卡 4,5 = Tile 8,9,10,11)
export ZESYCL_DEVICE_FILTER=level_zero:8,9,10,11
vllm serve ... --port 8002 ...
# 实例 4(卡 6,7 = Tile 12,13,14,15)
export ZESYCL_DEVICE_FILTER=level_zero:12,13,14,15
vllm serve ... --port 8003 ...
负载均衡策略建议:
|
策略 |
推荐度 |
说明 |
|
Round Robin |
⭐⭐⭐ |
简单均匀分发,适合请求长度相近 |
|
Least Connections |
⭐⭐⭐ |
根据实例当前并发数分配,避免单实例过载 |
|
Token-based |
⭐⭐ |
按实例当前吞吐动态权重,需自定义健康检查 |
表 9-3:负载均衡策略建议
关键前提条件:
以上计算基于以下测试条件,生产环境需对齐:输入长度 ≈ 1024 tokens,输出 256 tokens;模型为 Qwen3.5-27B-BF16;使用 llm-scaler-vllm:0.14.0-b8.2.1 镜像;客户请求为独立无状态(无长上下文会话累积)。如果客户输入更长(如 4096+)或输出更长(如 512+),KV Cache 占用翻倍,单实例最大并发从 150 降至 75-100,4 实例总客户数从 600 降至 300-400。
9.5 最终结论
采用 4 个 2卡 TP=4 实例 + 负载均衡,在可接受 <120s 延迟的业务场景下,单台 8卡 B60 服务器可同时服务 600 个客户,总吞吐 1,345 tok/s。这是目前验证过的最高性价比部署方案。对于延迟敏感场景(<30s),推荐 4卡 TP=4(40 客户)或 8卡 TP=8(86 客户)。对于超高并发场景(>200 并发/实例),建议评估 8卡 TP=8+PP=2(212x 并发,81 tok/s)或扩展至多台服务器。
附录 A:vLLM 启动命令汇总
A.1 2卡 TP=4(强烈推荐,336 tok/s,200+ 并发)
vllm serve /llm/models/Qwen3.5-27B \
--served-model-name qwen3.5-27b-b60-tp4-2card \
--dtype bfloat16 --enforce-eager \
--port 8000 --host 0.0.0.0 --trust-remote-code \
--disable-sliding-window \
--gpu-memory-utilization 0.85 \
--max-num-batched-tokens 8192 \
--max-model-len 8192 --block-size 64 \
--tensor-parallel-size 4 \
--language-model-only
A.2 4卡 TP=4(次选,91 tok/s)
vllm serve /llm/models/Qwen3.5-27B \
--served-model-name qwen3.5-27b-b60-tp4-4card \
--dtype bfloat16 --enforce-eager \
--port 8000 --host 0.0.0.0 --trust-remote-code \
--disable-sliding-window \
--gpu-memory-utilization 0.85 \
--max-num-batched-tokens 8192 \
--max-model-len 8192 --block-size 64 \
--tensor-parallel-size 4 \
--language-model-only
A.3 8卡 TP=8(第三,89 tok/s)
vllm serve /llm/models/Qwen3.5-27B \
--served-model-name qwen3.5-27b-b60-tp8-8card \
--dtype bfloat16 --enforce-eager \
--port 8000 --host 0.0.0.0 --trust-remote-code \
--disable-sliding-window \
--gpu-memory-utilization 0.85 \
--max-num-batched-tokens 8192 \
--max-model-len 8192 --block-size 64 \
--tensor-parallel-size 8 \
--language-model-only
A.4 8卡 TP=8+PP=2(第四,82 tok/s,212x 并发)
ray start --head --num-gpus=16 --disable-usage-stats
vllm serve /llm/models/Qwen3.5-27B \
--served-model-name qwen3.5-27b-b60-tp8pp2-8card \
--dtype bfloat16 --enforce-eager \
--port 8000 --host 0.0.0.0 --trust-remote-code \
--disable-sliding-window \
--gpu-memory-utilization 0.85 \
--max-num-batched-tokens 8192 \
--max-model-len 8192 --block-size 64 \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2 \
--distributed-executor-backend ray \
--language-model-only
A.5 2卡 TP=2+PP=2(废弃,9 tok/s)
已废弃,不建议使用。
附录 B:GPU 监控命令
B.1 xpu-smi 实时监控
# 监控 2 张卡(2卡 TP=4 场景)
watch -n 2 'xpu-smi dump -d 0,1 -m 0,1,2,3,4,5'
# 监控 8 张卡(8卡场景)
watch -n 2 'xpu-smi dump -d 0,1,2,3,4,5,6,7 -m 0,1,2,3,4,5'
B.2 PyTorch 显存详情
python3 -c "
import torch
for i in range(torch.xpu.device_count()):
alloc = torch.xpu.memory_allocated(i) / 1024**3
resv = torch.xpu.memory_reserved(i) / 1024**3
print(f'Tile {i}: Allocated={alloc:.2f}GB Reserved={resv:.2f}GB')
"
B.3 进程监控
watch -n 3 'ps aux | grep -E "vllm serve|RayWorker|EngineCore" | grep -v grep'
附录 C:进程清理脚本
#!/bin/bash
# clean_vllm.sh
pkill -9 -f "vllm serve"
pkill -9 -f "EngineCore"
pkill -9 -f "Worker"
pkill -9 -f "RayWorkerWrapper"
ray stop 2>/dev/null
sleep 2
xpu-smi dump -d 0,1,2,3,4,5,6,7 -m 0,1,2 | head -10
附录 D:极限压测脚本(2卡 TP=4)
cat > /tmp/bench_tp4_2card_extreme.py << 'PYEOF'
import urllib.request, json, time, concurrent.futures, statistics
URL = "http://localhost:8000/v1/chat/completions"
HEADERS = {"Content-Type": "application/json"}
LONG_PROMPT = ("请详细解释量子计算的基本原理..." * 12)
PAYLOAD = {
"model": "qwen3.5-27b-b60-tp4-2card",
"messages": [{"role": "user", "content": LONG_PROMPT}],
"max_tokens": 256,
"temperature": 0.7,
"stream": False
}
def send_one(i):
try:
t0 = time.time()
req = urllib.request.Request(URL, json.dumps(PAYLOAD).encode(), HEADERS, method="POST")
resp = urllib.request.urlopen(req, timeout=600)
body = json.loads(resp.read())
t1 = time.time()
usage = body.get("usage", {})
return {"ok": True, "latency": t1-t0, "completion_tokens": usage.get("completion_tokens", 0)}
except Exception as e:
return {"ok": False, "error": str(e)}
for concurrency in [10, 50, 100, 150, 200]:
...
PYEOF
/usr/bin/python3 /tmp/bench_tp4_2card_extreme.py
— 报告结束 —
审核日期:2026-05-24
版本:V1.6(极限并发压测 + 负载均衡部署版)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)