Nels Lindahl — Functional Journal

A weblog created by Dr. Nels Lindahl featuring writings and thoughts…

Category: Machine Learning

  • That feeling of being behind

    All the winds of change are blowing these days in the AI/ML space. Seriously, things are changing very rapidly. I’m contemplating running some Auto-GPT on my desktop with the latest Llama 2 model maybe. Right now it would call out to OpenAI via API. Right now I’m starting to dig into this GitHub that is relevant to that aim. 

    https://github.com/rhohndorf/Auto-Llama-cpp

    That project could one day be very interesting, but right now it’s way more POC than delivered. 

    Things for me shifted a bit and I ended up looking at this Google Colab notebooks:

    https://github.com/camenduru/text-generation-webui-colab/blob/main/README.md

    https://colab.research.google.com/github/camenduru/text-generation-webui-colab/blob/main/llama-2-7b-chat.ipynb (this took about 5 minutes to run)

    At this point, I’m wondering what other things people do with Gradio that are interesting. 

    Apparently, you can go out to https://huggingface.co/spaces and see a ton of spaces that showcase some of the ML apps made by the community at large.

    It looks like people are making Spaces over on Hugging Face that allow people to run and execute Auto-GPT. A lot of these were built out during April of 2023.

    Need to spend time this week digging into localGPT and privateGPT installations for my main workstation.

    Content consumed this week:

    “The Impact of chatGPT talks (2023) – Keynote address by Prof. Yann LeCun (NYU/Meta)” https://www.youtube.com/watch?v=vyqXLJsmsrk&list=PLKemzYMx2_Ot1MZ_er2vFiINdJEgDO8Hg
    “Llama 2: Open Foundation and Fine-Tuned Chat Models” https://arxiv.org/pdf/2307.09288.pdf

    “Stanford CS229 Machine Learning I Naive Bayes, Laplace Smoothing I 2022 I Lecture 6” https://www.youtube.com/watch?v=ADj95edZc0w

  • Considering equations in ML papers

    During the course of the 4th of July I got a chance to read a few PDFs of papers. Being able to write within the academic tone that papers usually have is a skill. Sometimes the papers include great scientifically based research, but are difficult to follow due to being poorly written. In the machine learning space this is one of those things that happens and could be compounded due to the mathematics the author is trying to share. Within the abstract and introduction things will start out on the right academic footing, but then as the mathematics start to get introduced things will veer off into the wild unknown. Most of the mathematics that gets shared within the machine learning space is not a provable theorem or something that you can easily break down and check. Every single time somebody starts to walk me through a series of equations in a paper I start to evaluate the work. Most of the time you cannot check the actual output given that the equations in the paper are implemented as code. Generally, that code is not shared so you cannot work your way backward from the code to the paper or the other way around to figure out what the author did for the actual delivery of the mathematics. 

    The other piece of the puzzle that often worries me is that the equation presented in the paper is theoretical as an implementation and they are using an algorithm built into software that was already written. Within this example the author did not implement the mathematics within the code and probably is not deriving a perfect reflection of equation and implementation in the paper. Being able to run code as a part of a software package and being able to work through the equation using LaTeX or some other package to articulate it within an editor are very different things. I would have to work it out with pen and paper and then bring it over to the paper after the fact. Generally, I would be working with a known transform or algorithm within the machine learning space. It would be unlikely that I would be advancing the equations denoting the mathematical machinations beyond the original efforts. Within the coded implementation I might do something in an applied way that could ultimately be represented as a novel piece of mathematics. However, most researchers would be better off presenting the code vs. trying to transform the code back into a series of mathematical representations within an academic paper. 

    It might very well be a good topic for a research paper to do an analysis of the equations presented in mathematical form in the top 100 machine learning papers by number of citations. It might be interesting to see the overlap in the equations across the paper. Alternatively it might be very illuminating to see if no overlap exists given that it’s possible outside of a shared statistical foundation the researches are not working from a shared mathematical base. A book on the mathematics of machine learning would be interesting to read for sure assuming it built from the basics to the more complex corners of the academy of knowledge surrounding the topic.

  • Always finishing things

    Coming up with ideas and thinking about the future is a lot easier than always finishing things. Mountains of ideas are hard to keep up with and the time commitment to close out something that only took an instant to create can be extreme to finish. Right now I can sketch out the chapters of a book on applied machine learning on a sheet of paper. Actually taking the time to write that book would be a large multiple month commitment of my time. So many people are probably writing that book that it does not seem like a reasonable use of my time at the moment, but it is an example of where a few minutes of work would translate to months of effort to close that effort out. That is why always finishing things is harder than it sounds. You will quickly find your list of potential things to do quickly faces a situation with over-supplied ideas and undersupplied time. That is one of those things that is always the hallmark of having to make choices about our time. We stare out at the perfect possible future and know that only so much can be done in one lifetime. Inherently that is what makes contributions to the academy of academic thought so compelling. You get the chance to contribute to a body of work with intergenerational continuity. Permanence is an interesting thing to associate with an idea, but it is a rather powerful one. Great ideas are sold, stolen, and reused based on their merit. The best ones keep on moving along from thinker to thinker. 

    My time is always something that needs to be better accounted for. It is a scarce resource and applying my time to problems should be done based on some reasonable heuristic. Always finishing things is very time consuming. It is done without any filtering heuristic. Always doing anything is potentially problematic. You have to account for the situation and think about what is actually being done. For the next week or so I’m going to take stock of the things I’m spending my time doing by using some note cards to keep track of the larger blocks of things that are going to be consuming my time. Yesterday I had decided to spend a block of my time reading 2-3 peer reviewed machine learning literature reviews a day until that exercise was exhausted. I’m expecting that the literature review reading will show up on the note cards, but the times when it does not will be insightful as well. It will give me a look at what needed to happen and what happened instead based on how I’m committing my time.  

    Some time later… I went out to Google Scholar and started a search for, “machine learning literature review.” During the search autocomplete suggested that I might be interested in a search for, “machine learning literature survey.” Apparently, both searches are pretty common and I’ll keep that “survey” term in my back pocket for after I read a few literature reviews. After completing that first search the Google search algorithm had a few related searches to suggest that included: machine learning algorithms, pattern recognition machine learning, machine learning mitchell, supervised machine learning, machine learning classification, uci machine learning, machine learning intrusion, and machine learning repository. I can tell the web of ideas that will spill out from reading machine learning literature reviews is going to include a lot of spokes into very specific lines of inquiry. To try to stay as current as possible I applied a filter to only show me articles since 2020. I’ll have to use the more recent publications to work my way back to the more foundational scholarly work on the subject.

    The first 3 articles I encountered based on relevance to the search for articles since 2020 were as follows:

    1. https://arxiv.org/abs/2007.11354v4 This one was free and easy to download. 
    2. https://www.sciencedirect.com/science/article/abs/pii/S0305054820300435 This one cost $39.95 to read and was abandoned. 
    3. https://www.sciencedirect.com/science/article/pii/S0952197619302672 This one was free to download.

  • Thinking about ML industry disruption

    Last night I spent some time working on that virtual presentation for next month. Part of that work was focused on figuring out a better way to share a meaningful narrative about calculating return on investment and aligning that to machine learning endeavors. Typically trying to explain decision making using a return on investment framework is difficult enough even within the right forum of interested listeners. When you start introducing the things that machine learning can do you end up with an entirely different conversation especially within the context of calculating return on investment and ultimately the break even point. In terms of pure disruption to industries the advances being made in machine learning are getting closer to being able to be categorized that way, but for the most part that has not materialized. Autonomous driving is getting close, but the wave of disruption to the transportation industry has not occurred at this time. 

    Instead of wholesale disruption you have a series of very powerful augmentations to workflows and specific tasks have been replaced by either an API call or an automated process. My argument is that you really have to know the inflection point where machine learning efforts will move from augmentation of workflows to disrupting industries. That point in time will be where the technology possibilities frontier (TPC) curve sees a radical outward shift creating disruption for those processes and technologies that now lag behind the new curve position. In the above use case the notion of a production possibilities frontier curve would be considered inadequate to describe the disruption. Advanced machine learning implementations would be able to wholesale replace the previous production elements being described or augment them to the point where at a minimum two curves would be required to describe the possibility shift. 

    You can probably tell that I have been actively thinking about how machine learning will disrupt industries and create a large degree of change. I’m not evaluating any degree of social change caused by the disruption. This analysis at the moment is just about impacts to industry and business in general. Within that claim my focus has been specifically on what business use cases will be the most common and how will those use cases create disruption. I’m trying to figure out where the current bleeding edge of technology when it comes to machine learning will intersect with production use cases at scale. We are starting to see significant implementations of elements of machine learning in workflows, but those elements are augmenting task completion in workflows instead of introducing autonomous action. Maybe my expectation of seeing autonomous action is unreasonable. That could be the case right now and it would mean that my current inquiry is going to fall short of proving any type of hypothesis. Honestly, that is an acceptable proposition. It could just be that within the current technology landscape things have not progressed enough to prove a hypothesis that autonomous action from machine learning is the inflection point to industry disruption. My argument would be that defining a potential inflection point would be enough to set the groundwork for a meaningful research project that makes a contribution to the academy. A better way of saying that is that the research in question would be a significant contribution. Conducting research that does not make any type of contribution to the greater academy of knowledge curation seems like a false start. Maybe that distinction is a line in the sand that is just personally important to me based on allocating my time to something. 

    The entire rest of the day is going to be devoted to working on a series of topics defined by my efforts from last night. Enough progress was made last night describing what needed to be researched that I’m about one good whiteboard session away from being able to build an outline of the best possible version of the presentation that I could give and potentially transition the transcript of that effort into an academic paper or manuscript. This is probably going to be a two step effort where a thirty minute presentation will be delivered and after that the content will need to be essentially replatformed into an academic format. I do think it is very intellectually interesting that such a significant disconnect exists between the formats for presentations and research papers. Both are created to communicate something to an audience. You could distill both types of presentation into the written word and share it that way. A respondent consuming that written word could derive meaning from it and learn something. Strangely enough the academic style research paper is structured very differently from a presentation. Generally speaking if you got up and started to read an academic paper published in a prestigious journal to an audience at a conference that was aligned to the topic you would run out of time and the goal of successfully communicating content might not be achieved. You would run out of time and your literature review and presentation of research methods would probably have eaten up your entire 30-45 minute presentation time. 

    —–

    My adventure with editing video from my new Sony ZV-a camera has gotten off to a rocky start. Apparently, thanks to this dialogue box I just found out that, “Your version of PowerDIrector doesn’t support this feature.” The very basic thing I was trying to do was drag and drop a 4K video clip into the editor interface. It appears I’m going to have to download some other version of PowerDirector and see what happens. Right now PowerDirector 365 is downloading. During the installation process I got an error that the other version of PowerDirector is running and that it must be shutdown before I can retry the installation. That was easy enough to fix. Using the Android application version was much easier to manage. This time around I had to buy the software and install some application manager which installed the software for a third time on my computer today. Yeah… that was exciting. I’m going to have to make sure that the copies replaced each other and I don’t have 3 different installation folders on my application hard drive. I use a disk separate from my storage space and the operating system to stage software installations. I’m not sure how smart of a strategy that is to employ, but at the moment it works well enough. After loading the software this time around the application did optimize for GPU encoding. That took about 2 minutes of analyzing and I’ hoping it was beneficial.   

    I’m now going to paste files from C0021 to C0124 in chronological order into the new PowerDirector 365 project and start the editing process. Within my installation of Windows 10 I was able to copy all the files from the harddrive and paste them into the project at one time instead of having to do it one video at a time. This effort moved 105 files into the timeline and made the video one hour and three minutes long. We will see what happens to the runtime as the editing continues. The files were pasted into the timeline a little out of order. I ended up removing them from the timeline and adding them from the video selection panel using a cut and paste. This worked fine and clips C0021 to C0124 were in order. I’m exporting them right now into a single MP4 file. It looks like the 4K video export process with GPU acceleration will take about 45 minutes to complete. The original files were stored in an MP4 format by the Sony ZV-1 camera and took up 63.1 gigabytes on the memory card. I must have done something wrong in the export process. The file that was exported reduced the file size to 23.1 gigabytes. That means the editing process crunched out about two thirds of the data from the original files. 

    That video size problem took a few minutes to figure out. My original produce file format export had used the H.265 HEVC format with a setting of MPEG-4 4k 3840 x 2160/30p (37 Mbps). Picking HEVC was not the right codec to select based on the original video format. The Sony ZV-1 was recorded using an MP4/XAVC S UHD 4K (3840 x 2160) encoding. It turns out in PowerDirector I needed to pick XAVC S and select the XAVC S 3840 x 2160/30p profile name/quality setting to better match the original content. I’ll give that an export later today to see what happens to the file size. That upload to YouTube of the unedited export in H.265 HEVC will take over an hour. I was able to do the full export using the right quality setting and it still crunched down the original files from 63.1 gigabytes to 38.9 gigabytes. The size reduction was better, but the overall size of the files still was reduced heavily. I’m curious to see if any difference is actually visible on my monitor between the two files after they are uploaded to YouTube. 

  • Taking a two hour exam wore me out today

    Taking the day off was a great idea. Every now and again having a Wednesday off is great. Part of the day was devoted to taking the AWS certified machine learning specialty beta exam. The whole process took about two hours and was very interesting. The PSI system took a little bit to setup and get running. The actual exam part took about 90 minutes. It has been a bit since my last adventure to a testing facility. It was pretty much exactly the way I remember it being.

  • Falling asleep during an epic studying session

    It has been some time since I last fell asleep during an epic studying session. It was probably back in graduate school. Those days were fun, but they seem like forever ago. Let me set the state for you a little bit for a moment. My Dell ultra wide monitor was playing some AWS videos on one side and a document was open on the other half of the monitor. My entire focus was on what the presenter was saying then all of a sudden my hands hit the keyboard and my attention jerked back into focus. It had happened all of a sudden. Sure enough for a minute or two I had fallen asleep during some AWS training videos on my day off in the middle of the day. Maybe the right way to look at it is to assume my cup was full and it was time for a nap. Perhaps it was an unplanned power nap. It was most definitely not part of my machine learning and artificial intelligence learning plan for the day. Today was a day that was entirely devoted to learning and studying. That was what made it such an interesting day. It was full of possibility. Oddly enough, it also was a day that that included an impromptu nap.

  • Today was a day without a ton of machine learning classes

    For some reason today was for better or worse devoted to watching some football. This Saturday was full of college football conference championship games. To that end, today was a day without a ton of machine learning classes. Throughout the last year I have been listening to a variety of Dune books. Audiobooks are interesting, but they do tend to distract me at the end of the day. Sometimes a little bit of distraction is required. Maybe that little bit might be more than what my Pandora internet streaming stations could provide. To that end sometimes listening to an audiobook was the right way to shift my thoughts to something different before falling asleep. A ton of the Google Cloud Platform and AWS content has been consumed in that hour or so before falling asleep. Trading out my relaxation time for some deeper learning was the right thing to do. It was something that helped me power forward toward a deeper understanding of machine learning. So much artificial intelligence related content is now available mostly for free or a nominal charge.

    Tonight, I finished listening to the last hour of the 2016 audiobook, “Navigators of Dune.” It was mostly derivative and the plotlines were shallower than the classic story told by Frank Herbert. That does not really make it bad content, but it does help explain how it is a lesser contribution to the world of science fiction novels. I’ll need to pick another audio book collection sometime this month. Within the Google Books application a few suggestions have popped up, but I am not entirely sure what direction I want to go with my listening adventures.

  • Thinking about this new AWS DeepRacer announcement

    All of my spare time is being devoted to working on AWS training and certification this week. The one class that really caught my attention was the course, “Seeing Clearly: Computer Vision Theory.” With the announcement of the new AWS DeepRacer and corresponding league it seemed like a good thing to think about and dig into today. Digging in is the fun part of being a lifelong learner. I’m not entirely sure how I feel about the DeepRacer announcement. It is a good method to help build models. It sounds like a very interesting thing to push forward models at an accelerated rate. Seeing what happens will be pretty interesting throughout the next year.

    This whole thing looks like it would be fun to do with my first grader. Maybe that would be a good enough reason to buy the racer car and start building models. I really do think this is a method to get people to produce a bunch of distributed models to farm out the work without having to pay top talent. It is a pretty good strategy to get a market edge or to in some ways change the market. People would probably watch this type of racing league.

  • Apparently Qwiklabs has about 35 free hands on demos you can do

    I just did the “Introduction to Amazon Machine Learning” hands-on demo from Qwiklabs for free. Apparently, Qwiklabs has about 35 free hands on demos that you can do right now for fun to learn and grow your skills. That as you might have already guessed is pretty darn cool and a great opportunity to sharpen your skillset. You can login to Qwiklabs –> Catalog –> Filter: Price –> Free. That should let you check out what hands-on labs might inspire you to start learning today… If that does not inspire you to start digging into the world of machine learning I do not know what will. It is fairly amazing that we have access to free online hands-on labs. Labs are one of the best ways to really see the technology in action. Sure, you can watch a demo, but that type of learning is not the same opportunity. Being able to really dig in and poke around is what makes a hands-on lab so impactful.

  • Really digging into those AWS machine learning specialty courses

    You are going to be totally surprised. Yeah – you are probably not going to be surprised at all based on my post yesterday. All of my free time today was spent watching AWS machine learning videos. I really started to dig into those videos and all the content that is now online for free. My honest opinion is that the content from Coursera on the Google Cloud Platform was more dynamic and the combination of constant quizzes and hands-on labs really helped me dig in and absorb the material. However, given that the AWS machine learning content is free and organized pretty well to be highly consumable it works. My plan is to take on every single bit of content they made available. That is about 30 courses and 45 hours of material. The one thing that I have noticed so far is that you can only listen to the content at 1x speed. That might not seem like a very big deal, but normally I listen to lectures in fast forward. That is how I like to go about things. Instead of listening to music in the morning and at night I’m powering through machine learning content. Focusing in on machine learning and improving my skillset has been pretty rewarding.

    The AWS training and certification learning library is sorted into domains and a few other filters. Sorting down to the machine learning domain will reduce the learning library to 92 items. At the moment, I have completed 17 of the 92 items. That is not a bad start. I’m not entirely sure how long it will take me to power through all of that content. Some of the items are more involved than others. That is probably a good start toward consuming the whole learning library of 393 items. Some of them looking interesting, but I am willing to bet that the machine learning related items hold my attention better than any of the general items. Based on my recent laser focus on machine learning investing the time to finish the 92 items probably makes sense. They are free and a little bit of training every night is pretty much the path I am electing to walk down.