Skip to main content

MLOps framework for running model-training workloads and deploying model-scoring services on Kubernetes.

Project description


Bodywork deploys machine learning projects developed in Python, to Kubernetes. It helps you to:

  • serve models as microservices
  • execute batch jobs
  • run reproducible pipelines

On demand, or on a schedule. It automates repetitive DevOps tasks and frees machine learning engineers to focus on what they do best - solving data problems with machine learning. If this sounds like a useful tool, then please give us a GitHub Star ★

Documentation

The documentation for bodywork-core can be found here. This is the best place to start.

Deployment Templates

To accelerate your project's journey to production, we maintain a set of deployment templates for common use-cases:

Where does Bodywork Fit?

Bodywork is aimed at teams who want to deploy their machine learning projects in Docker containers. Bodywork delivers your project's Python modules directly from your Git repository, into containers and manages their deployment to a Kubernetes cluster.

Where do I Install Bodywork?

Bodywork is distributed as a Python package that exposes a command line interface for configuring your Kubernetes cluster to run Bodywork deployment projects. Using it, a pipeline hosted on GitHub can be scheduled to run every evening, with just one command,

bodywork_cronjob_create

What does Bodywork Do?

When Kubernetes runs a Bodywork project, it deploys pre-built Bodywork containers that clone your project's Git repository and run the Python modules within it - each one defining a stage of your pipeline. At no point is there any need to build Docker images, push them to a container registry or trigger a deployment.

This process is shown below for an example train-and-serve pipeline with two stages: train model (as a batch job), then serve the trained model (as a microservice with a REST API).

bodywork_diagram

Bodywork as CI/CD Platform for Machine Learning

Because Bodywork can run deployments on a schedule, each time cloning the latest version of your codebase in the target branch, this system naturally forms an end-to-end CI/CD platform for your machine learning project, as illustrated below.

cicd

This is the GitOps pattern for cloud native continuous delivery.

Key Features

  • continuously deploy - batch jobs, model-scoring services as well as complex ML pipelines, using pre-built Bodywork containers to orchestrate end-to-end machine learning workflows.
  • resilient deployments - Bodywork handles automatic retires for batch jobs and for service deployments it will manage automatic roll-backs without any downtime.
  • horizontal scaling - Bodywork can back your service endpoints with multiple container replicas to handle high volumes of traffic.
  • no new APIs to learn - Bodywork does not require you to re-write your machine learning projects to conform to our view of how your codebase should be engineered. All you need to do is provide executable Python modules for starting services and running batch jobs.
  • no cloud platform lock-in - Bodywork deploys to Kubernetes clusters, which are available as managed services from all major cloud providers. Kubernetes is indifferent to where it is running, so changing cloud provider is as easy as pointing to a different cluster.
  • written in Python - the native language of machine learning and data science, so your team can have full visibility of what Bodywork is doing and how.
  • open-source - Bodywork is built and maintained by machine learning engineers, for machine learning engineers, who are committed to keeping it 100% open-source.

Bodywork brings DevOps to your machine learning projects and will form the basis of your Machine Learning Operations (MLOps) platform. It will ensure that your projects are always trained with the latest data, the most recent models are always deployed and your machine learning systems remain highly-available.

Requirements

Before you start exploring what Bodywork can do for you, you will need:

Familiarity with basic Kubernetes concepts and some exposure to the kubectl command-line tool will make life easier. We recommend the first two introductory sections of Marko Lukša's excellent book Kubernetes in Action, or the introductory article we wrote on Deploying Python ML Models with Flask, Docker and Kubernetes.

If you need help with any of this, then please don't hesitate to contact us and we'll do our best to get you up-and-running.

Contacting Us

If you:

  • have a question that these pages haven't answered, or need help getting started with Kubernetes, then please use our discussion board.
  • have found a bug, then please open an issue.
  • would like to contribute, then please talk to us first at info@bodyworkml.com
  • would like to commission new functionality, then please contact us at info@bodyworkml.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bodywork-0.2.13.tar.gz (32.3 kB view hashes)

Uploaded Source

Built Distribution

bodywork-0.2.13-py3-none-any.whl (60.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page