Industry guide · Internal Tools

GPU Cluster Scheduling and Chargeback: Why Your Most Expensive Hardware Sits Idle at 3am

GPU Cluster Scheduling software visual showing cpu, list ordered, and cost metric.
The short answer

If you run a shared GPU cluster above roughly 64 accelerators across more than three teams and you cannot say what fraction of allocated GPU hours were actually computing, build the measurement and chargeback layer. A focused first release covering per job utilisation telemetry, quota and priority policy, and defensible per team cost attribution runs $70,000 to $150,000 and ships in 12 to 16 weeks in our delivery experience. A full platform adding self service reservations, idle reclaim with checkpointing, multi cluster and cloud burst, and finance system integration lands at $180,000 to $450,000 over 6 to 12 months. Below about 32 GPUs with one team, Slurm with its accounting database and a monthly report is the right answer and anything more is overhead.

Why shared GPU clusters run at half the utilisation their owners assume

At 3am the cluster dashboard shows 92 percent of GPUs allocated. The device telemetry shows 31 percent of them doing any meaningful work. A team reserved eight nodes on Tuesday for a fine tuning run that finished Wednesday morning and nobody released them, because releasing them means queuing again and the queue is uncertain. Two researchers have Jupyter sessions holding a GPU each since last week. An evaluation job that the product team needs before a Friday review is sitting behind a five day hyperparameter sweep that somebody submitted at default priority and forgot about. Everyone in the organisation believes the cluster is full. It is not full, it is held.

This gap between allocation and utilisation is the entire problem, and most organisations do not measure it because the scheduler does not. A scheduler's job is to decide who gets what and it considers itself finished at that point. Whether the process on the other side actually saturated the device is outside its concern. So the reports that reach leadership say the cluster is at capacity, the answer is to buy more, and the newly bought GPUs join the same pattern within a quarter.

The financial shape is unusually stark here compared with most infrastructure. A GPU node depreciates whether or not it computes, sits in a rack you are paying for, and draws serious power at idle rather than nothing. When the platform team cannot attribute that cost to the projects consuming it, two things follow: finance cannot evaluate whether the cluster is worth its budget, and no team has any reason to release capacity they are not using. Both problems are solved by the same work, which is why it is worth doing properly rather than as a monthly spreadsheet.

Problem one: nobody joins device telemetry to jobs, users and projects

The raw signal exists. NVIDIA's DCGM exporter will give you streaming per device metrics including streaming multiprocessor activity and memory occupancy. The scheduler knows which job held which device at which time. Your identity system knows which user belongs to which team. Almost nowhere are those three joined, which means the organisation has utilisation numbers and allocation numbers but no way to say that team A held 4,100 GPU hours last month and computed on 1,400 of them.

Building that join is the foundation and it is more useful than it sounds, because it changes conversations rather than just producing a chart. Once a team can see their own allocated versus consumed ratio, behaviour shifts before any policy is enforced. It also lets you separate the two very different causes of low utilisation: jobs that hold devices while doing nothing, and jobs that hold devices while running badly, for example a data loading bottleneck starving the accelerator. The first is a scheduling problem. The second is an engineering problem that belongs to the team, and you cannot tell them apart without the telemetry.

Problem two: queue policy is an organisational decision, not a scheduler setting

Every organisation with a shared cluster eventually argues about the same questions. Does the production inference team pre empt research? Can a five day sweep be interrupted, and if so who is responsible for making it resumable? Does an unused quota expire or accumulate? Are reservations allowed at all, and if so does an idle reservation still consume the team's budget? These are political questions with technical enforcement, and the failure mode is that they get answered implicitly by whatever defaults the scheduler shipped with.

Slurm is the strongest engine available for the mechanics and has been for years. Gang scheduling for distributed training, backfill, fair share and preemption are all mature, and if you are running one you should keep it. Its accounting database gives you allocated GPU seconds per account, which is genuinely useful and is also where it stops: it has no notion of utilisation, no rate card, no relationship to your finance system, and no interface a team lead will voluntarily open. Kueue solves queueing and quota cohorts on Kubernetes cleanly, and is likewise a building block rather than a product. Run:ai is a real platform with fractional GPU support and a scheduling layer over Kubernetes, but it is opinionated about how workloads reach the cluster and its cost model is its own rather than yours. Determined AI is excellent if your teams adopt its training workflow and less useful as a neutral scheduler across heterogeneous workloads.

