Skip to main content

Case Study

When the War Hit the GPU Bill: Renegotiating an AI Programme Through a 400% Energy Shock

Mid-programme, energy prices spiked 400% and Phase-2 compute ran 2600 hours against a 1200-hour budget. We took a mid-six-figure engagement back to the client with a 104,300 USD change request - and it built trust rather than eroding it, because every overrun traced to an itemised compute-hour table instead of a round-number plea.

Case study

Halfway through a three-year AI programme for a major operator in Oman, the compute bill stopped behaving. We had approved a mid-six-figure budget the previous December for a fractured-carbonate image-log project, work that ran on a private datacenter of experimentation servers, a data-processing box, an older stack of cards, and an NVIDIA A100. Then two things happened at once. Russia invaded Ukraine, and the price of the gas that powered the racks went vertical. And the supervised model phase, the one that trained the fracture and bedding detectors, turned out to need more than twice the compute we had scoped. In October 2022 we had to go back to the client and ask for more money on a programme that was already funded and already running.

That is the moment most engagements quietly rot. A vendor comes back asking for a top-up, the number is round, the justification is a paragraph, and the client's trust in the original estimate collapses along with the schedule. We did the opposite, and the reason it worked is the whole point of this piece: we did not ask for a number. We handed over a ledger.

The two things that broke at once

The original approved budget was 533,000 USD, signed the previous December for a 20-month scope. The additional request came to 104,300 USD, and the first discipline was that it split cleanly into two named buckets rather than one blended ask. Bucket one, 53,300 USD, covered extra AI infrastructure: the project had split into parallel supervised and unsupervised tracks (the unsupervised branch won for vugs and beddings, the supervised branch for fractures), which doubled the compute paths, and Phase 3 added an 80-plus-well well-to-well correlation workload we had to provision for. Bucket two, 51,000 USD, was an energy and utility contingency, roughly OMR 20,000 across twelve months, and it existed entirely because of the war.

The energy line was not a hedge. Gas prices were up 400% against pre-war levels, 600% since the project kicked off the previous December, and 1300% since September 2021, tracked against the traded European gas benchmark. Electricity was up 394%. DGX-class hosting on the open market had moved from 12,000 to 15,000 USD a month before the war to north of 20,000 USD a month after it. Every one of those figures went into the request as a sourced number with a baseline attached, because a contingency that says "energy is expensive now" is a plea, and a contingency that says "gas is up 400% versus pre-war on this named index" is an audit line.

The ledger, not the ask

The compute bucket is where the itemisation did the real work. Instead of asserting that the model phase had run over, we tabled the budgeted-against-actual GPU hours for every phase.

Phase 1 had been budgeted at 1200 hours and roughly 20,000 USD, and it landed on both. Phase 2 had also been budgeted at 1200 hours, and it actually consumed 2600 hours, 2.17 times the plan, for about 44,700 USD against the 20,000 budgeted, an overrun of 24,700 USD. Phase 3 had been scoped at 5800 hours and 100,000 USD, and the forecast was 7500 hours and 128,600 USD, 1.29 times over, an overrun of 28,600 USD. Those two overruns, 24,700 and 28,600, summed to 53,300 USD, and that was not a coincidence chosen after the fact. That sum was the infrastructure bucket. The client could read the top-line ask, follow the line down to the phase, and see the hours that produced it.

CHANGE REQUEST · EVERY OVERRUN TRACED TO A COMPUTE-HOUR LINE+$104.3Kadded to a $533K programmeBudgeted against actual GPU hours, phase by phase - the ask is the sum of these linesA · COMPUTE-HOUR LEDGER (BUDGETED vs ACTUAL)hours (budget vs actual)USD overrunPhase 1on budget1,200 h budget1,200 h actualon budget$20K to $20KPhase 22.17x over1,200 h budget2,600 h actual+$24.7K$20K to $44.7KPhase 31.29x over5,800 h budget7,500 h actual+$28.6K$100K to $128.6Kcompute overruns roll up, line by line+$53.3KB · THE ADDITIONAL ASK, IN TWO NAMED BUCKETSinfra $53.3Kenergy $51KWHY THE ENERGY BUCKET: THE PRICE SHOCK+400%gas vs pre-war+600%since project start+1300%since Sept 2021electricity +394% · DGX-class hosting $12-15K/mo pre-war to $20K+/moTHE MOAT: A PRE-WAR RATE, HELD BELOW MARKETindustry$30/GPU-hrstandard$24.60/GPU-hroffered$17.22/GPU-hra pre-Covid GPU buy + 2020 vendor deal fixed the rate before the spikeC · SCALE THE RUNS: THE MOAT KEEPS THE CEILING BOUNDEDCONCURRENT RUNSdrag: Phase 3 lights more of theA100 into MIG partitions830609024 runsAT THIS CONCURRENCYMIG partitions lit7 / 28sustained GPU util82%held below market$12.78/GPU-hroverrun bounded because the rate was fixed before the war
A mid-project change request read as a ledger, not a plea. Panel A prints the compute-hour overrun phase by phase: Phase 1 landed on its 1200-hour, 20K budget; Phase 2 ran 2600 hours against 1200 (2.17x over, +24.7K); Phase 3 forecast 7500 hours against 5800 (1.29x over, +28.6K). Those two lines roll up into the 53.3K infrastructure bucket. Panel B decomposes the full 104.3K additional ask on a 533K programme into its two named buckets, infrastructure and a 51K energy contingency, and states the price shock that drove the energy line: gas up 400% versus pre-war, 600% since the project started, 1300% since September 2021, electricity up 394%, and DGX-class hosting moving from 12-15K to 20K-plus per month. Panel C is the moat: a pre-Covid GPU purchase and a 2020 vendor deal fixed the run rate at 17.22 USD per GPU-hour against a 30 USD industry baseline before the spike, so dragging concurrent runs up toward the Phase-3 ceiling lights more of the A100 into its 28 MIG partitions and pushes sustained utilisation to 80-90% while the per-hour cost stays fixed. The orange element is the only one that argues: the Phase-2 crisis bar, the overrun that forced the request. Every plotted number is sourced from the engagement's additional-budget request and cost-comparison ledger; the concurrent-runs sweep is an illustrative lever over the sourced moat rates, not a re-forecast of the ask.

