Practical Deep Learning for Coders is a terrific free course offered by fast.ai, but it doesn’t exactly hold your hand. I’m an experienced C++ and Python coder, but I found myself puzzling over a few things at the start. Hopefully this helps you get going quickly!

Watch Lesson 0

I didn’t see it linked from the course site, but I found it on YouTube, and it contains all kinds of useful background:

Practical Deep Learning for Coders Lesson 0

Notebooks

The course lectures make heavy use of Python notebooks, which are a cross between an IDE and a lab notebook. They allow you to interactively iterate with your code, and annotate it with text and graphics.

Kaggle, Google Colab, and Paperspace Gradient are hosted services that offer notebooks running on managed hardware hardware, and are definitely the fastest and easiest way to get going with the course. All three provide a free tier (some with GPUs), which may be all you need for the course, and the option to pay for enhanced services like increased runtime quotas and more powerful GPUs. Each has a slightly different UI, CPU/GPU hardware, and pricing.

Paperspace + Fast.AI Paperspace + Fast.AI runtime, with all the textbook chapters

The recommendation as of this writing is to use Paperspace Gradient, which has a fast.ai ‘runtime’ that’s preloaded with the course textbook’s chapters in notebook form, as well as convenient persistent storage for data files and the like.

Do I have to use a notebook?

No! If you prefer, you can develop and run fastai code in the IDE of your choice, or use the command-line interpreter. In fact, in the second lesson you’re going to be creating a standalone Python program from your notebook for deployment, so some familiarity with “standard” Python tooling will be handy.

If you don’t own a supported GPU, hosted notebooks are an easy way to get access to one, but for ultimate flexibility, configure an AWS instance and run the tooling of your choice.

One downside of using notebooks that’s worth noting is that code cells can be executed in any order, so you might have issues with repeatability.

Jupyter

The gold standard of notebooks is Jupyter Notebooks, an application which you can install on your own computer. You’ll need a working Python environment, and you’ll have to manage dependencies and navigate the complexities of Python environment and package management (pip? conda? mamba?). You interact with Juptyer via a browser, just like the hosted services described above, but generally the server is localhost – the port is 8888 by default, i.e. http://localhost:8888.

So why would you want to install Jupyter, given the additional complexity? There are a few possibile reasons that I can think of:

  • You have your own high-powered GPU that you want to take advantage of.
  • You want to install Jupyter extensions such as nbdev for coding in a notebook, or fastpages for blogging. Jeremy discusses several extensions during the lectures, but these don’t apply to the hosted services AFAIK.
  • You need more control over the environment, i.e. you use proprietary Python code or data that can’t be uploaded to hosted services.
  • Other reasons I haven’t thought of? Please comment below.

Finally, you can use an AWS instance to run Jupyter on a cloud GPU if you don’t have a supported model.

Finish it!

Hopefully this helps you navigate some of the tradeoffs about which tooling to use, so that you can choose an environment that’s comfortable and productive for you. Be sure to share your own experiences with this great course to help others along the way!