Our position: do not write a scheduler. That is a solved and deeply engineered problem and a bespoke one will be worse. Build the policy, quota and accountability layer above whichever engine you run, because policy is the part that is specific to your organisation and no vendor can supply it.

Problem three: interactive sessions are the largest single leak

The biggest source of held but unused capacity in every cluster we have examined is interactive work: notebooks, remote development sessions and debugging shells that acquire a GPU and hold it through lunch, overnight and across weekends. It is also the most politically sensitive thing to reclaim, because the people doing it are your researchers and their objection is legitimate. Losing an hour of loaded model state to an automated reaper is a real cost to them.

The workable design respects that. Detect idleness from device activity rather than session presence, since a connected session doing nothing is exactly the case you are trying to catch. Warn in the channel the person actually reads before doing anything. Give a grace period long enough to save state. Where the workload supports checkpointing, offer suspend and resume rather than termination, so the cost of being reclaimed is minutes rather than a morning. And make the policy visible and negotiated rather than imposed by the platform team, because a reaper that surprises people gets routed around within a week by scripts that print a dot to the GPU every few minutes.

Problem four: chargeback needs a unit finance will defend

Attribution fails when the unit is vague. A defensible model needs a rate per GPU hour that differs by accelerator type, because an H100 hour and an L40S hour are not the same cost, plus a decision about what the rate includes: hardware depreciation over your assumed life, power at your actual facility rate, a share of the interconnect and storage that only exists to serve the cluster, and the platform team's own time if your organisation allocates it. Those inputs are business decisions your finance lead should sign off before anyone writes the calculation.

The sharper decision is whether to charge on allocation or on consumption. Charging on consumption feels fair and is exactly wrong, because it makes holding an idle reservation free and removes the incentive the whole project exists to create. Charging on allocation with utilisation reported alongside is the model that changes behaviour: you pay for what you held, and you can see what you wasted. Add a discount for pre emptible workloads and you have a lever that moves long sweeps off the priority tier without anyone having to enforce it manually.

What this costs and how long it takes

A first release covering the telemetry join across devices, jobs, users and projects, quota and priority policy enforcement on your existing scheduler, and per team allocated versus consumed reporting with a rate card runs $70,000 to $150,000 and ships in 12 to 16 weeks. A full platform adding self service reservations with expiry, idle detection and reclaim with checkpoint support, multi cluster views, cloud burst accounting, and posting into your finance system runs $180,000 to $450,000 over 6 to 12 months.

What moves the number in this category: how many schedulers you actually run, since organisations with both a Slurm cluster and Kubernetes based training need two integrations and a reconciled view. Whether your workloads are checkpointable, because suspend and resume is worth building only if the framework side supports it and often that is an engineering conversation with the ML teams rather than a platform one. Identity integration is usually straightforward but project mapping rarely is, since the project a job belongs to is often not recorded anywhere at submission time and has to be introduced. And cloud burst adds a whole second cost model, because on demand and spot pricing behave nothing like an amortised on premise rate.

Build versus buy, and when buying is right

Buy or adopt open source if you have one team on under about 32 GPUs. Slurm plus its accounting database plus a scheduled report will tell you everything you need and cost you a few days of setup. Kueue is the equivalent answer if you are Kubernetes native. There is no chargeback problem when there is nobody to charge.

Build the layer when three or more teams share the cluster and at least one of them has complained about queue fairness, when finance has asked what the cluster costs per project and the answer took a week to assemble, when your allocated figure and your utilisation figure differ by more than about 30 points, or when a capital request for more GPUs is coming and you cannot evidence that the existing ones are saturated. That last case is the one that usually funds the project, because the build costs a fraction of the hardware it defers.

Buy Run:ai or Determined instead if you want a full training platform and your teams are willing to adopt its workflow end to end. That is a real and reasonable path. It stops being the right path when you have heterogeneous workloads that will not all move, or when the chargeback model your finance team requires does not match the vendor's.