This is a different negotiating posture than the usual overrun conversation. When the number is defended by a table, the reviewer stops arguing about the number and starts checking the table, which is a far healthier conversation to be in. The question shifts from "why should we trust your estimate" to "is 2600 hours a fair count of what Phase 2 actually ran," and that second question has a factual answer we could produce from the run logs. A single ML run took six to eighteen hours; Phase 3 was going to push concurrent runs from a handful to somewhere near sixty to ninety at once. None of that is arguable in the abstract. All of it is checkable line by line.

The moat we had already built

The itemised overrun explained why the bill grew. It did not, on its own, explain why the client should believe the bill would not keep growing without limit as the war dragged on. That reassurance came from a piece of infrastructure planning that predated the crisis by two years.

We had bought GPU capacity before the pandemic and signed a multi-year hardware partnership in 2020, and we ran the workload in a private datacenter on a rate that was fixed before any of this happened. The rate card told the story: the industry baseline was 30 USD per GPU-hour, our standard managed rate was 24.60 USD per GPU-hour, and the rate this engagement actually paid was 17.22 USD per GPU-hour, a 30% proposal-phase discount locked in 2020. When the open market for DGX hosting jumped past 20,000 USD a month, our per-hour rate did not move, because it had been negotiated before the spike. The change request could therefore promise something a spot-priced vendor could not: the overrun was bounded, because the unit price was fixed while everyone else's floated up.

The A100 itself did the rest of the bounding. Rather than buy more cards to meet the parallel-run demand, we partitioned the one A100 into as many as 28 Multi-Instance GPU slices, so a single physical card presented as many isolated instances, and pushed sustained utilisation to 80-90%. That is the difference between "we need more hardware" and "we need to use the hardware we already priced more densely." The change request asked for contingency, not a capital expansion, and the MIG plan was the evidence.

Why a change request can build trust

The instinct when a project runs over is to absorb the overrun quietly or to bury it in a vague top-up, on the theory that visibility is dangerous. On this engagement the opposite held. The transparent request, with its itemised compute-hour table, its two named buckets, its sourced energy baselines, and its fixed-rate moat, was more trust-building than silence would have been. It showed the client that we knew, to the hour, where their money had gone and where it was going, and that we had built the cost defence into the infrastructure before the crisis rather than scrambling for it after.

The general lesson transfers past this reservoir and past this war. When you have to ask a client for more money mid-programme, the number is almost never the problem. The problem is whether the number is legible. An overrun defended by a table invites scrutiny and survives it. An overrun defended by a paragraph invites suspicion and rarely does. The 104,300 USD we asked for was large, but every dollar of it pointed at a line the client could check, and that is why the conversation ended in a signature rather than a standoff.

Limitations

The figures here are from a single confidential engagement in a fractured carbonate reservoir in Oman, and they reflect one operator's cost structure and one moment in the 2022 energy market; the percentage moves are tied to specific baselines (pre-war, project start, and September 2021) and should not be read as a general forecast. The compute-hour counts and dollar figures come from the engagement's own additional-budget request and its cost-comparison ledger, so they are internal accounting rather than an independently audited benchmark. The GPU-hour rate card reflects hardware and a vendor deal negotiated in 2020 under conditions specific to that period, and the concurrent-run and utilisation figures are the plan we scoped for Phase 3, not a post-hoc measurement of the whole programme.

Go to Top

© 2026 Copyright. Earthscan