orchestrators

Elevate Your ML Workflows

ZenML is a lightweight alternative to Kubeflow, the Kubernetes-native platform for machine learning. While Kubeflow offers robust orchestration capabilities for ML workflows on Kubernetes, ZenML provides a more flexible and user-friendly approach to building, deploying, and managing ML pipelines at scale. ZenML's intuitive workflow management simplifies MLOps across various environments, not just Kubernetes. Leverage ZenML's adaptability and ease of use to accelerate your ML initiatives and drive innovation across your organization, without the steep learning curve and infrastructure demands of Kubeflow.

Start locally without complicated setup hassle

  • ZenML is available as a simple pip package that lets you run and track pipelines locally.
  • ZenML integrates with your orchestration layer of choice, avoiding having to learn different paradigms for dev, staging, and prod.
  • ZenML integrates with your orchestration layer of choice or can be extended with your own orchestration service.
Dashboard mockup showing local-to-production workflow

Abstract away infrastructure complexity

  • Most orchestrators assume some form of infrastructure knowledge to use them maximally โ€” ZenML abstracts that complexity away.
  • ZenML separates infrastructure setup like Docker building from the application logic, and automates the tedious parts.
  • ZenML focuses on the handovers between MLOps Engineers, ML Engineers, and Data Scientists.
Dashboard mockup showing collaboration features

Switch between orchestrators depending on your context

  • You can switch between different orchestration services with a single click โ€” from dev to staging to production.
  • The more engineering-minded in the team still retain control over their productionalization because the framework is extensible.
  • ZenML handles the pain of packaging your code into Docker to be deployed to your orchestration service of choice.
Dashboard mockup showing productionalization workflow
Brevo logo
After a benchmark on several solutions, we choose ZenML for its stack flexibility and its incremental process. We started from small local pipelines and gradually created more complex production ones. It was very easy to adopt.
Clรฉment Depraz

Clรฉment Depraz

Data Scientist at Brevo

Explore in Detail What Makes ZenML Unique

FeatureZenMLKubeflow
Workflow Orchestration
Yes

Provides a flexible and user-friendly orchestration layer on top of Kubeflow

Yes

Offers powerful Kubernetes-native orchestration for ML workflows

Ease of Use
Yes

Simplifies the adoption and management of Kubeflow pipelines with an intuitive interface

Not supported

Requires Kubernetes expertise to effectively utilize its features

Integration Flexibility
Yes

Seamlessly integrates Kubeflow with other MLOps tools for a customized stack

Not supported

Primarily focuses on Kubernetes-based integrations and extensions

Switch your orchestrator, keep your code
Yes

Keep the same code when switching orchestrator

Not supported

Requires significant rewriting to use Kubeflow code with a different orchestrator

Pipeline Customization
Yes

Enables easy customization and extension of Kubeflow pipelines

Yes

Allows customization but may require more Kubernetes knowledge

Collaborative MLOps
Yes

Facilitates collaboration among teams with version control and governance features

Yes

Provides collaboration features but may require additional setup

Scalability
Yes

Leverages Kubeflow's scalability while providing an abstraction layer for ease of use

Yes

Highly scalable for large-scale ML workflows on Kubernetes

Experiment Tracking
Yes

Integrates with MLflow and other tools for comprehensive experiment tracking

Yes

Offers Kubeflow Metadata for experiment tracking and artifact management

Model Deployment
Yes

Simplifies the deployment of models using Kubeflow with pre-built integrations

Yes

Supports various deployment options, including Kubeflow Serving

Monitoring and Logging
Yes

Provides centralized monitoring and logging for Kubeflow pipelines

Yes

Offers Kubeflow Metadata for logging and monitoring

Community and Support
Yes

Growing community with active support and resources

Yes

Large and active community with extensive resources and support

MLOps Lifecycle Coverage
Yes

Covers the entire MLOps lifecycle, from data preparation to model monitoring

Not supported

Focuses primarily on orchestration, deployment, and serving

Learning Curve
Yes

Reduces the learning curve for adopting Kubeflow with a user-friendly abstraction layer

Not supported

Requires Kubernetes expertise to effectively utilize its full set of features

Hybrid and Multi-Cloud
Yes

Supports hybrid and multi-cloud deployments with Kubeflow integration

Yes

Enables hybrid and multi-cloud deployments on Kubernetes

GPU and Distributed Computing
Yes

Seamlessly leverages Kubeflow's GPU and distributed computing capabilities

Yes

Provides strong support for GPU and distributed computing workloads

Code comparison

ZenML and Kubeflow side by side

ZenML
# zenml integration install kubeflow
# zenml orchestrator register kf_orchestrator -f kubeflow ...
# zenml stack update my_stack -o kf_orchestrator

from zenml import pipeline, step

@step
def preprocess_data(data_path: str) -> str:
    # Preprocessing logic here
    return processed_data

@step
def train_model(data: str):
    # Model training logic here
    return model

@pipeline
def my_pipeline(data_path: str):
    processed_data = preprocess_data(data_path)
    model = train_model(processed_data)

# Run the pipeline
my_pipeline(data_path="path/to/data")
Kubeflow
# Kubeflow Pipelines SDK
import kfp
from kfp import dsl

def preprocess_op(data_path):
    return dsl.ContainerOp(
        name='Preprocess Data',
        image='preprocess-image:latest',
        arguments=['--data_path', data_path]
    )

def train_op(data):
    return dsl.ContainerOp(
        name='Train Model',
        image='train-image:latest',
        arguments=['--data', data]
    )

@dsl.pipeline(
    name='My ML Pipeline',
    description='A sample ML pipeline'
)
def my_pipeline(data_path: str):
    preprocess_task = preprocess_op(data_path)
    train_task = train_op(preprocess_task.output)

# Compile and run the pipeline
kfp.compiler.Compiler().compile(my_pipeline, 'pipeline.yaml')
client = kfp.Client()
client.create_run_from_pipeline_func(my_pipeline, arguments={})
01.

Streamlined ML Workflow Initialization

ZenML guarantees swifter initialization, surpassing orchestrators for prompt, optimized ML workflows.

02.

Supporting All Your Tools

ZenML is a native interface to the whole end-to-end machine learning lifecycle, taking you beyond just orchestration.

03.

Unrivaled User Assistance

ZenML excels with dedicated support, offering personalized assistance beyond standard orchestrators.

Outperform Orchestrators: Book Your Free ZenML Strategy Talk

Broaden Your AI Orchestration Understanding with ZenML

Experience the ZenML Difference:
Book Your Customized Demo

See ZenML's superior model orchestration in action Discover how ZenML offers more with your existing ML tools Find out why data security with ZenML outshines the rest