How to choose a developer for GPU platform work

Ask how they would distinguish a job that is idle from a job that is running badly. If they cannot answer that in terms of device metrics, they will build you a dashboard of allocation numbers you already have. Ask what they would do about a distributed training job that needs all its GPUs simultaneously, because gang scheduling is the constraint that breaks naive queue designs.

Ask whether they intend to write a scheduler. If yes, stop. The right answer is to integrate with Slurm, Kueue or Volcano and put the policy and accounting above it. Ask how they will map a job to a project when the submission does not carry one, since that is the practical blocker on every chargeback project and the answer involves process as much as code.

Settle code and infrastructure ownership in writing before kickoff, including the repository and cloud accounts. At Digital Heroes the client owns the code from the first commit. As a first step, run DCGM telemetry alongside your scheduler accounting for two weeks and compute allocated versus consumed GPU hours per team. If that ratio is comfortable, you do not need this project. If it is not, you now have the business case in a single number.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Companies in the top quartile of McKinsey's Developer Velocity Index had 2014-18 revenue growth four to five times faster than bottom-quartile peers, showing that software-building capability is a driver of business performance, not just a support function. Source: McKinsey & Company (2020) →
  2. Standish's 2015 CHAOS research found roughly a third of software projects (about 36% by the Modern definition) fully succeed on time, on budget, and on scope, with top success drivers including executive support, user involvement, and clear requirements/business objectives. Source: Standish Group (CHAOS Report) (2015) →
  3. Across more than 5,400 IT projects studied by McKinsey and the University of Oxford BT Centre, large IT projects ran on average 45% over budget and 7% over schedule while delivering 56% less value than predicted. Source: McKinsey & Company / University of Oxford (BT Centre for Major Programme Management) (2012) →
  4. Brandon Hall Group research on onboarding reports that done well, structured onboarding drives measurable gains in new-hire productivity, employee engagement, and retention; the page notes 41% of organizations experience greater than 5% turnover among new hires. Source: Brandon Hall Group (2024) →
Jack C. · People Operations · APAC · Sydney

