A Developers Journey into Machine Learning - Building a Linux desktop for Machine Learning

When I first starting working through ML examples online and from my initial book purchases (1, 2) it became clear very quickly that I would likely need a desktop machine with an NVIDIA GPU.

I initially spent much of my time using Google Colab but I quickly wanted something more flexible. In particular I didn't want to upload datasets manually or store them in Google Drive whenever I wanted to do a new experiment.

I decided to put together a small and quiet Linux desktop that had room for some upgrades if my experimentation and passion took me further than my initial budget would allow.

The Build

A great resource if you are going to be building a desktop for Machine Learning is Tim Dettmers article titled Which GPU for Deep Learning. In the article he discusses many factors around GPUs and their performance for Machine Learning. He also includes a section that shows performance of GPUs relative to each other.

I chose to go with the ”getting started” option he recommends which is an NVIDIA GTX 1060 with 6GB of RAM.

I then put together the remaining parts to round out the build itself and ordered the following.

I have always been a fan of smaller form factors and was curious if I could fit all of this relatively high end kit into a small and quiet case without losing performance due to thermal issues.

I looked around at a number of higher end SFF (Small Form Factor) cases that would fit an ITX motherboard and found some gorgeous options on the market.

All of these cases would've likely provided enough cooling for my current build but I wanted a bit more potential headroom so I opted for the NZXT H200 in matte black. The H200 has room for big GPUs, large quieter fans, and a heftier water cooling setup compared to the shoebox style cases above.

Once I received all the parts I ran into an initial problem with the cable lengths. This required me to get the following extensions so the power cables could reach the motherboard.

After assembly I installed Pop!_OS an Ubuntu based distribution geared towards developers with some minimal refinements to Gnome. I then went ahead and installed all the tooling necessary for machine learning and was up and running quickly. With the hardware above my entire system has been stable including fully functioning suspend and wake which can be troublesome in Linux.