← Khalid Salman

I built my own AI workstation, and here’s what renting GPUs never taught me

Two RTX 5090s, £8,817.78 of parts, somewhere to act on my intrusive AI thoughts without pricing them up first, and a thermal problem I’d never have found on rented hardware.

There’s a tower next to my desk that I put together myself. It normally runs with two of its glass panels off and leaning against the wall behind it, which is worth six or seven degrees. It looks like something caught halfway through a repair. That’s the normal operating state.

The finished build with both tempered glass panels fitted, seven RGB fans and both graphics cards visible through the glass
The machine with the glass on. This is not how it usually runs.

Eleven at night, and the only cost is a warm room

Here’s the thing that actually changed.

It’s eleven at night and I want to rerun a pretraining config with a different vocabulary size. Nothing rides on it. I’m curious about the shape of the loss curve, that’s all.

Before I had this machine, that thought came with a second half attached. Price the instance, work out how many hours it needs, then decide whether a shrug-shaped answer is worth the money. Usually I went to bed instead.

A rented GPU bills by the hour whether the run is any good or not. So the sweep gets narrower, the sequence length comes down, the checkpoint interval goes up, and you talk yourself into believing the cheap version of the experiment answers the same question as the expensive one. It usually doesn’t. Worse, a meter running in the background makes you want the run to finish, because finishing is what stops the charge. A machine in the corner of the room has no opinion about how long anything takes. The runs that need two days get two days, and I stopped quietly biasing my own work toward whatever converged fastest.

I run far more things that don’t work now. That’s the point. The things that don’t work are where most of the learning is.

Someone will point out that spending £8,000 to save money makes no sense, and they’d be right. At the scale I run side projects, that money rents enough GPU hours to last years. The arithmetic doesn’t favour buying and I’m not going to pretend it does. But don’t underestimate the psychological half of it: paying once != paying every time you’re curious, and only one of those quietly edits what you’re willing to try.

That isn’t the only reason either.

Three reasons

I wanted to understand the hardware properly. I wanted a machine I could run my own projects on without first pricing out what a rented GPU would cost me for an evening of something that might not pan out, so that the stupid experiments, which are the ones I learn most from, are free. And I wanted to write CUDA kernels for machine learning workloads.

Two cards at home is a specific bet: that most of what I want to do fits in 64GB of VRAM and runs for days, not for a fortnight across a cluster. Renting still wins for a shape I can’t buy. Eight cards for a week and then nothing is a rental problem and always will be. Owning means depreciation whether the box is busy or not, and when a fan dies at 3am it’s my fan.

So the division of labour is simple. The small runs, the ones I’m experimenting with and learning from, stay on JDI. Yes, my PC has a name. Anything that needs to scale past two cards gets rented, and knowing where that line sits is itself something owning the machine taught me.

Writing CUDA kernels

That third reason is the one I’d put first. Until I built this, my mental model of a GPU stopped somewhere around the API surface and a memory number.

Kernel work is a compile, run, measure, throw-it-away loop, and it’s a terrible fit for rented hardware where the meter runs during the thinking as well as the computing. You need the machine free at the margin or you optimise the wrong thing, which is your own spend. Something small and fused, benchmarked honestly against whatever PyTorch already ships for the same op. I haven’t written it yet, and I expect the first attempt to lose badly.

A case that reviews well for gaming is not a case for a nine-hour run

The Lian Li O11D EVO XL is a good case. It’s also reviewed, almost everywhere, against a workload that has nothing to do with mine.

A review loads a machine hard for a few minutes, records a peak, and moves on. Games are bursty. There are menus and loading screens and the bit where you go and make tea. Training isn’t like that at all. Both cards sit near their limit for hours, the thermals settle into a steady state no benchmark run ever reaches, and the number that matters stops being the peak. It becomes whatever the machine has converged to at hour three. Nothing I read before buying measured that.

