LogoTensorFusion Docs
LogoTensorFusion Docs
Homepage

Getting Started

OverviewKubernetes InstallVM/Server Install(K3S)Helm Quick InstallHost/GuestVM InstallTensorFusion Architecture

Application Operations

Create WorkloadAnnotation Usage ScenariosConfigure AutoScalingMigrate Existing WorkloadBest Practices

Customize AI Infra

Production-Grade DeploymentConfig QoS and BillingBring Your Own CloudManaging License

Maintenance & Optimization

Upgrade ComponentsSetup AlertsGPU Live MigrationPreload ModelOptimize GPU Efficiency

Troubleshooting

HandbookTracing/ProfilingQuery Metrics & Logs

Reference

Helm Install Values
Kubernetes EventsTensorFusion Metrics ReferenceBenchmark TestingCommand Line ReferenceGPU/Driver/OS Support MatrixTensorFusion Security Whitepaper

Comparison

Compare with NVIDIA vGPUCompare with MIG/MPSCompare with NVIDIA Run:aiCompare with HAMi
For System Admins

Benchmark Testing

This page summarizes the vGPU overhead results that TensorFusion has published and tells you how to rerun them on your own hardware. The numbers come from the NexusGPU/benchmark repository and date from July 2025.

Read this first

  • The results measure the API-remoting path (client library plus worker), where every GPU call crosses a process or network boundary. This is the path used by remote vGPU and by hard isolation.
  • There are no published results yet for soft isolation, the default mode, in which a limiter runs inside the application process and no worker is involved. Do not apply the numbers below to it.
  • The published results do not record the GPU model, driver version or instance type. Treat them as relative overhead between modes on one machine, not as absolute performance.
  • The "Same AZ" and "Cross AZ" columns were produced on a single node with artificial latency, not on two machines.

If you need numbers for a purchasing or capacity decision, run the benchmark on your own cluster.

What was measured

Each test runs the same workload in up to five setups and compares wall-clock time with the native run. "Loss" is the extra time relative to native; lower is better and a negative value means the run was faster than native.

SetupMeaning
NativeThe application talks to the GPU driver directly, without TensorFusion.
NGPUClient and worker run inside the application process.
LocalClient and worker are separate processes on the same node.
Same AZRemote worker, with 0.3 ms of added network latency.
Cross AZRemote worker, with 1 ms of added network latency.

TorchBench inference (2025-07-06)

Models from TorchBench, eval mode on CUDA. Time is total seconds for the configured number of iterations.

ModelNativeNGPULossLocalLossSame AZLossCross AZLoss
basic_gnn_edgecnn41.15 s40.95 s-0.49%43.48 s5.66%46.07 s11.96%54.97 s33.58%
BERT_pytorch249.02 s248.84 s-0.07%251.26 s0.90%253.71 s1.88%261.62 s5.06%
basic_gnn_gcn15.05 s15.24 s1.26%19.63 s30.43%29.70 s97.34%64.39 s327.84%
basic_gnn_gin9.47 s9.53 s0.63%9.78 s3.27%12.66 s33.69%21.83 s130.52%
hf_Albert24.73 s24.00 s-2.95%29.19 s18.03%39.19 s58.47%73.00 s195.19%
hf_Bart39.88 s38.68 s-3.01%54.96 s37.81%94.17 s136.13%211.68 s430.79%
hf_Bert24.15 s24.35 s0.83%29.55 s22.36%42.00 s73.91%75.86 s214.12%
llama39.91 s41.20 s3.23%42.90 s7.49%45.80 s14.76%52.55 s31.67%
hf_distil_whisper170.61 s170.87 s0.15%172.16 s0.91%178.75 s4.77%189.45 s11.04%
hf_clip191.60 s191.70 s0.05%194.52 s1.52%197.51 s3.08%208.90 s9.03%
hf_Whisper58.98 s59.18 s0.34%63.50 s7.66%66.66 s13.02%72.63 s23.14%
Average loss0.00%12.37%40.82%128.36%

What the table shows:

  • In-process mode (NGPU) is within about 3% of native on every model.
  • Once calls cross a process boundary, overhead varies widely by model. hf_Bart, basic_gnn_gcn and hf_Bert lose 20–40% locally, while BERT_pytorch, hf_clip and hf_distil_whisper lose under 2%. This is consistent with a fixed cost per GPU call: short runs made of many small calls pay the most.
  • Network latency widens the gap. With 1 ms of latency the first group takes 3–5 times as long as native, while the second group stays within about 11%.

MLPerf Inference (2025-07-04)

bert-99, reference PyTorch implementation, edge category, SingleStream scenario.

SetupTimeLoss
Native27.008 s-
Local29.930 s10.82%
Same AZ33.341 s23.45%
Cross AZ41.597 s54.02%

Run it yourself

Prerequisites: a Kubernetes cluster with TensorFusion installed, a GPU node with NVIDIA drivers, and Helm 3.

  1. Clone the benchmark repository and install its chart. It creates a Deployment for manual runs and a CronJob for scheduled runs.

    git clone https://github.com/NexusGPU/benchmark.git
    cd benchmark
    helm install tf-bench ./helm/torchbench -f custom-values.yaml

    Set the image, node selector and TensorFusion Pod annotations for your cluster in custom-values.yaml. The chart defaults point at the authors' test environment.

  2. Run one TorchBench model inside the benchmark Pod:

    cd benchmark
    python3 test.py -k "test_${model_name}_eval_cuda" -t ${eval_times}
  3. Run the MLPerf test:

    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
  4. Repeat each run natively (without the TensorFusion annotations) and with each vGPU setup you want to compare, then compute (vgpu_time - native_time) / native_time.

To reproduce the latency columns on one node, add delay to the loopback interface before the run and remove it afterwards:

tc qdisc add dev lo root netem delay 0.3ms   # "Same AZ"; use 1ms for "Cross AZ"
tc qdisc del dev lo root

Next steps

  • Compare with other GPU sharing solutions
  • Support matrix

TensorFusion Metrics Reference

Previous

Command Line Reference

Next

Table of Contents

Read this first
What was measured
TorchBench inference (2025-07-06)
MLPerf Inference (2025-07-04)
Run it yourself
Next steps