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

Comparison

Compare with NVIDIA vGPUCompare with MIG/MPSCompare with NVIDIA Run:aiCompare with HAMi

Compare with MIG/MPS

How TensorFusion relates to NVIDIA's built-in GPU sharing mechanisms (MIG, MPS and time-slicing), and when the built-in ones are enough

MIG, MPS, and time-slicing are the GPU sharing mechanisms built into NVIDIA's driver. They are mechanisms for one GPU, not a pooling system: each decides how processes share a single card, and none of them schedules, sets quotas, or scales a cluster. TensorFusion works at that cluster level and uses some of these mechanisms underneath. If a fixed way of splitting each card is enough for you, the built-in mechanisms need nothing extra to install.

The three mechanisms

MIG (Multi-Instance GPU)MPS (Multi-Process Service)Time-slicing
How it sharesSplits one GPU into up to seven instances, each with its own memory, cache, and compute cores.Runs several processes' work on one GPU at the same time through a shared server process.Takes turns: each process gets the whole GPU for a time slice.
Memory limitFixed by the instance profile.Optional per-client limit (CUDA_MPS_PINNED_DEVICE_MEM_LIMIT).None.
Compute limitFixed by the instance profile.Optional per-client limit (CUDA_MPS_ACTIVE_THREAD_PERCENTAGE).None. Asking for more replicas does not give proportionally more compute.
Fault isolationYes. A failure in one instance does not affect the others.Limited. Clients have separate GPU address spaces, but a fatal GPU fault from one client affects every client sharing that GPU.No.
HardwareSelected data center GPUs, starting with the Ampere architecture.NVIDIA GPUs on Linux.Any NVIDIA GPU.
In KubernetesDevice plugin exposes instances as resources such as nvidia.com/mig-1g.5gb.Device plugin advertises a number of replicas per GPU.Device plugin advertises a number of replicas per GPU.

At a glance

TensorFusionMIG / MPS / time-slicing
ScopeCluster: pooling, scheduling, quotas, autoscaling, and per-Pod limits.One GPU: how its processes share it.
LicenseCore components Apache 2.0. Remote client and worker are closed source.Part of the NVIDIA driver, no extra license. The Kubernetes device plugin and GPU Operator are open source.
AcceleratorsNVIDIA, plus Huawei Ascend, Moore Threads, and Alibaba PPU in a subset of modes.NVIDIA only. MIG needs a GPU that supports it.
Slice sizesAny amount of compute (TFLOPS or percent) and VRAM, chosen per Pod.MIG: a fixed list of profiles per GPU model. MPS and time-slicing: a replica count per GPU, set by the administrator.
Changing a sliceIn soft mode, limits can change while the workload runs.MIG: reconfigure the GPU. Time-slicing and MPS: change the device plugin configuration.
Request and limitSeparate, so idle capacity can be lent out and reclaimed.No such distinction.
Hardware isolationIn partitioned mode, which allocates MIG instances.MIG.
Remote GPU over the networkYes, mainly on NVIDIA GPUs. See the support matrix.No.
OversubscriptionPer pool: a compute oversell ratio, and host memory and disk counted as schedulable VRAM.Time-slicing lets Pods share a GPU without limits. No accounting for memory.
SchedulingOwn scheduler that tracks free TFLOPS and VRAM on each GPU: bin-packing or spreading, GPU topology, gang scheduling, namespace quotas, QoS levels.Default Kubernetes scheduler, which counts replicas or instances as opaque integers.
AutoscalingAdjusts GPU requests and limits from usage. Adds and removes GPU nodes.None.
ObservabilityPer-workload GPU metrics, built-in alert rules.DCGM exporter. With time-slicing it cannot attribute metrics to containers.

How TensorFusion uses them

TensorFusion does not replace these mechanisms. Its isolation modes sit on top of them or beside them:

  • shared mode sets no limits and relies on the GPU's own time-slicing, like the device plugin's time-slicing replicas. What it adds is scheduling by VRAM and compute requests instead of a fixed replica count.
  • partitioned mode allocates MIG instances. TensorFusion picks the profile that fits the request and tracks which slots on each GPU are free.
  • soft mode is TensorFusion's own limiter. Like MPS limits, it runs in user space and caps compute and memory per workload. Unlike MPS limits, the node hypervisor changes the caps at runtime, which enables burst, QoS levels, and autoscaling.
  • hard mode moves GPU calls into a separate worker process and caps compute with a fixed share of the GPU.

One thing does not change: only MIG gives a hardware boundary. If you need that guarantee, use MIG, either directly or through partitioned mode.

Requesting a GPU

Time-slicing with the NVIDIA GPU Operator needs a ConfigMap that fixes the number of replicas, then a normal GPU request:

apiVersion: v1
kind: ConfigMap
metadata:
  name: time-slicing-config
  namespace: gpu-operator
data:
  any: |-
    version: v1
    flags:
      migStrategy: none
    sharing:
      timeSlicing:
        resources:
          - name: nvidia.com/gpu
            replicas: 4
---
# Pod: one of the four replicas, with no memory or compute limit
resources:
  limits:
    nvidia.com/gpu: 1

MIG needs the GPU partitioned in advance, then a request for one instance type:

resources:
  limits:
    nvidia.com/mig-1g.5gb: 1

TensorFusion needs no per-GPU plan. Each Pod states what it needs:

metadata:
  labels:
    tensor-fusion.ai/enabled: "true"
  annotations:
    tensor-fusion.ai/tflops-request: "10"
    tensor-fusion.ai/tflops-limit: "20"
    tensor-fusion.ai/vram-request: "4Gi"
    tensor-fusion.ai/vram-limit: "4Gi"

To get a MIG instance through TensorFusion, add tensor-fusion.ai/isolation: partitioned. Create a workload explains every annotation.

When to choose which

Use the built-in mechanisms on their own when:

  • You need hardware isolation between tenants and the fixed MIG profiles match your workloads.
  • The cluster is small and the way each GPU is split rarely changes.
  • You want the fewest moving parts: the NVIDIA driver and device plugin, and nothing else.
  • Workloads trust each other and only need to take turns on a GPU. Time-slicing covers that.

Choose TensorFusion when:

  • Workload sizes vary and do not fit a fixed list of profiles or one replica count per GPU.
  • You want GPU compute and VRAM limits per Pod, with requests lower than limits so idle capacity is used.
  • You need scheduling that knows how much of each GPU is free, plus quotas, QoS levels, or gang scheduling.
  • You want GPU nodes scaled with demand, or Pods on CPU nodes that use GPUs remotely.
  • You run MIG already and want the instances allocated on demand instead of planned by hand.

References

Checked in October 2026:

  • NVIDIA MIG User Guide: instance limits, supported GPUs, isolation.
  • NVIDIA Multi-Process Service: resource limits, memory protection, error containment.
  • Time-slicing GPUs in Kubernetes: configuration and limitations.

Compare with NVIDIA vGPU

How TensorFusion and NVIDIA vGPU software differ, where each one runs, and when to choose each

Compare with NVIDIA Run:ai

How TensorFusion and NVIDIA Run:ai differ in scope, GPU sharing, scheduling and licensing, and when to choose each

Table of Contents

The three mechanisms
At a glance
How TensorFusion uses them
Requesting a GPU
When to choose which
References