/udacity-microservices

Operationalize a Machine Learning Microservice API.

Primary LanguagePython

AlisonDavey

Project Overview

This project uses skills from the Udacity Cloud Devops Nanodegree course to operationalize a Machine Learning Microservice API.

Model: a pre-trained, sklearn model that has been trained to predict housing prices in Boston according to several features, such as average rooms in a home and data about highway access, teacher-to-pupil ratios, and so on. The data was initially taken from Kaggle, on the data source site. This project operationalizes a Python flask app—in a provided file, app.py—that serves out predictions (inference) about housing prices through API calls. This project could be extended to any pre-trained machine learning model, such as those for image recognition and data labeling.

Project Tasks

Project goal: operationalize this working, machine learning microservice using kubernetes, which is an open-source system for automating the management of containerized applications.

Activities:

  • Test the project code using linting
  • Complete a Dockerfile to containerize this application
  • Deploy the containerized application using Docker and make a prediction
  • Improve the log statements in the source code for this application
  • Configure Kubernetes and create a Kubernetes cluster
  • Deploy a container using Kubernetes and make a prediction
  • Upload a complete Github repo with CircleCI to indicate that the code has been tested

Detailed project rubric, here.


Setup the Environment

  • Create a virtualenv and activate it
  • Run make install to install the necessary dependencies

Running app.py

  1. Standalone: python app.py
  2. Run in Docker: ./run_docker.sh
  3. Run in Kubernetes: ./run_kubernetes.sh

Kubernetes Steps

  • Setup and Configure Docker locally
  • Setup and Configure Kubernetes locally
  • Create Flask app in Container
  • Run via kubectl