Giter Site home page Giter Site logo

mlops-stacks's Introduction

๐Ÿ‘จโ€๐Ÿณ Open Source MLOps Stack Recipes

When we first created ZenML as an extensible MLOps framework for creating portable, production-ready MLOps pipelines, we saw many of our users having to deal with the pain of deploying infrastructure from scratch to run these pipelines. The community consistently asked questions like:

  • How do I deploy tool X with tool Y?
  • Does a combination of tool X with Y make sense?
  • Isn't there an easy way to just try these stacks out to make an informed decision?

To address these questions, the ZenML team presents you a series of Terraform-based recipes to quickly provision popular combinations of MLOps tools. These recipes will be useful for you if:

  • You are at the start of your MLOps journey, and would like to explore different tools.
  • You are looking for guidelines for production-grade deployments.
  • You would like to run your pipelines on your chosen ZenML Stack.

๐Ÿ”ฅ Do you use these tools or do you want to add one to your MLOps stack? At ZenML, we are looking for design partnerships and collaboration to implement and develop these MLOps stacks in a real-world setting.

If you'd like to learn more, please join our Slack and leave us a message!

๐Ÿ“œ List of Recipes

Recipe Tools installed Description
aws-kubeflow-kserve Kubeflow on EKS, S3, ECR, RDS, MLflow Tracking, Kserve A recipe that creates a Kubeflow pipelines cluster as orchestrator, S3 artifact store, ECR container registry, RDS MySQL metadata store, MLflow experiment tracker and Kserve model deployer
aws-minimal EKS, S3, ECR, RDS, MLflow Tracking, Seldon AWS specific recipe to showcase a production-grade MLOps Stack with an EKS orchestrator, S3 artifact store, ECR container registry, RDS MySQL metadata store, MLflow experiment tracker and Seldon Core model deployer
aws-stores-minimal S3, RDS, ECR A simple recipe to spin up an RDS MySQL metadata store, S3 artifact store and an ECR container registry
azure-minimal AKS, Blob Storage, ACR, Flexible MySQL, MLflow Tracking, Seldon Azure specific recipe that creates an MLOps stack with an AKS cluster as orchestrator, Azure Blob Storage container artifact store. ACR container registry, Flexible MySQL server as metadata store, MLflow experiment tracker and Seldon Core model deployer
gcp-kubeflow-kserve Kubeflow on GKE, GCS, CloudSQL, GCR, MLflow Tracking, Kserve, Vertex A recipe that creates a Kubeflow pipelines cluster as orchestrator, GCS artifact store, GCR container registry, CloudSQL MySQL metadata store, MLflow experiment tracker, Kserve model deployer and option for Vertex AI as a step operator
gcp-minimal GKE, GCS, GCR, CloudSQL, MLflow Tracking, Seldon GCP specific recipe to showcase a production-grade MLOps Stack with a GKE orchestrator, GCS artifact store, GCR container repository, CloudSQL MySQL metadata store, MLflow experiment tracker and Seldon Core model deployer
vertex-ai Vertex AI Pipelines, GCS, GCR, CloudSQL and (optional) MLflow Tracking A stack with a Vertex AI orchestrator, GCS artifact store, GCR container registry, CloudSQL MySQL metadata store and an optional MLflow experiment tracker

๐Ÿ™ Association with ZenML

maintained-by-zenml

It is not neccessary to use the MLOps stacks recipes presented here alongisde the ZenML framework. You can simply use the Terraform scripts directly.

However, ZenML works seamlessly with the infrastructure provisioned through these recipes. The ZenML CLI has an integration with this repository that makes it really simple to pull and deploy these recipes. Detailed steps are available in the READMEs of respective recipes but a simple flow could look like the following:

  1. ๐Ÿ“ƒ List the available recipes in the repository.

    zenml stack recipe list
  2. Pull the recipe that you wish to deploy, to your local system.

    zenml stack recipe pull <STACK_RECIPE_NAME>
  3. ๐ŸŽจ Customize your deployment by editing the default values in the locals.tf file.

  4. ๐Ÿ” Add your secret information like keys and passwords into the values.tfvars.json file which is not committed and only exists locally.

  5. ๐Ÿš€ Deploy the recipe with this simple command.

    zenml stack recipe deploy <STACK_RECIPE_NAME>
    

    Note If you want to allow ZenML to automatically import the created resources as a ZenML stack, pass the --import flag to the command above. By default, the imported stack will have the same name as the stack recipe and you can provide your own with the --stack-name option.

  6. You'll notice that a ZenML stack configuration file gets created after the previous command executes ๐Ÿคฏ! This YAML file can be imported as a ZenML stack manually by running the following command.

    zenml stack import <STACK_NAME> <PATH_TO_THE_CREATED_STACK_CONFIG_YAML>
    

To learn more about ZenML and how it empowers you to develop a stack-agnostic MLOps solution, head over to the ZenML docs.

โš—๏ธ Using recipes with Terraform

Running a recipe is a matter of two simple commands. You can clone the repository, and for a chosen recipe of your choice execute:

terraform init
terraform apply

Note You need to have credentials for a chosen cloud provider set up before running.

Create your own recipe ๐Ÿง‘โ€๐Ÿณ

If you want to don the chef's hat and create a new recipe to cover your specific use case, we have just the ingredients you need!

  • Check out this video that goes through the process of creating a new recipe by extending recipes that already exist on this repository. It's useful when you want to mix and match components across recipes. Extend a stack recipe

  • Learn more about the design principles behind a recipe, and more information on testing in the CONTRIBUTING.md guide

๐ŸŽ‰ Acknowledgements

Thank you to the folks over at Fuzzy Labs for their support and contributions to this repository.

We'd also like to acknowledge some of the cool inspirations for this project:

mlops-stacks's People

Contributors

wjayesh avatar htahir1 avatar alexejpenner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.