Content
Throughout the research process, I ended up learning about the machine learning space the hard way. From the way-too-specific version compatibility requirements between industry standard software libraries to gatekeeping actual viable machine learning behind what company manufactures your Graphical Processing Unit, it feels like a dumpster fire fueled by the heat of a thousand data centers from the outside. To be more specific, we are talking about CUDA, nVIDIA's semi-open source and semi proprietary technology depending on what angle you look at it from, and the ecosystem built on top of it. Long story short, CUDA is currently the best GPU coding library in existence, thus everyone arranged their libraries and software to make use of it, the fact that CUDA exclusively targets nVIDIA's GPUs is a secondary concern here.
This was a problem as I only have an AMD GPU powering my personal computer at home, and while AMD does have their own GPU programming suite titled ROCm, it is a broken mess that only supports certain GPUs on certain days of the week and sometimes holidays. So, it is utterly useless to accomplish anything with. I, again, learned this the hard way by spending about two weeks attempting every single possible method to compile ROCm for my GPU, since it is not officially supported, and ended up running into never-before-seen compilation errors that I had no idea how to solve; I gave up this route entirely.
There exists a world of software that allows you to effectively rent "virtual computers" (these computers are actually hosted on the data centers I mention in previous blog posts) on which to run software like machine learning or data science analysis. The leader here is Amazon Web Services, where you sign up and choose a specific type of computer instance equipped with varying levels of memory, CPU, and GPU space; then, you set up a terminal and pay hourly to run programs. I didn't end up using AWS for they would not up my CPU quota, how many running CPUs you can use at any given time, for the type of instance I needed. So, I shifted to another similar service called Paperspace, part of Digital Ocean now, another one of these CPU renting services, inn order to chug through the data collection process. This was actually a lot smoother once I figured the rest of the kinks out surrounding the other aspects of the computer program.
---
Now that we have the software and hardware discoveries out of the way, another interesting aspect of AI and machine learning development is the fact that it's math all the way down. All the AI models you hear about and use online are effectively giant mathematical constructions designed to perform a singular task extremely well--image classification is an example here. Within the math space, AI focuses on linear algebra and matrix operations, with matrix multiplication being by far the most common operation. These matrix and algebra operations are so common, in fact, that an entirely use class of processing units is being designed to perform these math calculations as fast as physically possible: Tensor Processing Units. nVIDIA has already incorporated these TPUs into their GPU lineups for about a decade now, and you probably have a few dozen to few hundred in your GPU right now (AMD is punching air here).
Another interesting fact is we do not actually know what goes on inside of an AI model. By that I mean that we know what goes in an comes out, and what the models are composed of; but, we don't know how they actually work to produce the output they do. As an example, AI researchers understand that an AI model builds up successive levels of features from a dataset in order to draw an accurate conclusion, but they don't understand what the features are or what they look for (they don't understand how an AI builds from pure data into identifying a face or a vehicle). Since the most popular type of AI model right now is modeled after a human brain, there is a growing connection between AI development and neuroscience that basically says "hey, if we can better understand how an AI model works, we can better understand how a human brain works."
---
While I won't really be touching this subject much in the future as my career path doesn't intersect (I mention this later), I still wish to explore this space further and see how it evolves in the coming years to become more accurate and power hungry with little consideration for the consequences. Additionally, I never want to go near the heaping pile of dog dung that is AI libraries (except PyTorch my beloved, and my side chick Burn).
Product
The final results ended up being incredibly interesting. For one, the accuracy-optimized AI models were more energy efficiency than I had anticipated; although, these models were quite small, and most AI models that do anything useful like image recognition or natural language processing can be run effectively on a smartphone or laptop. But, we're looking at the big boys here, and the energy-optimized AI models delivered, consuming about half the energy on average compared to the control of accuracy.
More intriguing, though expected, was the trade-off between energy efficency and accuracy. When I trained the computer program to produce for one criterion like energy efficiency, the resulting models would lose on the other criterion and vice versa. What this resulted in was two distinct groups for both criteria between the experimental (energy efficiency) and control (accuracy) groups, both of which experienced little overlap. I explain this more in the paper linked below, with shiny graphs for your viewing pleasure.
---
On the oral defense, I was quite litterally soiling myself trying to get any data before I presented. This happened, at midnight of the day of my presentation, and the second set of data useful for comparison wouldn't finish until after the presentation. Thus, I haphazardly cobbled together what data I could scourange together and presented on it. For everything else, I actually nailed it down fairly nicely after much trial and error--I clocked in at 25 minutes to the research question my first time, and 10 minutes total the second, both without data. I hopefully explained it well enough that the panelists and my teachers could understand it enough to sift their way through my presentation and make it out unscathed.
---
I plan to hone in on supplying ample time to acrue data before the stated deadline, and not have my teachers pulling their hair out over the stress of me trying, and failing, to gather any data at all. For all else, I wouldn't change anything as it turned out fairly successful in the end, with a product I felt proud of.
Process
I definitely learned that I should *not* attempt to venture into completely unknown worlds of territory blind and pray I survive. This naivety led me down an almost inescapable pit where I sunk an entire month-and-a-half into a project that never worked. Going forward, I need to scope the research space beforehand and document what I actually need to complete the project, and what methods work best (no adventuring through novel software libraries because I don't like a particular programming language).
Yet, once everything got going, it was like a continuous rush of dopamine straight to the head as each trial run finished and I sampled the data. The graphs looked fresh and the numbers ripe as an entire school year's worth of work coagulated into a plump fruit. I need me some more of this, please.
Acknowledgements
Mr. Riner -> donating a personal computer for use during school hours. Riner was immensely responsive to my frequent needs (this was as a result of my own naivety).
Sachin (mentor) -> aiding in getting the project up and running back in March. Sachin found an online solution for being able to run the computer program, and got one of the versions running before I could, which was extremely helpful as at this point I was starting to freak about getting any data.
Next
I am committed to the Clark Honors College at University of Oregon, with a major in Marine Biology and a minor in Computer Science. It doesn't seem like I would be the person for anything life sciences related--I do mostly talk about computers and computer things, but the program looks mighty interesting with the separate facility on the coast for hands-on experience in upper division courses. Also, I don't recall why but the marine biology program looked stronger at Oregon than the computer science program, not to say that the comp sci is lackluster or anything, just that I wanted the grabby-grabby experience over a desk job in the future.
I was never looking to actually attend Oregon, as it was a safety school, but once everything panned out and I was admitted into the honors college, Oregon seemed like the most complete package offering high-level coursework through the honors college and major (the senior thesis intrigues me) and a high-octane college town environment with a sports attitude above all else. Plus, the extra name recognition wouldn't hurt.
After college, a dream job would be somewhere like the Monterey Bay Aquarium Research Institute, where I could potentially find an intersection between marine biology and computer science. But, as of right now, anywhere I can get my hands dirty learning stuff would work just fine.