If you are part of that privileged group who has the money and need for a second computer, building your own computer is really the way to go. Everyone’s first computer these days should probably be a laptop, or maybe a tablet. Well maybe not these days because with COVID no one is going anywhere, but in the general future hand-wavy days then a laptop really wins over a desktop because portability is very useful.
Right, so back to building a computer. All you really do when building a computer is plug a bunch of pieces into each other, following simple pictured-filled manuals. Advantages of building: slightly cheaper, but more importantly, spend your money on the components you value most. This was my first computer build, and yet I managed to build it quickly and not make a single mistake (so far as I’ve seen) or have a single confusing point behind figuring out mounting the CPU cooler properly. Admittedly, I do have some experience messing around with computers, so I am not exactly a complete beginner.
Regardless, the actual building of a computer is fairly easy, more a question of how long it would take someone to do rather than if they could do it. The hard part is probably the choosing of components. The first difficultly is making sure all the pieces will work together. This is solved easily by using the website PC Part Picker which helps guide you to choosing compatible parts. Still, it is then difficult to decide where to spend your money, and to choose parts that are the best value for the amount you have to spend. Luckily my budget is fairly large, although I choose not to spend as much as I could – I’d rather save the extra money for new bikes…
The short version is here, of the build I made. Goals: good cpu, power efficiency, generally high quality. Overall cost was around $1400.
The two primary pieces of the build were actually quite easy to choose: the CPU and GPU. It’s AMD vs Intel and AMD vs Nvidia. My major use case of data science work loads made the choices easy. Much of data science uses the Intel MKL (Math Kernel Library) for underlying linear algebra, and Intel MKL is – not surprisingly – designed to drastically slow down when used on AMD. There are hacks around it, but I’d prefer not to count on hacks which may someday be patched against. Intel also does still have the best single core performance, which is useful for plenty of code, too. I knew I wanted a higher end CPU after my experiences being too slow on the M5 competition, so I choose the i7 10700. I didn’t deem the i9 worth the cost, and I deemed the K series unlocked chips too energy inefficient for the performance they add.
Of note in the future: look for what instruction set is supported by the CPU. For the Intel 10700 here, the highest supported instruction set is a 64-bit ‘avx2’. Intel also offers a higher-performance ‘avx512’ instruction set on some CPUs. Does this matter for gaming? Nope. Does this matter for machine learning? Yep.
These days, lots of data science also occurs on GPUs, and there is only one mainstream consumer library providing support for that, Nvidia CUDA. I hadn’t originally planned to get a GPU, since a high power CPU was the main goal, but in the end I decided one was useful (critical if one wants to play Civ VI on Ubuntu). Since I very rarely play video games, I decided to opt with what many articles had proclaimed as the best value GPU, the Nvidia GTX 1650 Super. It has twice the CUDA power of my existing GTX 1060. It’s only limitation is smallish memory, at 4 GB of GDDR6, it won’t have enough memory for the large image processing neural nets, but I don’t use those anyway.
One tough question I faced was whether to use Windows or Ubuntu. Not so long ago, Windows would have been the only choice, but Ubuntu is rather good for desktop use. Indeed, Ubuntu is naturally faster for most data science tasks. Yet I faced a few issues with Ubuntu which I installed first, specifically the LAN Ethernet port did not have a driver built into the Linux kernel. And since last time I compiled a driver into Linux I found it rather annoying, slowing loading and blah blah, I felt it might be better to use Windows. At the end of the day, all the hardware was designed to work with Windows. Finally, I hoped Windows Pro, with Remote Desktop, would be the fastest available connection option to connect remotely to my computer, and Steam Remote Play only seems to work between computers of the same operating system. I’ve enabled Wake on LAN to allow remote starts. But ufda, $200 for that operating system.
One last thing: overclocking. Technically you can’t overclock a non-K Intel CPU. But actually you can, by about 3% if you have the right motherboard, which I do. I can also overclock this GPU with MSI Afterburner. It was only a small overclocking, but it pushed this computer build to the 92% from 60% percentile (relative to computers of the same parts). Any more overclocking tends to become very power inefficient.
Final power consumption was: 50/120/250 Watts for Idle/Light/Load respectively. That is fairly light by workstation standards, but that still means this computer consumes the equivalent of running 40 or more of my thin client servers simultaneously. The thin client is much slower, probably about 35% the speed of this computer, but still, the efficiency difference is stark on a CPU to CPU basis.