Jack looks after people operations for the APAC team, from hiring and onboarding through to the day to day of keeping a distributed office running. He sees which skills are hard to hire and how project teams are actually staffed. That perspective is useful if you are deciding between hiring and outsourcing.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom GPU cluster scheduling and chargeback software cost?
A first release covering the telemetry join across devices, jobs and projects, quota and priority policy on your existing scheduler, and per team allocated versus consumed reporting typically runs $70,000 to $150,000 and ships in 12 to 16 weeks, based on Digital Heroes delivery experience. A full platform with reservations, idle reclaim, multi cluster views and finance posting runs $180,000 to $450,000 over 6 to 12 months. Running two schedulers, for example Slurm alongside Kubernetes, is the main cost multiplier.
Should we replace Slurm, or build on top of it?
Build on top of it. Slurm's gang scheduling, backfill, fair share and preemption are mature and a bespoke scheduler will be worse. What it does not give you is utilisation as opposed to allocation, a rate card, a relationship to your finance system, or an interface a team lead will voluntarily open. Those are the pieces worth building, and they are specific to your organisation in a way scheduling mechanics are not.
Is Run:ai worth buying instead of building a custom layer?
It is a real platform and a reasonable path if your teams will adopt its workflow end to end and its cost model matches what your finance team needs. It becomes the wrong fit when you have heterogeneous workloads that will not all move through one system, or when your chargeback unit is a negotiated internal decision the product cannot express. The same trade applies to Determined AI, which is strong if teams adopt its training workflow and weaker as a neutral scheduler.
How do we measure whether GPUs are actually being used, not just allocated?
Join three sources that almost nobody joins: device telemetry from the DCGM exporter giving streaming multiprocessor activity and memory occupancy, scheduler records of which job held which device when, and your identity system for team membership. That produces allocated versus consumed GPU hours per team. It also separates jobs that hold devices doing nothing from jobs that run inefficiently, for example starved by data loading, which are different problems belonging to different people.
Should teams be charged for GPUs they reserved but did not use?
Yes, and this is the decision that determines whether the whole project works. Charging only for consumption makes an idle reservation free and removes the incentive to release capacity, which is the behaviour you are trying to change. Charge on allocation, report utilisation alongside it so teams can see their own waste, and offer a discounted rate for pre emptible workloads so long sweeps move off the priority tier without anyone policing it.
How do we reclaim idle notebook sessions without upsetting researchers?
Detect idleness from device activity rather than session presence, because a connected session doing nothing is the exact case you need to catch. Warn in the channel the person actually reads, give a grace period long enough to save state, and where the framework supports it offer suspend and resume rather than termination. Negotiate the policy openly. A reaper that surprises people gets defeated within a week by scripts that poke the GPU periodically.
Can the same system cover both on premise GPUs and cloud burst capacity?
Yes, but treat them as two cost models rather than one. On demand and spot pricing behave nothing like an amortised on premise rate, and blending them into a single number hides the decision you actually want teams to make about where a workload belongs. The useful design shows a team its total spend with the split visible, and lets platform policy route pre emptible work to whichever pool is cheaper at the time.
How long before we can show finance a per project cost for the cluster?
The telemetry join and rate card portion is usually usable within the first 12 to 16 week release, and often earlier in draft form. The practical blocker is rarely engineering. It is that jobs frequently carry no project identifier at submission, so the mapping has to be introduced through process changes at the same time. Agree the rate card inputs with your finance lead before the calculation is built, since depreciation life and power rate are business decisions.
Who owns the code if an agency builds our GPU platform layer?
You should own the repository, the infrastructure accounts and the right to bring in another firm, written into the contract before kickoff. At Digital Heroes the client owns the code from the first commit. This layer encodes your queue policy and your internal cost model, both of which are governance decisions your organisation should control directly rather than through a vendor's product roadmap.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
When does a company outgrow Airtable?
The usual breaking points are record limits, permissions, and automation complexity. Airtable's Team plan caps each base at 50,000 records and Business at 125,000, so operations logging thousands of rows a month hit the ceiling within a year or two. The other trigger Digital Heroes sees constantly is permissions: restricting who can view specific fields or records is clumsy below Airtable's Enterprise tier, which becomes a genuine problem once salaries, pricing, or client contracts live in the base.
How do I vet a development agency for an internal tools project?
Ask to see two or three internal tools they have shipped and whether those clients still use them daily, because internal tools fail on adoption, not code quality. Good signs: they ask to see your current spreadsheet or process before quoting, they propose a phased build instead of one big launch, and they spell out who handles training and post-launch changes. Walk away from anyone who gives a fixed price before seeing your actual workflow, since internal tools live or die on process details.
How do we migrate years of spreadsheet or Airtable data into a new internal tool?
Migration is a standard part of the build, not a separate project: the agency writes import scripts that clean, deduplicate, and map your existing rows into the new database. On typical spreadsheet and Airtable histories, Digital Heroes budgets 3 to 10 extra days, most of it spent resolving inconsistencies like the same customer spelled four different ways. The safe sequence is a trial migration first, a review of flagged conflicts with your team, then final cutover over a weekend so nobody loses a working day.
What are the most common mistakes companies make when building internal tools?
The three failures Digital Heroes sees most: building for every department at once instead of nailing one workflow, designing without the end users so staff quietly go back to their spreadsheets, and leaving no named owner after launch so small bugs pile up until the tool dies. A subtler fourth is faithfully recreating the old spreadsheet, including its workarounds, instead of fixing the process first. Start with one team's most painful workflow and put the actual users in the room from week one.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
What tech stack should an internal tool be built with?
Boring and popular: a React or Next.js frontend, a Node.js or Python backend, and PostgreSQL covers the vast majority of internal tools and keeps future hiring easy. The stack matters far less than whether a different developer can pick the code up in two years, so require documentation as a deliverable and avoid anything exotic. Treat it as a red flag if an agency pushes a proprietary platform only they maintain, because that quietly converts your tool into a subscription to that agency.
Who can build a custom internal tools system?

Digital Heroes builds custom internal tools systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other internal tools companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?