Infrastructure

The Lab / Infrastructure
My lab is actually ... drum roll please ... my garage (which happens to also be my lair / office / mall / kingdom). It is connected to the Internet via 2 ISPs one providing a true fiber connection and the other one a traditional DSL line and it is powered by one of the UK's energy providers combined with a solar rig of my own make all backed by 2 x APC UPSs. I have two small (15u) racks packed with various equipment collected over the years (servers, switches, routers, storage arrays ) on top of which I also have a few more servers (because there wasn't enough room in the racks :) ). As storage I'm using a mix of second hand SSDs and HDDs (some are consumer class others enterprise class, some are SATA others are SAS) and all servers, despite having RAID controllers, either use software raid (each drive is exposed as a raid 0 from the controller's point of view and software raid is configured at OS level using mdadm) or don't use RAID at all (the drives are exposed as raid 0 and used as individual drives to save on space where redundancy is achieved differently).
My desktop (PC)
It's a fairly old I7 (4cores / 8 threads) desktop with 16G RAM and about 3TB of disk storage (ZFS on a mirrored pool) running Ubuntu 22.04 Linux. This is where I do some light coding, use git and svn for revision control, work on the dissertation and do research from. It is also my "command center" from where I manage the entire infrastructure.
rulmysql
It's a virtual machine running on one of my Supermicro servers with 4 cores / 4 threads, 16G RAM and 400G storage running Ubuntu 22.04 Linux with and a MySQL server for "playing" with the dataset. This node is exclusively allocated for storing and working with the dataset(s) using the "old" ways (traditional db)
dev
The dev node is another virtual machine running on one of my Supermicro servers and has 8 cores / 8 threads, 128G RAM and 20G storage running CentOS7 Linux (yes, I know, pretty old but does its job) configured to run Jupyter Notebooks and pretty much nothing else. This node is exclusively allocated for the data exploration, feature selection tasks, training and experimenting with ML models using the CPU, I also used it to interact with the database.
ml1
This node is also a virtual machine running on one of my Supermicro servers and has 16 cores / 16 threads, 128G RAM and 1TB storage running Ubuntu 22.04 Linux and has Apache Cassandra + Apache Spark + Jupyter Notebooks running on top. I setup this node so that I would have a secondary environment to repeat all the work done on the dev node using more modern tools (Cassandra NOSQL and Jupiter Notebooks integrated with pyspark) again using the CPU
gpu001
This node is a bare metal machine, more specifically a Dell PowerEdge T320 server with 8 cores / 16 threads , 96G RAM, about 3TB of storage and a fat NVIDIA Tesla K40M GPU running Ubuntu 22.04 Linux. As you'd expect, this node will be used for repeating all the work done on the dev and ml1 nodes using the modern tools and the GPU (for comparison purposes). I keep this node powered off when not running ML experiments for obvious reasons (the GPU alone needs about 230W - 250W)
supercluster003
This node is a bare metal machine, more specifically a Supermicro server with 2 x 14 core cpus / 56 threads in total , 768G RAM, about 17TB of combined redundand SSD storage running Ubuntu 22.04 Linux. This is the host on which the above mentioned VMs run along with some other parts of my infrastructure (such as DNS, email, the prul website, etc) - my main work horse :)