The two cards alone account for 1,175W at their power caps, one at 600W and the other at 575W. Add the CPU and it’s the thick end of 1,350W, essentially all of which comes back out as heat, into one room, in a London flat. The machine is a 1.3kW heater that occasionally trains a language model.

So I took the panels off and measured it properly.

The machine running with the side and front glass panels removed, both graphics cards and the AIO pump screen visible
How it actually runs. The pump screen is doing its own thing.

Incidentally, there’s an LCD on the pump head, and I have Gohan going Super Saiyan on it. It seemed appropriate. He spends the whole scene screaming and drawing an absurd amount of power to do one specific thing, which is more or less the machine’s entire personality.

Two nvidia-smi captures side by side under identical sustained load. Panels on: 81°C and 84°C, fans at 93% and 82%. Panels off: 75°C and 77°C, fans at 81% and 62%. Power draw pinned at 600W and 575W in both
Panels on, then panels off. Identical load, identical power draw, six and seven degrees apart.

Same sustained BF16 matmul on both cards, four minutes of thermal soak, captured at steady state. Panels on: 81°C and 84°C. Panels off, identical load: 75°C and 77°C. Six degrees and seven degrees.

Power draw was pinned to the cap in both runs, 600W and 575W, so nothing was throttling and the comparison is clean.

The temperatures are the headline, but the fan speeds are the more interesting number. With the panels on, the second card’s fan sat at 82%. With them off, 62%. Twenty points less fan, to hold a temperature seven degrees lower, doing identical work. The sealed case wasn’t just running hotter. It was running hotter and spending more fan to get there, which is noise I have to sit next to and bearings I have to replace eventually.

I don’t think it’s a bad case. Two cards this size in a sealed glass box is a heat problem you probably can’t fan your way out of at this size. There’s something faintly ridiculous about buying a case sold on its airflow and then running it with half the enclosure on the floor, and I’d still make the same purchase.

This is the part renting never taught me. On a cloud instance, thermals are somebody else’s problem, expressed to me as a price per hour and occasionally as a clock speed I never see throttle. Here it’s my problem, and having to solve it taught me more about how hardware behaves under sustained load than any number of rented hours would have.

Power delivery is the one spec you get a single shot at

Everyone talks about the GPU. The component I ended up understanding properly was the boring grey box at the bottom.

It’s an MSI MEG Ai1600T PCIE5. 1600W, 80+ Titanium, up to 94% efficient. The specification that turned out to matter is the dull one: two native 12V-2x6 connectors, each rated to 600W. Native. Not an adapter, not two 8-pins bodged into a dongle, an actual cable running from the supply to the card with nothing in between.

I didn’t know what any of that meant when I started. I do now, because I had to choose it. The 12V-2x6 is a revision of the older 12VHPWR connector with shorter sense pins and slightly longer power pins, and the only reason that revision exists is that the previous one could melt when it wasn’t pushed all the way home. You can stay comfortably unaware of that right up until you’re the person plugging it in.

Two 5090s and the CPU want somewhere around 1,350W between them. The supply covers that with headroom and without an adapter anywhere in the loom.

That part wasn’t luck. I specced the supply already knowing I wanted two 5090s in this machine, which is why the connector count mattered to me as much as the wattage did. Get the wattage right and the connectors wrong and you’re back to adapters, on the one component where I least wanted a compromise.

None of which stopped me destroying one.

I had the supply running off a cheap extension lead instead of straight into the wall. There was a bang like a gunshot, the machine went dead, and the power supply was cooked. Everything else survived, which I put down to luck rather than anything I’d done. The replacement went directly into a wall socket and has stayed there. Roughly £500 to learn that the thing standing between a 1.3kW draw and the mains is not the place to improvise, and there is no version of this where I get to blame the hardware.

The generalisable bit: power delivery and connector count decide whether a machine can grow, and they’re the specs you can’t change later without pulling the whole build apart. Cores and memory you can argue about afterwards.

Buying compute by the hour, you never once think about a connector standard. That’s the trade. Somebody else takes on the physical layer and hands you a device string, and in exchange you stay slightly ignorant of what’s underneath it, forever.

