系统管理员参考
性能测试
本页汇总 TensorFusion 已公开的 vGPU 性能损耗数据,并说明如何在你自己的硬件上重跑。数据来自 NexusGPU/benchmark 仓库,测试时间是 2025 年 7 月。
先看这几点
- 这些结果测的是 API 转发路径(客户端库加 worker):每次 GPU 调用都要跨进程或跨网络。远程 vGPU 和
hard隔离走的是这条路径。 - 默认的
soft隔离模式是在业务进程内运行 limiter,不经过 worker,目前还没有公开的测试结果。下面的数字不适用于它。 - 公开结果里没有记录 GPU 型号、驱动版本和机型。请把它们当作同一台机器上各模式之间的相对损耗,不要当作绝对性能。
- “Same AZ”和“Cross AZ”两列是在单节点上人为加延迟得到的,不是两台机器之间的实测。
如果要用数据支撑采购或容量决策,请在自己的集群上跑一遍。
测了什么
每个测试用同一个负载在最多 5 种环境下运行,把总耗时和原生运行做比较。“损耗”是相对原生多出的时间,越低越好;负值表示比原生还快。
| 环境 | 含义 |
|---|---|
| Native | 应用直接调用 GPU 驱动,不经过 TensorFusion。 |
| NGPU | 客户端和 worker 都在业务进程内运行。 |
| Local | 客户端和 worker 是同一节点上的两个进程。 |
| Same AZ | 远程 worker,附加 0.3 ms 网络延迟。 |
| Cross AZ | 远程 worker,附加 1 ms 网络延迟。 |
TorchBench 推理(2025-07-06)
模型来自 TorchBench,在 CUDA 上以 eval 模式运行。时间是指定迭代次数的总秒数。
| 模型 | Native | NGPU | 损耗 | Local | 损耗 | Same AZ | 损耗 | Cross AZ | 损耗 |
|---|---|---|---|---|---|---|---|---|---|
| basic_gnn_edgecnn | 41.15 s | 40.95 s | -0.49% | 43.48 s | 5.66% | 46.07 s | 11.96% | 54.97 s | 33.58% |
| BERT_pytorch | 249.02 s | 248.84 s | -0.07% | 251.26 s | 0.90% | 253.71 s | 1.88% | 261.62 s | 5.06% |
| basic_gnn_gcn | 15.05 s | 15.24 s | 1.26% | 19.63 s | 30.43% | 29.70 s | 97.34% | 64.39 s | 327.84% |
| basic_gnn_gin | 9.47 s | 9.53 s | 0.63% | 9.78 s | 3.27% | 12.66 s | 33.69% | 21.83 s | 130.52% |
| hf_Albert | 24.73 s | 24.00 s | -2.95% | 29.19 s | 18.03% | 39.19 s | 58.47% | 73.00 s | 195.19% |
| hf_Bart | 39.88 s | 38.68 s | -3.01% | 54.96 s | 37.81% | 94.17 s | 136.13% | 211.68 s | 430.79% |
| hf_Bert | 24.15 s | 24.35 s | 0.83% | 29.55 s | 22.36% | 42.00 s | 73.91% | 75.86 s | 214.12% |
| llama | 39.91 s | 41.20 s | 3.23% | 42.90 s | 7.49% | 45.80 s | 14.76% | 52.55 s | 31.67% |
| hf_distil_whisper | 170.61 s | 170.87 s | 0.15% | 172.16 s | 0.91% | 178.75 s | 4.77% | 189.45 s | 11.04% |
| hf_clip | 191.60 s | 191.70 s | 0.05% | 194.52 s | 1.52% | 197.51 s | 3.08% | 208.90 s | 9.03% |
| hf_Whisper | 58.98 s | 59.18 s | 0.34% | 63.50 s | 7.66% | 66.66 s | 13.02% | 72.63 s | 23.14% |
| 平均损耗 | 0.00% | 12.37% | 40.82% | 128.36% |
从表里能看出:
- 进程内模式(NGPU)在所有模型上与原生的差距都在 3% 左右以内。
- 调用一旦跨进程,损耗因模型而异,差别很大。
hf_Bart、basic_gnn_gcn、hf_Bert在本地损耗 20%–40%,BERT_pytorch、hf_clip、hf_distil_whisper不到 2%。这符合“每次 GPU 调用有固定开销”的规律:由大量小调用组成的短任务损耗最大。 - 网络延迟会拉大差距。延迟 1 ms 时,前一组的耗时是原生的 3–5 倍,后一组仍在 11% 左右以内。
MLPerf Inference(2025-07-04)
bert-99,PyTorch 参考实现,edge 类别,SingleStream 场景。
| 环境 | 耗时 | 损耗 |
|---|---|---|
| Native | 27.008 s | - |
| Local | 29.930 s | 10.82% |
| Same AZ | 33.341 s | 23.45% |
| Cross AZ | 41.597 s | 54.02% |
自己跑一遍
前置条件:已安装 TensorFusion 的 Kubernetes 集群、装好 NVIDIA 驱动的 GPU 节点、Helm 3。
-
克隆 benchmark 仓库并安装其中的 chart。它会创建一个用于手动运行的 Deployment 和一个定时运行的 CronJob。
git clone https://github.com/NexusGPU/benchmark.git cd benchmark helm install tf-bench ./helm/torchbench -f custom-values.yaml在
custom-values.yaml里按你的集群设置镜像、节点选择器和 TensorFusion 的 Pod 注解。chart 的默认值指向作者的测试环境。 -
在 benchmark Pod 里运行某个 TorchBench 模型:
cd benchmark python3 test.py -k "test_${model_name}_eval_cuda" -t ${eval_times} -
运行 MLPerf 测试:
mlcr run-mlperf,inference,_full,_r5.0-dev \ --model=bert-99 \ --implementation=reference \ --framework=pytorch \ --category=edge \ --scenario=SingleStream \ --execution_mode=valid \ --device=cuda \ --quiet --rerun -
原生环境(不加 TensorFusion 注解)和每种要对比的 vGPU 环境各跑一遍,再计算
(vgpu_time - native_time) / native_time。
要在单节点上复现两列延迟数据,运行前给 loopback 网卡加延迟,跑完后删除:
tc qdisc add dev lo root netem delay 0.3ms # “Same AZ”;“Cross AZ” 用 1ms
tc qdisc del dev lo root
TensorFusion 文档