This booklet covers four main steps of designing a machine learning system:
- Project setup
- Data pipeline
- Modeling: selecting, training, and debugging
- Serving: testing, deploying, and maintaining
It comes with links to practical resources that explain each aspect in more details. It also suggests case studies written by machine learning engineers at major tech companies who have deployed machine learning systems to solve real-world problems.
At the end, the booklet contains 27 open-ended machine learning systems design questions that might come up in machine learning interviews. The answers for these questions will be published in the book Machine Learning Interviews. You can look at and contribute to community answers to these questions on GitHub here. You can read more about the book and sign up for the book's mailing list here.
To read the booklet, you can clone the repository and find the HTML and PDF versions in the folder build
.
This is work-in-progress so any type of contribution is very much appreciated. Here are a few ways you can contribute:
- Improve the text by fixing any lexical, grammatical, or technical error
- Add more relevant resources to each aspect of the machine learning project flow
- Add/edit questions
- Add/edit answers
- Other
This book was created using the wonderful magicbook
package. For detailed instructions on how to use the package, see their GitHub repo. The package requires that you have node
. If you're on Mac, you can install node
using:
brew install node
Install magicbook
with:
npm install magicbook
Clone this repository:
git clone https://github.com/chiphuyen/machine-learning-systems-design.git
cd machine-learning-systems-design
After you've made changes to the content in the content
folder, you can build the booklet by the following steps:
magicbook build
You'll find the generated HTML and PDF files in the folder build
.
I'd like to thank Ben Krause for being a great friend and helping me with this draft!