September 1, 2023 - Alex Strick van Linschoten - 3 mins read
Last updated: September 1, 2023
We’re excited to launch the new
mlstacks Python package. MLStacks builds on
the work done to create Stack Recipes, allowing you to quickly spin up MLOps
infrastructure using Terraform. It is designed to be used with ZenML, but can be
used with any MLOps tool or platform.
You can use
mlstacks directly as a Python package, deploying infrastructure
with the CLI after defining your stacks in YAML. Alternatively, you can let
ZenML handle writing the stack and component specification files by using the
ZenML CLI to define which components you want to deploy. We currently support
modular MLOps stacks on AWS, GCP and K3D (for local use).
We reworked the previous way of doing things to be more stable and reliable. We even added new features like the ability to get a cost estimate for your MLOps stacks.
We were inspired by the work done by the FuzzyLabs team on Matcha as well as by
conversations with users of the old
mlops-stacks repository / functionality.
In that spirit, MLStacks is also designed to be able to work as a standalone deployment
option independent of ZenML. All of this is available in the new
Python package and with ZenML’s latest release (0.44.1).
mlstacks directly you’ll want to create .yaml files to define your
stack and the individual components in your stack. (Examples of how to do this
can be found in the dedicated
mlstacks with ZenML is easier as you aren’t required to define your
stacks and components in .yaml files; ZenML handles all of that for you. As a
quick example, you can run:
zenml stack deploy -p gcp -a -n my_mlstacks_stack -r us-east1 -t env=dev -x bucket_name=my-new-bucket -x project_id=zenml
This would deploy a stack to GCP that has an artifact store created for you in
us-east1 region. It will also import that stack (with the name
my_mlstacks_stack) into ZenML ready for you to use.
Most of the examples shown here are fairly simple as they allow you to try things out without needing to wait for too long or to incur significant cloud costs, but you’re encouraged to try it out for stacks that suit your needs!
MLStacks works by taking stack and component specification files and parsing
them into Terraform files which are in turn deployed to your cloud (or local, in
the case of
k3d) infrastructure. Our Python package will validate your
specification files to ensure that you’re not using invalid or unsupported
combinations of components.
If you find something that we don’t yet support but that you need for your work, we encourage you to contribute to the project!
mlstacks through ZenML, you don’t have to do the work of writing
the stack specification .yaml files. You simply need to compose the CLI command
that specifies which components you need in your stack.
We’re working to provide other (easier) ways to deploy your infrastructure using
ZenML but for now CLI deployments offer all the flexibility of the
package without the need to write your own stack and component specifications!
We encourage you to try out
mlstacks and to deploy MLOps stacks, either
through ZenML or by writing your own stack specifications. Full guides for both
options are available in our documentation:
mlstacksdirectly and see how easy it is to specify your stacks using the .yaml specification files, check out one of our QuickStart guides appropriate to your favorite cloud platform (or use the
k3dguide to test deployment locally)