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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file bodywork-0.2.13.tar.gz.

File metadata

  • Download URL: bodywork-0.2.13.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

File hashes

Hashes for bodywork-0.2.13.tar.gz
Algorithm Hash digest
SHA256 814c97fb076dcdee1090d125230c3c020e83b74044a6115a7d326b3afca10e36
MD5 1e64e82e956e95aa4198780857e018f6
BLAKE2b-256 2b4723a8511212cf63da1b704a69c0a9b969ee6bf55104ca4f36d55eda914f07

See more details on using hashes here.

File details

Details for the file bodywork-0.2.13-py3-none-any.whl.

File metadata

  • Download URL: bodywork-0.2.13-py3-none-any.whl
  • Upload date:
  • Size: 60.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

File hashes

Hashes for bodywork-0.2.13-py3-none-any.whl
Algorithm Hash digest
SHA256 5f3e7c70902400aaeac332de69f83c33ce87aee70f47c894e0831ea683742130
MD5 2bdbe169e8d8a7a1245d5b99f57bb5dd
BLAKE2b-256 44920d868aee5c23469879dedf8b4b55e498d720ae53374827895ec1af1c67c5

See more details on using hashes here.

Supported by

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