Introduction

What’s this?

Noronha is a framework that hosts Machine Learning projects inside a portable, ready-to-use DataOps architecture. The goal here is to help Data Scientists benefit from DataOps practices without having to change much of their usual work behavior.

Overview

The following steps and the diagram bellow describe together the basic training and deploying workflow of a Machine Learning project inside Noronha:

  1. Noronha’s base image is used as a starting point to provide the tools a project needs to run inside the framework.

  2. The project is packed in a Docker image with its dependencies, a training notebook and a notebook for inference.

  3. Every training is a parameterized execution of the training notebook, inside a container of the project’s image.

  4. Every model version produced is published to a versioning system in which MongoDB stores metadata and a file manager like Artifactory stores raw files and binaries.

  5. When deploying a model, containers of the project’s image are created for running the inference notebook as a service. Every asset necessary is injected into the containers.

_images/workflow.png

Pre-requisites

To use Noronha in its most basic configuration all you need is:

For a more advanced usage of the framework, see the configuration guide.

Installation

You can easily install Noronha by activating your Conda environment and running the following commands:

pip install noronha-dataops

nha get-me-started

This assumes you’re going to use the default plugins (MongoDB and Artifactory) in native mode (auto-generated instances). To use plugins differently, see the configuration guide.

Basic usage

Let’s start with the simplest project structure:

project_home:
+-- Dockerfile
+-- requirements.txt

This is what the Dockerfile may look like:

# default public base image for working inside Noronha
FROM noronhadataops/noronha:latest

# project dependencies installation
ADD requirements.txt .
RUN bash -c "source ${CONDA_HOME}/bin/activate ${CONDA_VENV}  && conda install --file requirements.txt"

# deploying the project's code
ADD . ${APP_HOME}

Now record your project’s metadata and build it:

nha proj new --name my-proj
nha proj build --tag develop

Then, run the Jupyter Notebook interface inside your project’s image for editing and testing code:

nha note --edit --tag develop

For fully-working project templates and end-to-end tutorials, see the examples directory.