If you find ZenML helpful or interesting, please consider giving us a star on GitHub. Your support helps promote the project and lets others know that it's worth checking out.
Thank you for your support! ๐
Install ZenML via PyPI. Python 3.9 - 3.12 is required:
pip install "zenml[server]" notebook
Take a tour with the guided quickstart by running:
zenml go
ZenML is a MLOps framework intended for data scientists or ML engineers looking to standardize machine learning practices. Just add @step
and @pipeline
to your existing Python functions to get going. Here is a toy example:
from zenml import pipeline, step
@step # Just add this decorator
def load_data() -> dict:
training_data = [[1, 2], [3, 4], [5, 6]]
labels = [0, 1, 0]
return {'features': training_data, 'labels': labels}
@step
def train_model(data: dict) -> None:
total_features = sum(map(sum, data['features']))
total_labels = sum(data['labels'])
print(f"Trained model using {len(data['features'])} data points. "
f"Feature sum is {total_features}, label sum is {total_labels}")
@pipeline # This function combines steps together
def simple_ml_pipeline():
dataset = load_data()
train_model(dataset)
if __name__ == "__main__":
run = simple_ml_pipeline() # call this to run the pipeline
The framework is a gentle entry point for practitioners to build complex ML pipelines with little knowledge required of the underlying infrastructure complexity. ZenML pipelines can be run on AWS, GCP, Azure, Airflow, Kubeflow and even on Kubernetes without having to change any code or know underlying internals.
ZenML provides different features to aid people to get started quickly on a remote setting as well. If you want to deploy a remote stack from scratch on your selected cloud provider, you can use the 1-click deployment feature either through the dashboard:
Or, through our CLI command:
zenml stack deploy --provider aws
Alternatively, if the necessary pieces of infrastructure is already deployed, you can register a cloud stack seamlessly through the stack wizard:
zenml stack register <STACK_NAME> --provider aws
Read more about ZenML stacks.
Once you have your MLOps stack configured, you can easily run workloads on it:
zenml stack set <STACK_NAME>
python run.py
from zenml.config import ResourceSettings, DockerSettings
@step(
settings={
"resources": ResourceSettings(memory="16GB", gpu_count="1", cpu_count="8"),
"docker": DockerSettings(parent_image="pytorch/pytorch:1.12.1-cuda11.3-cudnn8-runtime")
}
)
def training(...):
...
Create a complete lineage of who, where, and what data and models are produced.
Youโll be able to find out who produced which model, at what time, with which data, and on which version of the code. This guarantees full reproducibility and auditability.
from zenml import Model
@step(model=Model(name="classification"))
def trainer(training_df: pd.DataFrame) -> Annotated["model", torch.nn.Module]:
...
While ZenML brings a lot of value of the box, it also integrates into your existing tooling and infrastructure without you having to be locked in.
from bentoml._internal.bento import bento
@step(on_failure=alert_slack, experiment_tracker="mlflow")
def train_and_deploy(training_df: pd.DataFrame) -> bento.Bento
mlflow.autolog()
...
return bento
The best way to learn about ZenML is the docs. We recommend beginning with the Starter Guide to get up and running quickly.
If you are a visual learner, this 11-minute video tutorial is also a great start:
And finally, here are some other examples and use cases for inspiration:
ZenML is featured in these comprehensive guides to modern MLOps and LLM engineering. Learn how to build production-ready machine learning systems with real-world examples and best practices.
For full functionality ZenML should be deployed on the cloud to enable collaborative features as the central MLOps interface for teams.
Read more about various deployment options here.
Or, sign up for ZenML Pro to get a fully managed server on a free trial.
ZenML has a VS Code extension that allows you to inspect your stacks and pipeline runs directly from your editor. The extension also allows you to switch your stacks without needing to type any CLI commands.
ZenML is being built in public. The roadmap is a regularly updated source of truth for the ZenML community to understand where the product is going in the short, medium, and long term.
ZenML is managed by a core team of developers that are responsible for making key decisions and incorporating feedback from the community. The team oversees feedback via various channels, and you can directly influence the roadmap as follows:
We would love to develop ZenML together with our community! The best way to get
started is to select any issue from the [good-first-issue
label](https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+user%3Azenml-io+label%3A%22good+first+issue%22)
and open up a Pull Request!
If you would like to contribute, please review our Contributing Guide for all relevant details.
The first point of call should be our Slack group. Ask your questions about bugs or specific use cases, and someone from the core team will respond. Or, if you prefer, open an issue on our GitHub repo.
If you find ZenML helpful or interesting, please consider giving us a star on GitHub. Your support helps promote the project and lets others know that it's worth checking out.
Thank you for your support! ๐
ZenML is distributed under the terms of the Apache License Version 2.0. A complete version of the license is available in the LICENSE file in this repository. Any contribution made to this project will be licensed under the Apache License Version 2.0.