A leading product engineering company, creating adaptive software solutions to improve operations, providing businesses with expert development services from across domain.
A leading product engineering company, creating adaptive software solutions to improve operations, providing businesses with expert development services from across domain.
The GPU utilization Kubernetes teams can reach: China Merchants Bank went from 35% to over 60% and cut cost per million tokens by 60%. What to copy.

The GPU utilization Kubernetes clusters actually achieve is the most expensive number in self-hosted AI, and the least visible. A cluster can look healthy — pods scheduled, nodes busy — while most accelerator capacity sits idle. China Merchants Bank has just shown how large the gap can be: by unifying training and inference on one Kubernetes control plane, it lifted average utilisation across nearly 10,000 accelerator cards from 35% to more than 60%, and cut the cost of processing a million tokens by more than 60%.
The bank won the CNCF End User Case Study Contest for KubeCon China 2026, announced in September. Its AI infrastructure team combined Kubernetes with five CNCF-ecosystem projects so that model training, fine-tuning and online inference could share one pool of heterogeneous accelerators:
Bringing 99% of its accelerator compute under that framework is what moved utilisation from 35% to over 60%. Separately, the bank's in-house training framework lets five LoRA fine-tuning tenants share one base-model instance by default, which it says cuts accelerator use for that setup by 80% and raises training density fivefold.
The bank's own explanation of the problem is the useful part. Training, inference and fine-tuning want different things from the same hardware:
Run those as separate pools, each sized for its own peak, and utilisation around a third is unsurprising. Kubernetes' default device model makes it worse: a pod requests whole GPUs, so a small inference service can hold a card it uses a fraction of. Fractional sharing, a common queue and elastic inference are what recover the idle capacity.
We covered the scheduling side — gang scheduling for training jobs — when Kubernetes 1.37 added workload-aware scheduling. Utilisation is the other half: getting the jobs scheduled is not the same as keeping the cards busy.
In cost per token, not in pods or nodes. That is the argument Val Bercovici, chief AI officer at WEKA, made to The New Stack this week: inference cost "depends on state Kubernetes was never designed to manage: request mix, KV cache occupancy, the balance of prefill and decode, and how memory and bandwidth are consumed inside the accelerator after a pod is already running." His view is that Kubernetes stays, but "unless its resource model evolves, it becomes a tax on inference economics".
China Merchants Bank's reported result is framed exactly that way — cost per million tokens, input and output combined — and its stated next step is capacity management based on unit cost, combining utilisation, queue state and latency signals. For any team self-hosting models, that is the metric to adopt: divide the cost of the accelerator pool by the tokens it served. If the number is not falling as you add optimisations, the optimisations are not working.
For teams already running Kubernetes, yes — with the caveats above. The bank's result shows the platform can reach high utilisation in a regulated, large-scale setting, using open, vendor-neutral components. But its default resource model sees GPUs as indivisible devices and knows nothing about tokens, so the tooling around it does the real work.
For smaller teams, the first question is still whether to self-host at all. At low volume, hosted APIs usually win on cost, as we found when we checked the claims about self-hosted LLM cost. Self-hosting starts to pay when volume is steady and high enough to keep cards busy — which is exactly what utilisation measures.
If your GPU bill is growing faster than your traffic, our Kubernetes implementation team can instrument cost per token on your cluster and set up sharing, queueing and autoscaling to raise utilisation.
GPU utilization is often low in Kubernetes because pods request whole GPUs, training jobs hold capacity while waiting for other workers, and inference is over-provisioned for traffic peaks in separate pools. China Merchants Bank averaged 35% before unifying its workloads.
Multiple pods can share a GPU using fractional sharing tools such as HAMi, or hardware time-slicing and partitioning. China Merchants Bank used HAMi to allocate accelerator capacity in fine-grained units across training, fine-tuning and inference workloads.
Measure AI inference cost as cost per million tokens: the cost of the accelerator pool divided by the tokens it serves. China Merchants Bank reported a reduction of more than 60% in the cost of processing one million input and output tokens.
Kubernetes can run LLM inference efficiently with the right tooling for GPU sharing, queueing and autoscaling, as China Merchants Bank showed. Its default resource model treats GPUs as whole devices and does not account for token-level costs, so that tooling matters.
Ready to take the first step towards unlocking opportunities, realizing goals, and embracing innovation? We're here and eager to connect.
11th Floor, O-Hub, Chandaka Industrial Estate, Infocity, Bhubaneswar, Odisha 751024
Level 4, 11 York Street Sydney Startup Hub Sydney, NSW – 2000
30 N. Đinh Nghệ, Phước Mỹ Sơn Trà, Đà Nẵng / Da Nang City – 550000
Level 25, AIDP Business Tower, Dubai Marina, United Arab Emirates
50 Beauchamp Street, Wellington, WGN 5028, New Zealand