1 Lecture 13: Serving, Hosting, and Deploying Models and Quality Control

GitHub CI Python Wheel Docker ReadTheDocs Huggingface

1.1 Introduction

"Lecture 13: Serving, Hosting, and Deploying Models and Quality Control"

This repository holds the lecture materials for the Computer Vision for Ecology workshop at CalTech. The goal of this lecture is to describe how to deploy a machine learning model for others to use, and how best to perform quality control.

The associated slides for this lecture can be viewed by clicking on the image above.

1.2 How to Install

You need to first install Anaconda on your machine. Below are the instructions on how to install Anaconda on an Apple macOS machine, but it is possible to install on a Windows and Linux machine as well. Consult the official Anaconda page to download and install on other systems. For Windows computers, it is highly recommended that you intall the Windows Subsystem for Linux.

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Anaconda and expose conda to the terminal
brew install anaconda
export PATH="/opt/homebrew/anaconda3/bin:$PATH"
conda init zsh
conda update conda

Once Anaconda is installed, you will need an environment and the following packages installed

# Create Environment
conda create --name cv4e
conda activate cv4e

# Install Python dependencies
conda install pip

conda install -r requirements.txt
conda install pytorch torchvision -c pytorch-nightly

1.3 How to Run

The lecture materials will run as a single executable. The MNIST dataset must be downloaded from the internet for this script to run correctly, so Internet access is required at first to download the files once. It is recommended to use ipython and to copy sections of code into and inspecting the

# Run the training script
cd cv4e_lecture13/
python train.py

# Run the live demo
python app.py

1.4 Docker

The application can also be built into a Docker image and hosted on Docker Hub.

docker build . -t bluemellophone/cv4e:lecture13
docker push bluemellophone/cv4e:lecture13

To run:

docker run \
   -it \
   --rm \
   -p 7860:7860 \
   --name cv4e \
   bluemellophone/cv4e:lecture13

1.5 Unit Tests

You can run the automated tests in the tests/ folder by running pytest. This will give an output of which tests have failed. You may also get a coverage percentage by running coverage html and loading the coverage/html/index.html file in your browser. pytest

1.6 Building Documentation

There is Sphinx documentation in the docs/ folder, which can be built with the code below:

cd docs/
sphinx-build -M html . build/

1.7 Logging

The script uses Python’s built-in logging functionality called logging. All print functions are replaced with log.info within this script, which sends the output to two places: 1) the terminal window, 2) the file lecture.log. Get into the habit of writing text logs and keeping date-specific versions for comparison and debugging.

1.8 Code Formatting

It’s recommended that you use pre-commit to ensure linting procedures are run on any code you write. (See also pre-commit.com)

Reference pre-commit’s installation instructions for software installation on your OS/platform. After you have the software installed, run pre-commit install on the command line. Now every time you commit to this project’s code base the linter procedures will automatically run over the changed files. To run pre-commit on files preemtively from the command line use:

git add .
pre-commit run

# or

pre-commit run --all-files

The code base has been formatted by Brunette, which is a fork and more configurable version of Black (https://black.readthedocs.io/en/stable/). Furthermore, try to conform to PEP8. You should set up your preferred editor to use flake8 as its Python linter, but pre-commit will ensure compliance before a git commit is completed. This will use the flake8 configuration within setup.cfg, which ignores several errors and stylistic considerations. See the setup.cfg file for a full and accurate listing of stylistic codes to ignore.

1.9 See Also

1.10 Troubleshooting

If you experience issues running the gradio app on macOS, try the following:

brew install openssl

Note

This project is under active development.

1.11 Contents