GPU capacity
GPU node pools sized from what pods actually request
KubeOn sizes each GPU node pool from its peak hourly GPU requests, flags workloads whose GPU memory fits a smaller GPU type, and schedules development GPUs off outside working hours. Each finding is priced at the pool's billed rate and becomes a proposal.
GPU capacity workflow
Who does what
Size GPU node pools to real demand
Follow the inputs, decision and output for this workflow.
- KubeOn, automated
- Your decision
- Your systems and people
- Step 1, Collect, by Agent:
Hourly GPU requests per node pool, and GPU memory peaks per workload.
- Step 2, Size, by KubeOn hub:
Fewer GPU nodes where peak requests leave whole nodes empty; smaller GPU types where models fit.
- Step 3, Approve, by Platform team:
Check latency targets and scheduled peaks the history window might not contain.
- Step 4, Apply, by Your pipeline:
Change node pool size, GPU type or schedule through your infrastructure code.
KubeOn reads and recommends. Your team and pipeline change the cluster.
Read the workflowWho does what
Size GPU node pools to real demand
Follow the inputs, decision and output for this workflow.
- 01
Collect
Hourly GPU requests per node pool, and GPU memory peaks per workload.
Agent
- 02
Size
Fewer GPU nodes where peak requests leave whole nodes empty; smaller GPU types where models fit.
KubeOn hub
- 03
Approve
Check latency targets and scheduled peaks the history window might not contain.
Platform team
- 04
Apply
Change node pool size, GPU type or schedule through your infrastructure code.
Your pipeline
KubeOn reads and recommends. Your team and pipeline change the cluster.
Read the workflowNode pool size
Fewer GPU nodes where whole nodes sit empty at peak
For each GPU node pool, KubeOn takes the peak of hourly GPU requests over 14 days and counts how many nodes would hold it. When whole nodes would be left over even at the busiest hour, it proposes a smaller minimum and desired size, and keeps the maximum so the pool can scale back up.
- Peak hourly GPU requests over 14 days
- Whole nodes only: a GPU node is never half removed
- Terraform, eksctl or Karpenter changes written out
# prod-use1-a / ml-inference: peak GPU requests 7 of 12 over 14 daysresource "aws_eks_node_group" "ml_inference" { cluster_name = "prod-use1-a" instance_types = ["g6e.12xlarge"] # 4 x NVIDIA L40S scaling_config { min_size = 2 # was 3 desired_size = 2 # was 3 max_size = 3 # room to scale back up }}GPU type
Models that fit a smaller GPU
A model whose peak GPU memory is 14 GB does not need a 48 GB card. KubeOn compares each inference workload's peak GPU memory with the memory of the GPU it runs on and flags those that fit a smaller GPU class with headroom. Because speed differs between GPU types, these are review findings, not counted savings, until your team benchmarks them.
- Peak GPU memory with 30% headroom
- Same vendor and driver family
- Latency is for your team to confirm
prod-use1-a / rerank-svc on NVIDIA L40S (48 GB)peak GPU memory, 14 days 14.0 GBwith 30% headroom 18.2 GBfits 24 GB class (NVIDIA L4, A10G)status review: benchmark latency firstOff-hours
Development GPUs off outside working hours
GPU nodes in dev, test and sandbox clusters get an off-hours proposal: GPU pods scaled down outside 07:00 to 20:00 on weekdays, and the empty nodes removed by the autoscaler. The saving is estimated on the 103 hours a week they would be idle.
- kube-downscaler annotations on the namespace
- Node group minimum at 0 so empty GPU nodes leave
- Non-production only
# dev-use1 / ml-notebooks: GPU pods scale down outside working hours.# With the ml-dev node group at a minimum of 0, the empty GPU node is removed.apiVersion: v1kind: Namespacemetadata: name: ml-notebooks annotations: downscaler/uptime: Mon-Fri 07:00-20:00 UTCCapacity rules
Every GPU capacity finding, with its rule
| Finding | Rule | Saving |
|---|---|---|
| Scale a GPU node pool | Peak hourly GPU requests over 14 days fit on fewer nodes, leaving at least one whole node | Billed cost of the nodes removed |
| Smaller GPU type | Peak GPU memory plus 30% fits a smaller GPU class | Review only, until benchmarked |
| GPU off-hours | GPU nodes in non-production clusters, idle outside 07:00 to 20:00 on weekdays | 103 of 168 hours a week of the node's cost |
| Idle GPU nodes | GPU nodes with no GPU requested for 7 days | The node's full billed cost |
14 days does not contain a quarterly training run or a seasonal peak. Reject proposals for pools whose busiest days fall outside the window.
Capabilities
GPU capacity planned from evidence
Pool sizing
Fewer GPU nodes where peak requests leave nodes empty.
GPU type fit
Peak GPU memory against the card's memory.
Off-hours
Development GPU nodes off at night and at weekends.
Idle GPU nodes
Nodes with no GPU requested for a week.
Stated windows
Every finding says which days it looked at.
Approved changes
Proposals with a risk level, an owner and a patch.
FAQ
GPU capacity, answered
No. KubeOn writes the change to your node group, NodePool or schedule. Your team approves it and your pipeline applies it.
Related
Evaluate GPU capacity with your team.
Bring your platform and FinOps priorities. We will walk through the data, controls and evidence for your evaluation.