A simple way for getting started with fast.ai for pytorch
At my AI course in the University of Oxford, we are exploring the use of PyTorch for the first time.
One of the best libraries to get started with PyTorch is fast.ai.
There are various ways to learn fast.ai.
For most people, the fast.ai course is their first exposure.
There is now a book which I recently bought Deep Learning for Coders with fastai and PyTorch By Jeremy Howard and Sylvain Gugger
However, there is also a paper by the creators.
I found this paper as a concise starting point fastai: A Layered API for Deep Learning
In this post, I use the paper to provide a big picture overview of fast.ai because it helped me to understand the library in this way.
fastai is a modern deep learning library, available from GitHub as open source under the Apache 2 license. The original target of the API was for beginners and also practitioners who are interested in applying pre-existing deep learning methods. The library offers APIs targeting four application domains: vision, text, tabular and time-series analysis, and collaborative filtering. The idea here is to choose intelligent default values and behaviors for the applications.
While the high level API is targeted at solution developers, the mid-level API provides the core deep learning and data-processing methods for each of these applications. Finally, the low-level APIs provide a library of optimized primitives and functional and object-oriented foundations, which allows the mid-level to be developed and customised.
Mid level APIs include functions like Learner, Two-way callbacks, Generic optimizer, Generalized metric API, fastai.data.external, funcs_kwargs and DataLoader, fastai.data.core, Layers and architectures
The low-level of the fastai stack provides a set of abstractions for: Pipelines of transforms, Type-dispatch, GPU-optimized computer vision operations etc
Finally, there is a programming environment called nbdev, which allows users to create complete Python packages.
The Mid level APIs are a key differentiator for fast.ai because it allows more developers to customise the software in contrast to a small community of specialists.
To conclude, the carefully layered design makes fast.ai highly customizable (especially the mid level API) enabling more users to build their own applications or customize the existing ones.
Image source: fast.ai