Skip to content

Releases: zenml-io/zenml

0.55.2

06 Feb 17:18
72f9fb6
Compare
Choose a tag to compare

This patch comes with a variety of new features, bug-fixes, and documentation updates.

Some of the most important changes include:

  • The ability to add tags to outputs through the step context
  • Allowing the secret stores to utilize the implicit authentication method of AWS/GCP/Azure Service Connectors
  • Lazy loading client methods in a pipeline context
  • Updates on the Vertex orchestrator to switch to the native VertexAI scheduler
  • The new HyperAI integration featuring a new orchestrator and service connector
  • Bumping the mlflow version to 2.10.0

We'd like to give a special thanks to @christianversloot and @francoisserra for their contributions.

What's Changed

Full Changelog: 0.55.1...0.55.2

0.55.1

26 Jan 09:18
cdd1452
Compare
Choose a tag to compare

If you are actively using the Model Control Plane features, we suggest that you directly upgrade to 0.55.1, bypassing 0.55.0.

This is a patch release bringing backward compatibility for breaking changes introduced in 0.55.0, so that appropriate migration actions can be performed at the desired pace. Please refer to the 0.55.0 release notes for specific information on breaking changes and how to update your code to align with the new way of doing things. We also have updated our documentation to serve you better and introduced PipelineNamespace models in our API.

Also, this release is packed with Database recovery in case the upgrade failed to migrate the Database to a newer version of ZenML.

What's Changed

New Contributors

Full Changelog: 0.55.0...0.55.1

0.55.0

23 Jan 12:04
734b205
Compare
Choose a tag to compare

This release comes with a range of new features, bug fixes and documentation updates. The most notable changes are the ability to do lazy loading of Artifacts and their Metadata and Model and its Metadata inside the pipeline code using pipeline context object, and the ability to link Artifacts to Model Versions implicitly via the save_artifact function.

Additionally, we've updated the documentation to include a new starter guide on how to manage artifacts, and a new production guide that walks you through how to configure your pipelines to run in production.

Breaking Change

The ModelVersion concept was renamed to Model going forward, which affects code bases using the Model Control Plane feature. This change is not backward compatible.

Pipeline decorator

@pipeline(model_version=ModelVersion(...)) -> @pipeline(model=Model(...))

Old syntax:

from zenml import pipeline, ModelVersion

@pipeline(model_version=ModelVersion(name="model_name",version="v42"))
def p():
  ...

New syntax:

from zenml import pipeline, Model

@pipeline(model=Model(name="model_name",version="v42"))
def p():
  ...

Step decorator

@step(model_version=ModelVersion(...)) -> @step(model=Model(...))

Old syntax:

from zenml import step, ModelVersion

@step(model_version=ModelVersion(name="model_name",version="v42"))
def s():
  ...

New syntax:

from zenml import step, Model

@step(model=Model(name="model_name",version="v42"))
def s():
  ...

Acquiring model configuration from pipeline/step context

Old syntax:

from zenml import pipeline, step, ModelVersion, get_step_context, get_pipeline_context

@pipeline(model_version=ModelVersion(name="model_name",version="v42"))
def p():
  model_version = get_pipeline_context().model_version
  ...

@step(model_version=ModelVersion(name="model_name",version="v42"))
def s():
  model_version = get_step_context().model_version
  ...

New syntax:

from zenml import pipeline, step, Model, get_step_context, get_pipeline_context

@pipeline(model=Model(name="model_name",version="v42"))
def p():
  model = get_pipeline_context().model
  ...

@step(model=Model(name="model_name",version="v42"))
def s():
  model = get_step_context().model
  ...

Usage of model configuration inside pipeline YAML config file

Old syntax:

model_version:
  name: model_name
  version: v42
  ...

New syntax:

model:
  name: model_name
  version: v42
  ...

ModelVersion.metadata -> Model.run_metadata

Old syntax:

from zenml import ModelVersion

def s():
  model_version = ModelVersion(name="model_name",version="production")
  some_metadata = model_version.metadata["some_metadata"].value
  ... 

New syntax:

from zenml import Model

