Build a budget 3090 deep learning workstation Part One: assembling and GPU bent

3 minute read

Part One…

Finally, 7 months after writing Part zero: Random tidbits, I caught up some breath after a rollercoaster ride since building the budget ML PC last November. Back then in Nov 2020, when creating partitions during the installation of Ubuntu, a 300G partition is reserved for Windows and Cyberpunk 2077…then it turned out writing ML codes is much more fun, and today I still have not installed Windows despite having bought a license last year…

Having a fast GPU locally makes writing codes an addiction (due to much faster prototyping and debugging cycles). At first, building repos by contributing 20k or 40k lines of codes over a month span sounds good.

But then, I realized that I have contributed over half a million lines in March, April, and May this year…in the dev repo for a paper recently written. Pure craziness.

Somehow by accident I became a PyTorch contributor as well…after contributing over 900 lines of code and figuring out why the numerical error in the nn_test is bigger than the supposed tolerance. Even though initially the goal was just to get the official PyTorch transformer module’s inputs uniform with my pipeline so that two transpose function calls can be saved in the wrappers.


The last time I built a computer myself was 21 years ago when I was 13 years old. Well, the theme now seemingly is destined to be about the reminiscences. Back then, the computer was equipped with a Pentium 200Mhz CPU, an Asus motherboard, 32MB of RAM, a 2GB HDD, SiS 6326 graphics card, together with a 3Dfx Voodoo 1 3D acceleration card. It was not a complete building experience, as it was actually more like a troubleshooting. I bought a Voodoo card, after installation the computer would not turn on, so I have to disconnect everything: CPU, RAM, graphics card, the motherboard power connectors, case panel connectors. Luckily, the computer went back to normal with some shiny new graphics after re-installing everything. At this time I still remember how shocked I was seeing the smooth graphics of a racing game called Need for Speed 3.

So this is technically the first time I am building a PC from ground up. Anyway a time-lapse is recorded and here it is (also on the header of this page):

RTX 3090 bent

The RTX 3090 is too long and too heavy, a simple support from the PCI-e slot and the case is not enough by the Bernoulli-Euler equation for the beam. After installation, the GPU became visibly bent near the end… So I improvised a little and tied a zip tie on the right end of the card to the case:

Even that was not enough, and I ended buying an “anti-sag bracket” made by Lian-Li. After installation, it looks like:

In the end, it still feels unsure and I re-screwed the fans a little so that the right end of the card is now supported by the frame of a fan. Some cheap insulator is padded in between to absorb the potential vibration.

Running smooth!

Software configurations and some back story…

  • Part Zero: Random tidbits: a newbie’s story to build a budget machine learning workstation.
  • Part Two: software and CUDA: we will learn how to install CUDA and PyTorch, and how to config Ubuntu so that the GPU is NOT used for graphics displaying but only for CUDA computing.
  • Part Three: undervolt the GPU: we will see how to config the Ubuntu to achieve an undervolt effect on GPU, thus making the system more stable. This serves our need of training of models for a longer period of time.
  • Bonus part: productivity for MAC users: as a long time MacOS user, we will learn how to config an almost MacOS like keyboard on Linux.