Bodywork is a simple framework for machine learning engineers to run model-training workloads and deploy model-scoring services, in containers on Kubernetes. It is built by machine learning engineers, for machine learning engineers. It automates the repetitive tasks that most machine learning engineers think of as DevOps, allowing them to focus on what they do best - machine learning.
Bodywork uses Kubernetes for running machine learning workloads and services, because we believe that Kubernetes comes shipped with all the resources required for building an effective Machine Learning Operations (MLOps) platform.
Running machine learning code in containers has become a common pattern to guarantee reproducibility between what has been developed and what is deployed in production.
The process of containerising machine learning code using Docker to build images, pushing the build artefacts to an image repository and then configuring a container orchestration platform to run batch workloads and deploy services, requires skills and expertise that most machine learning engineers do not have the time (and often the desire) to learn.
Scale this scenario to one where there are multiple models to worry about, all needing to be re-trained and re-deployed, and it is easy to see how quickly the management of these pipelines will become a large and undesirable burden.
This is where the Bodywork MLOps framework steps-in - to take care of delivering your code to the right place and executing it at the right time, so that your models are always trained, deployed and available.
Bodywork is a tool built upon the Kubernetes container orchestration platform and is aimed at machine learning engineers to help them:
- Continuously deliver code - for training models and defining model-scoring services. Bodywork containers running on Kubernetes will pull code directly from your project's Git repository, removing the need to build-and-push your own container images.
- Automate deployments - of batch workloads and model-scoring services, using the Bodywork workflow-controller to orchestrate end-to-end machine learning workflows on Kubernetes.
Kubernetes is available as a managed service from all major cloud computing platforms.
Before you start exploring what Bodywork can do for you, you will need:
- access to a Kubernetes cluster - either locally using minikube or Docker-for-desktop, or as a managed service from a cloud provider, such as EKS on AWS or AKS on Azure.
- a GitHub account.
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.
The official documentation for bodywork-core can be found here. This is the best place to start.
If you:
- have a question that these pages haven't answered, then please ask a question on our forum.
- have found a bug, then please open an issue.
- would like to read the Bodywork source code, then you can find it here.
- 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