Guide

A big GPU is often too much for one small model, such as a 1 to 3B classifier or an embedding model. Three mechanisms let several workloads share one GPU. They differ in how strongly they isolate workloads, how densely they pack them, and how much latency they add under load.

The big idea

Think of a building. MIG is a building with walls: each floor is split off with its own fixed-size utilities. MPS is several tenants on one floor with no walls. They share the space at once, so one heavy tenant can crowd the others. Time-slicing is a shared room where tenants take turns, so each waits its turn.

The picture breaks in two ways. MIG walls come in fixed sizes that you cannot reshape at will. Time-slicing turns look fair on paper, but a waiting tenant feels every spike.

The three mechanisms

MechanismWhat it doesGood forWatch out for
MIG (Multi-Instance GPU)Hardware-partitions a GPU, such as an A100 or H100, into isolated slicesHard isolation and predictable performanceSlice sizes are fixed, and not all SKUs and modes behave the same
MPS (Multi-Process Service)Lets several CUDA processes share the GPU concurrentlySeveral small processesWeaker isolation: one heavy process can still slow the rest
Time-slicing (Kubernetes device plugin)Oversubscribes a GPU to many podsDev and batch densityLatency spikes under contention

Choosing one

Work down the list:

  1. Two different trusted workloads need hard isolation? Use MIG to split the GPU.
  2. Several small processes you trust can share one GPU? Use MPS to run them concurrently.
  3. Dev or batch jobs where latency does not matter? Use time-slicing to pack them densely.
  4. A latency-sensitive LLM decode service? Use one engine per GPU, or one per MIG instance, with multi-LoRA inside the engine. Do not put the main chat service on time-sliced GPUs.

Warning

Time-slicing is a common cause of unexplained latency spikes. A chat service that looks healthy at low load can miss its time-to-first-token target as soon as a neighbor starts a batch job.

Common mistakes

  • Using time-slicing for the main chat SLO. Contention turns into latency spikes.
  • Assuming MPS isolates workloads. It shares the GPU, so a heavy process can still hurt the others.
  • Assuming MIG slices are flexible. The slice sizes are fixed, so plan around them.

Check yourself

  1. Which mechanism gives hard isolation between two workloads? Answer: MIG, because it splits the GPU into separate hardware partitions.
  2. Why not run a chat LLM on time-sliced GPUs? Answer: under contention, turns are shared, which adds latency spikes that break the latency target.

Key takeaways

  • MIG gives hard isolation with fixed slices. MPS gives concurrency with weaker isolation. Time-slicing gives density with latency spikes.
  • Pack small models with MIG, MPS or time-slicing, depending on how much you trust the neighbors.
  • Keep latency-critical LLM decode on one engine per GPU, or per MIG slice.

Further learning

Next, read tenant isolation for limits that protect tenants who share a GPU, whatever the sharing mechanism.