Fractional GPUs and GPU Rightsizing: Stop Wasting Whole Cards Average GPU utilization in production Kubernetes clusters is just 5%, wasting 95% of GPU spend, according to the Cast AI 2026 State of Kubernetes Optimization Report. Fractional GPUs via MIG or time-slicing, combined with GPU rightsizing, can raise utilization to 49% without buying more hardware. Cast AI automates the rightsizing loop to eliminate idle GPU capacity. A fractional GPU lets a workload use part of a physical GPU instead of holding the whole card, using MIG partitions or time-slicing. Combined with GPU rightsizing matching GPU and memory requests to real usage , it is the most direct way to raise GPU utilization from the typical 5% without buying more hardware. Key takeaways - Average GPU utilization in production Kubernetes clusters is just 5%, according to the Cast AI 2026 State of Kubernetes Optimization Report https://cast.ai/reports/state-of-kubernetes-optimization/ . - Fractional GPUs, via MIG or time-slicing, let multiple pods share one physical GPU card. - MIG provides hardware-level memory and fault isolation. Time-slicing is software-only and works on any NVIDIA GPU. - GPU rightsizing matches resource requests to actual utilization, eliminating waste on capacity workloads never consume. - At 4 time-slicing replicas, each workload’s allocated GPU share drops to 25% of the card. - A single H100 or H200 supports up to 7 MIG instances. - Cast AI automates the full rightsizing loop: measure utilization, generate recommendations, and apply corrected requests automatically. Why whole-GPU allocation wastes money Kubernetes GPU scheduling is all-or-nothing by default. A pod requests nvidia.com/gpu: 1 and the scheduler pins the entire physical card to that pod. No other workload can touch it, even when the pod is idle. In production, most inference pods consume a tiny fraction of the GPU they hold. Average utilization across production clusters is just 5%, based on data from tens of thousands of clusters on AWS, GCP, and Azure. That figure comes directly from the Cast AI 2026 State of Kubernetes Optimization Report https://cast.ai/reports/state-of-kubernetes-optimization/ . In other words, 95 cents of every GPU dollar goes to idle silicon. At AWS Capacity Block pricing for H100 instances ~$6.88 per GPU-hour , a 20-GPU cluster running 720 hours per month at 5% utilization wastes roughly $94,000 per month in idle GPU capacity. The economics are getting harder, not easier. H200 AWS Capacity Block pricing increased 15% in January 2026, the first GPU price increase in roughly two decades, according to the Cast AI 2026 State of Kubernetes Optimization Report https://cast.ai/reports/state-of-kubernetes-optimization/ . Teams scaling AI workloads pay more per card while using less of each card. That is a compounding problem with no self-correcting mechanism. The gap is technique, not hardware. The best-performing cluster in the Cast AI dataset is a 136-node H200 fleet running at 49% utilization, roughly 10x the average. Those teams apply fractional GPU allocation and rightsizing. The hardware is the same; the configuration is different. Fractional GPUs: MIG vs. time-slicing For a broader look at GPU sharing strategies, see the Cast AI guide on GPU sharing in Kubernetes for cost optimization https://cast.ai/blog/gpu-sharing-kubernetes-cost-optimization/ . Two mechanisms enable GPU sharing in Kubernetes: Multi-Instance GPU MIG and time-slicing. Both work through the NVIDIA GPU Operator. They differ in isolation guarantees, supported hardware, and Kubernetes resource naming. MIG: hardware-level partitions MIG is a hardware feature available on NVIDIA A100, H100, and H200 GPUs. It partitions the physical GPU into isolated slices at the silicon level. Each slice gets dedicated memory, compute engines, and cache. One slice cannot access another’s memory, and a crash in one instance does not affect others. A single H100 80GB supports up to 7 MIG instances using the 1g.10gb profile, giving each slice 10 GB of framebuffer memory. The H200 141GB supports 7 instances at 1g.18gb , providing 18 GB per slice. The table below covers profiles across GPU generations: | GPU | Memory | Smallest profile | Max instances | |---|---|---|---| | A100 40GB | 40 GB | 1g.5gb | 7 | | A100 80GB | 80 GB | 1g.10gb | 7 | | H100 80GB | 80 GB | 1g.10gb | 7 | | H200 141GB | 141 GB | 1g.18gb | 7 | The following ConfigMap enables 7x 1g.10gb slices on all H100 80GB devices via the NVIDIA GPU Operator: apiVersion: v1 kind: ConfigMap metadata: name: default-mig-parted-config namespace: gpu-operator data: config.yaml: | version: v1 mig-configs: all-1g.10gb: - devices: all mig-enabled: true mig-devices: "1g.10gb": 7 Apply the ConfigMap kubectl apply -f mig-parted-config.yaml Before labeling, verify the node runs an MIG-capable GPU: kubectl get node