The second card was a clearance problem before it was anything else

In the cloud, adding a GPU is an edit to a config file. Here it’s a question of clearance. Two cards that size don’t sit next to each other in a way that lets either of them breathe, so the second one goes somewhere else in the case entirely, which means a bracket to hold it, a second bracket to hold it at the right angle, and a cable long enough to reach the slot it’s no longer sitting in.

An upright mount, £20.00. A vertical mount, £78.71. A 40cm riser cable, £97.00. Ninety-seven pounds. For a cable. I checked the order twice. A Gen 5 riser has to hold impedance and shielding together at 32 GT/s per lane, and the cheap ones don’t fail by refusing to work. They fail by quietly downgrading your link or throwing artifacts, which is how £97 stops looking like a typo and starts looking merely expensive.

£195.71 in brackets and cable, to mount a card I already had.

I then broke the vertical mount getting the card into it. Too much force on a latch that didn’t want to move, on a day when I should probably have stopped and come back to it, and the lock snapped. What broke was a bracket rather than the card sitting in the bracket, which is the only reason I can tell that story lightly.

The case-specific build video I’d used for cable routing turned out to be just as useful for working out mounting points.

Five links did nearly all the planning

Almost all the specification work happened on PCPartPicker. You build the list, it tells you what’s incompatible, and it prices each part across vendors at the same time. Probably the best site there is for this. I looked at PCSpecialist as a sanity check and thought the pricing was high.

After that it was three videos: a general build guide, one for this exact case, and one for this exact motherboard. Someone assembling the specific board sitting in front of you beats any amount of general advice, because the thing you’re unsure about at 9pm is which of two nearly identical headers the front panel cable goes into.

Assembly is not too difficult, and I’d say that to anyone considering it. The parts are expensive enough to make you slow and careful, and slow and careful is the correct speed. Both of the things I broke, I broke by not being either.


What it costs

Component Model Price
GPU ASUS GeForce RTX 5090 32GB TUF Gaming OC £2,639.10
GPU Zotac GeForce RTX 5090 32GB £2,900.00
RAM G.Skill Trident Z5 Neo RGB 64GB (2x32GB) DDR5-6000 CL30 £599.99
PSU MSI MEG Ai1600T PCIE5, 1600W £507.00
Motherboard ASUS ProArt X870E-Creator WiFi £494.99
CPU AMD Ryzen 9 9950X £487.86
Storage Samsung 990 PRO 2TB £228.30
CPU cooler Lian Li Galahad II LCD-SL 360 £223.94
Case Lian Li O11D EVO XL £198.94
Fans Lian Li UNI SL120 INF, 3x £75.49
Fans Lian Li UNI SL120 INF, 3x £75.49
Fan Lian Li UNI SL120 Reverse, 1x £29.98
Riser cable 40cm, Gen 5 £97.00
GPU mount Vertical £78.71
GPU mount Upright £20.00
KVM switch £89.99
Keyboard £71.00
Total £8,817.78

The two cards are £5,539.10 of that, a shade under 63%. That ratio is the honest summary of the whole exercise. It’s a pair of GPUs with a computer attached, and everything else in the table exists to feed them, cool them, or store what they produce.

Shopping around rather than buying a prebuilt saved £372.55 against list prices, about 6%, and almost all of it came off two lines: £180.89 on a graphics card and £92.99 on the power supply. If you’re doing this yourself, that’s the part worth copying. Watch the two or three most expensive lines and let the rest go. Hunting a fiver off a case is an evening you never get back.

The CPU is the part I thought least about and lean on most. Sixteen Zen 5 cores, 32 threads, and a 170W TDP, which is why £223.94 went on a 360mm AIO instead of a tower cooler. Tokenising and loading data is CPU work, and two 5090s are very good at sitting idle while a single thread chews through a preprocessing script.

References

Everything I actually used to plan and build this.

Picking the parts

Building it

Background on the parts that surprised me

The two parts worth reading up on before you buy