def s():
  model = Model(name="model_name",version="production")
  some_metadata = model.run_metadata["some_metadata"].value
  ... 

Those using the older syntax are requested to update their code accordingly.

Full set of changes are highlighted here: #2267

What's Changed

New Contributors

Full Changelog: 0.54.1...0.55.0

0.43.1

23 Jan 14:28
Compare
Choose a tag to compare

Backports some important fixes that have been introduced in more recent versions
of ZenML to the 0.43.x release line.

Full Changelog: 0.43.0...0.43.1

0.42.2

23 Jan 14:28
Compare
Choose a tag to compare

Backports some important fixes that have been introduced in more recent versions
of ZenML to the 0.42.x release line.

Full Changelog: 0.42.1...0.42.2

0.53.1

16 Jan 04:26
Compare
Choose a tag to compare

Important

This release has been updated (16th January, 2024)

A bug was introduced in the helm chart starting from version 0.50.0. All releases from that version have been updated with the fix. More details: #2234

This minor release contains a hot fix for a bug that was introduced in 0.53.0
where the secrets manager flavors were not removed from the database
properly. This release fixes that issue.

What's Changed

Full Changelog: 0.53.0...0.53.1

0.53.0

16 Jan 04:25
Compare
Choose a tag to compare

Important

This release has been updated (16th January, 2024)

A bug was introduced in the helm chart starting from version 0.50.0. All releases from that version have been updated with the fix. More details: #2234

This release is packed with a deeply reworked quickstart example and starter template, the removal of secret manager stack component, improved experience with Cloud Secret Stores, support for tags and metadata directly in Model Versions, some breaking changes for Model Control Plane and a few bugfixes.

New features

Try out the new quickstart and starter template featuring the Model Control Plane

Maybe it slipped you by, but ZenML has a brand new feature, and it's called the Model Control Plane (MCP)! The MCP allows users to register their Models directly into their zenml servers, and associate metadata, runs, and artifacts with it. This gives users a model-centric view into ZenML, rather than a pipeline-centric one. Try it out now with the quickstart:

pip install "zenml[server,templates]"
mkdir zenml_starter_template
cd zenml_starter_template
copier copy --trust -r 2023.12.18 https://github.com/zenml-io/template-starter.git .

# or `zenml init --template starter`

# Now either read the README or run quickstart.ipynb

Alternatively, just clone the repo and run the quickstart.

Please note that while frontend features are Cloud Only, OSS users can still use the MCP via the CLI and Python SDK.

Breaking changes

Secret Manager stack components sunset

Upon upgrading, all Secrets Manager stack components will be removed from the Stacks that still contain them and from the database. This also implies that access to any remaining secrets managed through Secrets Manager stack components will be lost. If you still have secrets configured and managed through Secrets Manager stack components, please consider migrating all your existing secrets to the centralized secrets store before upgrading by means of the zenml secrets-manager secret migrate CLI command. Also see the zenml secret --help command for more information.

Renaming "endpoints" to "deployments" in Model Control Plane

This is just a renaming to provide better alignment with industry standards. Though, it will affect:

  • ArtifactConfig(..., is_endpoint_artifact=True) now is ArtifactConfig(..., is_deployment_artifact=True)
  • CLI command zenml model endpoint_artifacts ... now is zenml model deployment_artifacts ...
  • Client().list_model_version_artifact_links(..., only_endpoint_artifacts=True) now is Client().list_model_version_artifact_links(..., only_deployment_artifacts=True)
  • ModelVersion(...).get_endpoint_artifact(...) now is ModelVersion(...).get_deployment_artifact(...)

Major bugfixes

What's Changed

Full Changelog: 0.52.0...0.53.0

0.52.0

16 Jan 04:25
Compare
Choose a tag to compare

Important

This release has been updated (16th January, 2024)

A bug was introduced in the helm chart starting from version 0.50.0. All releases from that version have been updated with the fix. More details: #2234

This release adds the ability to pass in pipeline parameters as YAML configuration and fixes a couple of minor issues affecting the W&B integration and the way expiring credentials are refreshed when service connectors are used.

Breaking Change

