O'Reilly logo
live online training icon Live Online training

Minimum Viable Machine Learning

Graduating your models out of Jupyter and into Production

Max Humber

You’ve built a cool model. But it’s stuck inside of a Jupyter notebook. Now what? You know that you want to get it in front of users… but you don’t quite know how. Don’t fret! You’re in good company. Breaking free of the Jupyter Notebook seems like a daunting task. But it actually doesn’t have to be that complicated!

In Minimum Viable Machine Learning, Max Humber will teach you how to deploy a machine learning model to Heroku, a popular Platform-as-a-Service (PaaS) with an awesome free tier. You'll also learn how to take the next step and deploy applications to DigitalOcean, an inexpensive general cloud provider.

What you'll learn-and how you can apply it

By the end of this live, hands-on, online course, you’ll understand:

  • Just enough HTML/CSS to create an MVP for a data model
  • How to choose between a PaaS and a cloud provider and how to deploy to both
  • Reasons for making the development cycle as simple as possible

And you’ll be able to:

  • Use TravisCI for continuous deployment
  • Containerize data applications with Docker
  • Write templates that auto generate HTML code

This training course is for you because...

  • You know Python but you don’t know how to get your code in front of users
  • You’re a Data Scientist/Data Engineer who works with Jupyter notebooks regularly
  • You haven’t had time to learn front-end web development


  • Experience with Python, pandas and scikit-learn
  • Experience with Flask will be helpful, but is not required

Recommended preparation:

Recommended follow-up:

Read Chapters 1 and 2 of Flask Web Development, 2nd Edition (book)

About your instructor

  • Max is a Lead Instructor at General Assembly and the author of Personal Finance with Python. He was the first Data Scientist at Borrowell and the second Data Engineer at Wealthsimple.


The timeframes are only estimates and may vary according to how the class is progressing

Introduction (5 minutes)

  • Who am I, and who are you?
  • The problem with Jupyter
  • Learning Agenda

Model Preparation (25 minutes)

  • Introduce the model scaffold to productize
  • Effective git in the model development cycle
  • Saving and pickling models
  • Exercise: Create a git new branch to manage new changes
  • Q&A (5 minutes)

App Development with Flask (30 minutes)

  • Beyond Flask Hello World
  • Templates and the bare minimum amount of HTML/CSS
  • Effective Jinja2 hacks
  • Plug in the machine learning model
  • Exercise: Render the model behind an HTML page with jinja2
  • Break (5 minutes)

Deploying to a PaaS (20 minutes)

  • Setup and configure Heroku
  • Connect a git repo to Heroku
  • Configure continuous deployment with Travis
  • Connect a custom domain name to Heroku
  • Exercise: Deploy to Heroku with Travis CI
  • Q&A (5 minutes)

Deploying to a Cloud Provider (20 minutes)

  • Setup and configure DigitalOcean
  • Configure server and nginx
  • Dockerize your data application
  • Deploy to the cloud
  • Exercise: Dockerize a machine learning app

Conclusion + Q&A (5 minutes)