I’ve been looking for a good ML course and found the Practical Deep Learning course by Jeremy Howard. A few days later, purely by chance, I heard about Jeremy Howard on the Lex Fridman podcast. It turns out Howard is a prominent figure in the AI world and a highly effective educator, which reassured me that I had made a good choice in selecting this course.

I absolutely love Jeremy’s top-down approach to learning. In the first lecture, he jumps straight into Python code and shows how to create a program that detects whether an image contains a bird or not. Later on in the course, he gradually introduces all the theory. I find this approach very inspiring. He introduces other topics in a similar way and the process repeats. This way, he keeps curiosity levels up while teaching the important theoretical concepts.

fast.ai

fast.ai is a Python library. Its mission is “Making neural nets uncool again”. It does a good job of hiding the underlying complexity of PyTorch, NumPy, Pandas, Matplotlib and other “cool” libraries.

The fast.ai authors also did a great job by automating routine operations, such as image downloading, file operation, image operations and many more. This makes fast.ai a great choice for people who want to quickly get a taste of AI.

Interestingly, throughout the course, when Jeremy wants to go deeper on a concept, he shows how tasks can be done using PyTorch and NumPy, without involving fast.ai.

Observations

I’m a .NET guy, who only occasionally does stuff in Python and I like running stuff on my machine, which is currently a Mac with an Apple Silicon chip. I managed to set up fast.ai, however the amount of work it took me to do that is wild. It’s explainable, since Python was never designed to perform intensive computations and work closely with hardware, which is what is required for ML. Python adapts to these challenges by splitting itself and delegating high-performance computations to low-level libraries written mostly in C. This split complicates many things such as deployment, debugging, platform, and hardware integration. No wonder why systems that provide a virtualized environment with GPU servers are so popular. Kaggle, Colab, Paperspace Gradient, or SageMaker Studio Lab.

There is hope on the horizon - Mojo. It is in the early stages of development, but I think it’ll complete the mission “Making neural nets uncool again”.

Iteration time. A friend of mine told me a story about a computer scientist who had been spending a lot of time walking through a building while waiting for his model to train. I found that a lot of unnecessary waiting is avoidable by splitting the program into steps: download, fine-tune, classify. For each step, there is an opportunity to speed it up. For example, in the download, I can choose the number of images, in fine-tuning I can choose a smaller model or number of iterations. Classification is already fast.

Final thoughts

It is a great fortune that a course like this is freely available. I’ll keep you posted.