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 shares | Splits 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 limit | Fixed by the instance profile. | Optional per-client limit (CUDA_MPS_PINNED_DEVICE_MEM_LIMIT). | None. |
| Compute limit | Fixed 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 isolation | Yes. 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. |
| Hardware | Selected data center GPUs, starting with the Ampere architecture. | NVIDIA GPUs on Linux. | Any NVIDIA GPU. |
| In Kubernetes | Device 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
| TensorFusion | MIG / MPS / time-slicing | |
|---|---|---|
| Scope | Cluster: pooling, scheduling, quotas, autoscaling, and per-Pod limits. | One GPU: how its processes share it. |
| License | Core 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. |
| Accelerators | NVIDIA, plus Huawei Ascend, Moore Threads, and Alibaba PPU in a subset of modes. | NVIDIA only. MIG needs a GPU that supports it. |
| Slice sizes | Any 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 slice | In soft mode, limits can change while the workload runs. | MIG: reconfigure the GPU. Time-slicing and MPS: change the device plugin configuration. |
| Request and limit | Separate, so idle capacity can be lent out and reclaimed. | No such distinction. |
| Hardware isolation | In partitioned mode, which allocates MIG instances. | MIG. |
| Remote GPU over the network | Yes, mainly on NVIDIA GPUs. See the support matrix. | No. |
| Oversubscription | Per 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. |
| Scheduling | Own 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. |
| Autoscaling | Adjusts GPU requests and limits from usage. Adds and removes GPU nodes. | None. |
| Observability | Per-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:
sharedmode 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.partitionedmode allocates MIG instances. TensorFusion picks the profile that fits the request and tracks which slots on each GPU are free.softmode 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.hardmode 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: 1MIG needs the GPU partitioned in advance, then a request for one instance type:
resources:
limits:
nvidia.com/mig-1g.5gb: 1TensorFusion 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.
TensorFusion Docs