The current pipeline YAML configurations are now being validated to ensure that configured parameters match what is available in the code. This means that if you have a pipeline that is configured with a parameter that has a different value that what is provided through code, the pipeline will fail to run. This is a breaking change, but it is a good thing as it will help you catch errors early on.

This is an example of a pipeline configuration that will fail to run:

parameters:
    some_param: 24

steps:
  my_step:
    parameters:
      input_2: 42
# run.py
@step
def my_step(input_1: int, input_2: int) -> None:
    pass

@pipeline
def my_pipeline(some_param: int):
    # here an error will be raised since `input_2` is
    # `42` in config, but `43` was provided in the code
    my_step(input_1=42, input_2=43)

if __name__=="__main__":
    # here an error will be raised since `some_param` is
    # `24` in config, but `23` was provided in the code
    my_pipeline(23)

What's Changed

Full Changelog: 0.51.0...0.52.0

0.51.0

16 Jan 04:21
Compare
Choose a tag to compare

Important

This release has been updated (16th January, 2024)

A bug was introduced in the helm chart starting from version 0.50.0. All releases from that version have been updated with the fix. More details: #2234

This release comes with a breaking change to the model version model, a new use-case example for NLP, and a range of bug fixes and enhancements to the artifact management and pipeline run management features.

Breaking Change

  • Artifact Version Table + Artifact Tagging by @fa9r in #2081
  • Converting model models to use the new hydration paradigm by @bcdurak in #2101

New Example

  • NLP Template Example is a new example that demonstrates how to use ZenML for NLP tasks. by @safoinme in #2070

What's Changed

Full Changelog: 0.50.0...0.51.0

0.50.0

16 Jan 04:17
Compare
Choose a tag to compare

Important

This release has been updated (16th January, 2024)

A bug was introduced in the helm chart starting from version 0.50.0. All releases from that version have been updated with the fix. More details: #2234

In this release, we introduce key updates aimed at improving user experience and security.
The ModelConfig object has been renamed to ModelVersion for a more intuitive interface.
Additionally, the release features enhancements such as optimized model hydration for better performance,
alongside a range of bug fixes and contributions from both new and returning community members.

Breaking Change

  • We have renamed the ModelConfig object to ModelVersion with other related changes to the model control plane,
    the goal of this is to bring a simplified user-interface experience, so once ModelVersion is configured in
    pipeline or step it will travel into all other user-facing places: step context, client, etc. by @avishniakov in #2044
  • introducing RBAC for server endpoints, ensuring users have appropriate permissions for actions on resources.
    Additionally, it improves data handling by dehydrating response models to redact inaccessible information, while
    service accounts retain full permissions due to current database constraints. by @schustmi in #1999
  • We have completely reworked our API models. While the request models are mostly the same, now with the new hydration logic, most of
    our response models feature a body and a metadata field which allow us to control the responses of our API and optimize the flow for
    anyone using it By @bcdurak #1971
  • We also worked on adding a new "Artifacts" tab to our dashboard. With these new changes, it will become much easier to understand
    and adjust how ZenML versions your data. Moreover, by using "ExternalArtifacts", you will be able to save and load artifacts manually and
    use them in your pipelines. By @fa9r #1943

Enhancements

  • Improve alembic migration safety by @fa9r in #2073
  • Model Link Filtering by Artifact / Run Name by @fa9r in #2074

Bug Fixes

  • Fix tag<>resource ID generator to fix the issue of manipulating migrated tags properly #2056
  • Fixes for k3d deployments via mlstacks using the ZenML CLI wrapper #2059
  • Fix some filter options for pipeline runs by @schustmi #2078
  • Fix Label Studio image annotation example by @strickvl #2010
  • Alembic migration fix for databases with scheduled pipelines with 2+ runs by @bcdurak #2072
  • Model version endpoint fixes by @schustmi in #2060

ZenML Helm Chart Changes

  • Make helm chart more robust to accidental secret deletions by @stefannica in #2053
  • Separate helm hook resources from regular resources by @stefannica in #2055

Other Changes

New Contributors

Full Changelog: 0.47.0...0.50.0