Releases: zenml-io/zenml
0.71.0
ZenML version 0.71.0 delivers a new Modal step operator integration as its core feature, enabling efficient cloud execution for ML pipelines with granular hardware configuration options. The release strengthens enterprise capabilities through improved token management and dashboard features while expanding artifact handling with dynamic naming and enhanced visualization support. Additionally, it includes various infrastructure improvements and bug fixes that enhance the platform's stability and usability, particularly around Docker connectivity, Kubernetes management, and service connector operations.
New Feature: Modal Step Operator Integration
ZenML now integrates with Modal, bringing lightning-fast cloud execution capabilities to your ML pipelines. This new step operator allows you to execute individual pipeline steps on Modal's specialized compute instances, offering notable speed, particularly for Docker image building and hardware provisioning. With simple configuration options, you can precisely specify hardware requirements like GPU type, CPU count, and memory for each step, making it ideal for resource-intensive ML workloads.
New Feature: AWS Image Builder
Don't want to worry about Docker locally? Now build images remotely in AWS. Docs: https://docs.zenml.io/stack-components/image-builders/aws
Other Highlights
- Workload API Token Management: Refactored token management for improved security with a generic API token dispenser.
- Dashboard Enhancements:
- Introduced service account management capabilities.
- Added API key creation and integration features.
- Dynamic Artifact Naming: Introduced capability to dynamically name artifacts.
- Visualization Enhancements: Made dictionaries and lists visualizable, added JSON visualization type.
Additional Features and Improvements
- Improved error messages for Docker daemon connectivity
- Enhanced SageMaker URL handling
- Simplified model version artifact linkage
- Added testing for pipeline templates
- Improved Kubernetes pod and label length management
- Allowed skipping type annotations for step inputs
- Enabled using feature service instances instead of just names
Bug Fixes
- Fixed issues with getting out of an inaccessible active stack
- Fixed race conditions in the service connector type registry
- Resolved migration test complications
- Corrected documentation links
- Fixed artifact store and artifact URI handling
- Addressed various scalability and compatibility issues
Documentation Updates
- Added documentation redirects
- Updated PyTorch documentation links
- Improved service connector documentation
What's Changed
- Refactored workload API token management for better security and implemented generic API token dispenser by @stefannica in #3154
- Add 0.70.0 to the migration tests by @avishniakov in #3190
- Adjustments to the PR template by @bcdurak in #3194
- [docs] Fix links in the how-to section of docs by @wjayesh in #3196
- Fixing sagemaker urls to take the settings into consideration by @bcdurak in #3195
- Add cached run into testing of migrations by @avishniakov in #3199
- Fix service connector type registry race conditions by @stefannica in #3202
- Refactor container resource configuration in Vertex Orchestrator test by @avishniakov in #3203
- [docs] Add missing redirects by @wjayesh in #3200
- Add links to
uv
new PyTorch documentation by @strickvl in #3204 - Fix broken docs link by @strickvl in #3208
- Bugfix for getting out of an inaccessible active stack with no permissions by @bcdurak in #3198
- Simplify model version artifact linkage by @schustmi in #3175
- Reenable macos testing by @avishniakov in #3205
- Various fixes and improvements by @stefannica in #3211
- Pass config path during zenml pipeline build by @schustmi in #3212
- Add test for running templates by @schustmi in #3192
- Fix service connector docstring by @schustmi in #3216
- Improve error message when docker daemon is not reachable by @schustmi in #3214
- Don't run migration for empty updates by @schustmi in #3210
- Remove
--check
from format script and fix naming by @safoinme in #3218 - More scalability improvements by @schustmi in #3206
- Use correct keyword for artifact store open by @schustmi in #3220
- Fix passing of some sagemaker settings by @schustmi in #3221
- Add hint when trying to connect with api key by @schustmi in #3222
- Allow passing None values as parameter for optional complex types by @schustmi in #3215
- Limit kubernetes pod and label length by @schustmi in #3217
- Updating the quickstart example to use the new
log_metadata
by @bcdurak in #3188 - Allow skipping type annotations for step inputs by @schustmi in #3223
- Modal Step Operator by @strickvl in #2948
- Add dynamic artifacts naming, documentation and tests by @avishniakov in #3201
- Run template CLI command and bugfix by @schustmi in #3225
- Make dicts/lists visualizable and add JSON as viz type by @wjayesh in #2882
- Instances of the
FeatureService
s are now used instead of only the names of the FeatureServices. by @aiakide in #3209 - Quickstart fixes by @schustmi in #3227
- Add missing docs by @schustmi in #3226
- Misc cleanup by @schustmi in #3229
- Fix input resolution for steps with dynamic artifact names by @schustmi in #3228
- Follow-up on the
run_metadata
changes by @bcdurak in #3193 - Fixed broken links by @htahir1 in #3232
- Fixed wandb login problem in Quickstart by @htahir1 in #3233
- Misc bugfixes by @schustmi in #3234
- Add additional way to fetch docker repo digest by @schustmi in #3231
- AWS Image Builder implementation by @stefannica in #2904
- Disable client-side caching for some orchestrators by @schustmi in #3235
- Fix artifact uris for artifacts with name placeholders by @schustmi in #3237
- Materializer test fix on Windows by @bcdurak in #3238
- Fix GET step run endpoint to return unhydrated response if requested by @schustmi in #3240
- Pipeline run API token fixes and improvements by @stefannica in #3242
Full Changelog: 0.70.0...0.71.0
0.70.0
The ZenML 0.70.0 release includes a significant number of database schema changes and migrations, which means upgrading to this version will require extra caution. As always, please make sure to make a copy of your production database before upgrading.
Key Changes
- Artifact Versioning Improvements: The handling of artifact versions has been improved, including the API improvements like the ability to batch artifact version requests to improve the execution times and more types for the step input/output artifacts, including multiple versions of the same artifact (e.g. model checkpoints), to improve the UX using ZenML UI or while working directly with the API.
- Scalability Enhancements: Various scalability improvements have been made, such as reducing unnecessary server requests and incrementing artifact versions server-side. These enhancements are expected to provide significant speed and scale improvements for ZenML users.
- Metadata management: Now, all the metadata-creating functions are gathered under one method called
log_metadata
. It is possible to call this method with different inputs to log run metadata for artifact versions, model versions, steps, and runs. - The oneof filtering: This allows to filter entities using a new operator called
oneof
. You can use this with IDs (UUID type) or tags (or other string-typed attributes) like thisPipelineRunFilter(tag='oneof:["cats", "dogs"]')
. - Documentation Improvements: The ZenML documentation has been restructured and expanded, including the addition of new sections on finetuning and LLM/ML engineering resources.
- Bug Fixes: This release includes several bug fixes, including issues with in-process main module source loading, and more.
Caution: Make sure to back up your data before upgrading!
While this release brings many valuable improvements, the database schema changes and migrations pose a potential risk to users. It is strongly recommended that users:
- Test the upgrade on a non-production environment: Before upgrading a production system, test the upgrade process in a non-production environment to identify and address any issues.
- Back up your data: Ensure that you have a reliable backup of your ZenML data before attempting the upgrade.
What's Changed
- Optimizing the CI workflows by @bcdurak in #3145
- Adding 0.68.0 to the migration tests by @bcdurak in #3144
- Move step durations to body by @schustmi in #3046
- Docs on ZenML setup by @strickvl in #3100
- Remove wrongly set Model.was_created_in_this_run attribute by @schustmi in #3129
- Allow specifying run tags in pipeline configuration by @schustmi in #3130
- Fix materializer type compatibility check during loading by @schustmi in #3105
- [docs] Add icons to headers in docs by @wjayesh in #3149
- fix icons and remove redundant file by @wjayesh in #3150
- Merge 0.68.1 release into develop by @schustmi in #3153
- Allow filtering pipeline runs by stack component by @schustmi in #3142
- Allow artifact response as step input by @schustmi in #3134
- Filter component by user name by @schustmi in #3126
- [docs] Restructure how-to section to make it more readable by @wjayesh in #3147
- ZenML Pro web login implementation by @stefannica in #3141
- Scalability improvements: Reduce misc/hydration server requests by @schustmi in #3093
- Fix in-process main module source loading by @schustmi in #3119
- Catch assertion in GH library by @schustmi in #3160
- Enable cache precomputation for run templates by @schustmi in #3156
- Add LLM and ML engineering books to README by @htahir1 in #3159
- Add helper method to quickly create run template from pipeline by @schustmi in #3155
- Add CLI command to export stack requirements by @schustmi in #3158
- Scalability improvements: Increment artifact version server side by @schustmi in #3095
- Update OpenAI integration by @safoinme in #3163
- Remove deprecated torch version constraint by @safoinme in #3166
- vLLM model deployer by @dudeperf3ct in #3032
- Don't initialize client during flavor sync by @schustmi in #3168
- Cleanup materializer temporary directories after step execution by @schustmi in #3162
- Fix langchain in API docs by @avishniakov in #3171
- Finetuning guide by @strickvl in #3157
- Fix mypy issue vllm evidently by @safoinme in #3169
- Add artifact version batch request by @schustmi in #3164
- Add missing section links by @strickvl in #3172
- Fix uvloop mypy by @avishniakov in #3174
- Multiple output versions for a step outputs by @avishniakov in #3072
- Simplify Metadata handling by @AlexejPenner in #3096
- assign value to component_name in preset stack registration by @hirekk in #3178
- Updating the template versions with
zenml login
by @bcdurak in #3177 - Better input artifacts typing by @avishniakov in #3099
- Refactor environment setup and caching by @safoinme in #3077
- Fix spelling errors by @safoinme in #3181
- Prevent some race conditions by @schustmi in #3167
- Update stack deployments with latest features by @stefannica in #3183
- Terraform best practices by @htahir1 in #3131
- Fix sagemaker pipeline URLs by @stefannica in #3176
- Fix lightning orchestrator for multi-step pipelines by @wjayesh in #3170
- Port bugfixes from #2497 by @avishniakov in #3179
- Removing the
enable_cache
from the config files by @bcdurak in #3184 - Don't pass tags to step config by @schustmi in #3186
- New
log_metadata
function, newoneof
filtering, additionalrun_metadata
filtering by @bcdurak in #3182
New Contributors
Full Changelog: 0.68.1...0.70.0
0.68.1
0.68.0
Highlights
- Stack Components on the Dashboard: We're bringing back stack components. With this release, you will get access to the list of your stack components on the ZenML dashboard. More functionality is going to follow in the next releases.
- Client-Side Caching: Implemented client-side computation for cached steps, significantly reducing time and costs associated with remote orchestrator spin-up.
- Streamlined Onboarding Process: Unified the starter and production setup into a single sequential flow, providing a more intuitive user experience.
- BentoML Integration: Updated to version 1.3.5 with enhanced containerization support.
- Artifact Management: Introduced
register_artifact
function enabling direct linking of existing data in the artifact store, particularly useful for tools like PyTorch-Lightning that manage their own checkpoints. - Enhanced Error Handling: Added Error Boundary to visualization components for improved reliability and user experience.
Additional Features and Improvements
- Added multiple access points for deleting pipeline runs
- Improved pipeline detail view functionality
- Improved service account handling for Kaniko image builder
Breaking Changes and Deprecations
- Discontinued Python 3.8 support
- Removed legacy pipeline and step interface
- Removed legacy post execution workflow
- Removed legacy dashboard option
- Removed
zenml stack up/down
CLI commands - Removed
zenml deploy
andzenml <stack-component> deploy
- Removed
StepEnvironment
class - Removed the option to specify a specific model version for step output artifacts using the
ArtifactConfig
class - Removed the option to use the
ExternalArtifact
class to load an artifact from a model version - Removed
Client.list_runs
, replacing it withClient.list_pipeline_runs
- Removed
ArtifactVersionResponse.read
, replacing it withArtifactVersionResponse.load
Documentation Updates
Added new guides for the following topics:
- Kubernetes per-pod configuration
- Factory generation of artifact names
- Common stacks best practices
- Azure 1-click dashboard deployment
- ZenML server upgrade best practices
- Custom Dataset classes and Materializers
- Comprehensive ZenML Pro documentation
- Image building optimization during pipeline runs
- Enhanced BentoML integration documentation
What's Changed
- Release 0.67.0 migration testing by @bcdurak in #3050
- Prevent too large requests by @avishniakov in #3048
- Fix Neptune linting after 1.12.0 release by @avishniakov in #3055
- Fix Lightning Orchestrator (remove -y from pip install) by @wjayesh in #3058
- Fix artifact pruning endpoint path by @schustmi in #3052
- Update python versioning in docs by @avishniakov in #3059
- Fix infinite loop while fetching artifact store in logs storage class by @avishniakov in #3061
- Make sync a setting for sagemaker/azureml orchestrator by @schustmi in #3062
- Remove some deprecated features by @schustmi in #2926
- Fix MySQL warning when filtering pipelines by latest run by @schustmi in #3051
- Remove more deprecated stuff by @schustmi in #3063
- Remove log versions from versioned buckets in S3 by @avishniakov in #3060
- add docs on k8s per pod settings by @wjayesh in #3066
- Remove Python 3.8 support by @strickvl in #3034
register_artifact
function by @avishniakov in #3053- Fix bad link in docs by @avishniakov in #3069
- Fix model linkage for the lazy loading scenarios by @avishniakov in #3054
- Updating template versions after the Python 3.8 changes by @bcdurak in #3070
- Add UUID materializer by @htahir1 in #3073
- Fix pipeline and model URLs for ZenML Pro on-prem deployments by @stefannica in #3083
- Update bentoml integration to 1.3.5 and add containerization by @wjayesh in #3045
- Fix mlflow linting by @schustmi in #3085
- Add docs for factory generation of artifact names by @strickvl in #3084
- Remove unnecessary metadata fields in UUID materializer test by @htahir1 in #3088
- Client-side computation of cached steps by @schustmi in #3068
- Fix Kaniko image builder service account passing by @schustmi in #3081
- Bugfix in GitLab Code Repository integration by @4gt-104 in #3076
- Add docs on common stacks best practices by @strickvl in #3092
- [docs] Update stacks page and add azure 1-click from dashboard docs by @wjayesh in #3082
- Local development how-to section by @strickvl in #3090
- [docs] best practices for upgrading zenml server by @wjayesh in #3087
- Fix S3 ArtifactStore auth issue by @avishniakov in #3086
- Reduce migration testing runtime by @avishniakov in #3078
- [docs] Dedicated docs on how to skip building an image on pipeline run by @wjayesh in #3079
- Fix filtering by tag for pipeline runs by @schustmi in #3097
- Remove deprecated features:
zenml deploy
andzenml <stack-component> deploy
by @stefannica in #3089 - Do not tag model via
Model
class on creation by @avishniakov in #3098 - Sagemaker add pipeline tags by @htahir1 in #3080
- [docs] Add custom Dataset classes and Materializers in ZenML by @htahir1 in #3091
- Delete Scarf related scripts and workflow files by @htahir1 in #3103
- Add more detailed docs for ZenML Pro by @wjayesh in #3065
- Add missing code hash filter in client method by @schustmi in #3094
- Remove lineage graph and legacy dashboard support by @schustmi in #3064
- Add unittest to cover gitlab CR regex. by @4gt-104 in #3102
- Automating the release process using Github workflows by @bcdurak in #3101
- Bugfix for release automation by @bcdurak in #3107
- Bugfix for new version in the release automation by @bcdurak in #3108
- using the right parent image name by @bcdurak in #3109
- Making the new release automation scripts executable by @bcdurak in #3110
- Fixing the env variables for the release automation by @bcdurak in #3111
- Adding the right Github configuration before using the
gh
CLI to fetch the version by @bcdurak in #3112 - Fixing the outputs of the first step in the release automation by @bcdurak in #3113
- Handling github auth and release notes for release automation by @bcdurak in #3114
- Fixing the cloudbuild call for release automation by @bcdurak in #3116
- Fixing the update tenant call in the script by @bcdurak in #3118
- Release automation with the new redeploy logic by @bcdurak in #3120
- Fixing the automation triggers for other branches by @bcdurak in #3125
- Update link for
llm-complete-guide
repository.- Updated link to poi… by @htahir1 in #3128 - Fixing the migration testing for the release branches by @bcdurak in #3127
- Update pipeline deletion docs by @strickvl in #3123
- Disabling the cache for the quickstart tests by @bcdurak in #3133
- Update Argilla integration for v2.x SDK by @sdiazlor in #2915
- Using pip instead of
gh
CLI in the migration tests by @bcdurak in #3136 - Adapting tags to work with older versions of Sagemaker by @bcdurak in #3135
- Manual trigger for the
release_finalize
workflow by @bcdurak in #3137 - Fixing the prepare trigger for the release automation by @bcdurak in #3138
New Contributors
Full Changelog: 0.67.0...0.68.0
0.67.0
Highlights
- Improved Sagemaker Orchestrator: Now supports warm pools for AWS Sagemaker, enhancing performance and reducing startup times for TrainingJobs.
- New DAG Visualizer: Shipped major enhancements to the DAG Visualizer for Pipeline Runs:
- Preview of the actual DAG before pipeline completion
- Visual adjustments for improved clarity
- Real-time updates during pipeline execution
- Environment Variable References in Configurations: Introduced the ability to reference environment variables in both code and configuration files using the syntax ${ENV_VARIABLE_NAME}, increasing flexibility in setups.
- Enhanced UX for Major Cloud Providers: Displaying direct pipeline/log URL when working with major cloud platforms.
- Skypilot with Kubernetes Support: Added compatibility for running Skypilot orchestrator on Kubernetes clusters.
- Updated Deepchecks Integration: The Deepchecks integration has been refreshed with the latest features and improvements.
Features and Improvements
- AWS Integration:
- Added permissions to workflow to enable assuming AWS role.
- Fixed expired credentials error when using the docker service connector.
- Error Handling: Improved error messages for stack components of uninstalled integrations.
- API Key Management: Added an option to write API keys to a file instead of using the CLI.
Pipeline Execution:
- Implemented fixes for executing steps as single step pipelines.
- Added filter option for templatable runs.
- Added additional filtering options for pipeline runs.
- MLflow Integration: Linked registered models in MLflow with the corresponding MLflow run.
- Analytics: Added missing analytics event to improve user insights.
Documentation Updates
- Updated documentation for various integrations including:
- Lightning AI orchestrator
- Kubeflow
- Comet experiment tracker
- Neptune
- Hugging Face deployer
- Weights & Biases (wandb)
- Added documentation for run templates.
- Fixed incorrect method name in Pigeon docs.
- Various small documentation fixes and improvements.
Bug Fixes
- Fixed YAML formatting issues.
- Resolved RBAC issues for subpages in response models.
- Fixed step output annotation in Discord test.
- Addressed MLFlow integration requirements duplication.
- Fixed Lightning orchestrator functionality.
What's Changed
- Error message for stack components of uninstalled integrations by @bcdurak in #2996
- Enable migration testing for version 0.66.0 by @schustmi in #2998
- Add permissions to workflow to enable assuming AWS role by @schustmi in #2999
- Add option to write api key to file instead of CLI by @schustmi in #3001
- Fix yaml formatting by @schustmi in #3004
- Update ZenML Pro links for consistency.- Update ZenML Pro links for c… by @htahir1 in #3007
- Fix incorrect method name in Pigeon docs by @strickvl in #3008
- Fixes for executing steps as single step pipelines by @schustmi in #3006
- Add filter option for templatable runs by @schustmi in #3000
- Add missing analytics event by @schustmi in #3009
- Fix expired credentials error when using the docker service connector by @schustmi in #3002
- Fix Lightning docs by @strickvl in #3013
- Remove image builder warning by @htahir1 in #3014
- Fixed kubeflow docs by @AlexejPenner in #3018
- Update Comet experiment tracker docs by @htahir1 in #3019
- Small docs fixes by @strickvl in #3022
- Feature/cleanup unused file by @AlexejPenner in #3023
- MLFlow integration requirements duplicate fix by @bcdurak in #3011
- Fix Neptune docs by @htahir1 in #3026
- Fix huggingface deployer docs by @htahir1 in #3024
- Fix step output annotation in Discord test by @wjayesh in #3029
- Fix RBAC for subpages in response models by @schustmi in #3031
- Allow env variable placeholders in configurations by @schustmi in #3003
- Leverage warm pools for AWS Sagemaker by @avishniakov in #3027
- Updated wandb docs by @htahir1 in #3030
- Add hyperlint by @htahir1 in #3035
- Bump NLP template by @avishniakov in #3036
- Add additional filtering options by @schustmi in #2951
- Bump starter template version by @schustmi in #3038
- Docs for run templates by @bcdurak in #3028
- Update Lightning AI orchestrator documentation by @strickvl in #3016
- Add default value for PipelineRun.is_templatable by @schustmi in #3040
- Use a generic OAuth2 client credentials flow to login to the Cloud API by @stefannica in #3041
- fix lightning orchestrator by @safoinme in #3010
- Linking registered models in MLflow with the corresponding MLflow run by @aiakide in #3020
- Bugfixing mlflow registry linting issue by @bcdurak in #3043
- Enhancing the orchestrator UX for major cloud providers by @bcdurak in #3005
- Skypilot with Kubernetes by @safoinme in #3033
- Update deepchecks integration by @wjayesh in #2987
New Contributors
Full Changelog: 0.66.0...0.67.0
0.66.0
New Features and Improvements
Python 3.12 support
This release adds support for Python 3.12, which means you can now develop your ZenML pipelines
with the latest python features.
Easier way to specify component settings
Before this release, settings for stack components had to be specified with both the component type
as well as the flavor. We simplified this and it is now possible to specify settings just using the
component type:
# Before
@pipeline(settings={"orchestrator.sagemaker": SagemakerOrchestratorSettings(...)})
def my_pipeline():
...
# Now
@pipeline(settings={"orchestrator": SagemakerOrchestratorSettings(...)})
def my_pipeline():
...
Breaking changes
- In order to slim down the ZenML library, we removed the
numpy
andpandas
libraries as dependencies of ZenML. If your
code uses these libraries, you have to make sure they're installed in your local environment as well as the Docker images that
get built to run your pipelines (UseDockerSettings.requirements
orDockerSettings.required_integrations
).
What's Changed
- Add 0.65.0 to migration testing by @avishniakov in #2963
- Hotfix for release flow by @avishniakov in #2961
- Fix the one-click AWS and GCP stack deployments by @stefannica in #2964
- Fix wandb mypy error by @strickvl in #2967
- Fix accelerate docs for 0.65.0+ by @avishniakov in #2968
- Dynamic model version names docs by @avishniakov in #2970
- Logging nits by @avishniakov in #2972
- Fix excess Azure logging by @strickvl in #2965
- Fix typo in docs by @strickvl in #2976
- Pass code path to template run by @schustmi in #2973
- Prevent extra attributes in component configs by @schustmi in #2978
- Dependency cleanup and Python 3.12 support by @bcdurak in #2953
- Few nits in docs based on integrations review by @avishniakov in #2983
- Update slack alerter docs by @stefannica in #2981
- Update Kubeflow orchestrator docs by @stefannica in #2985
- Build docker images for python 3.12 by @schustmi in #2988
- Allow shortcut keys for component settings by @schustmi in #2957
- Remove references to workspaces from docs by @strickvl in #2991
- Added some adjustments for colab by @AlexejPenner in #2966
- Reverting the installation of
mlstacks
after its new release by @bcdurak in #2980 - Small dependency and docs updates by @strickvl in #2982
Full Changelog: 0.65.0...0.66.0
0.65.0
Important note for OSS users
In the latest release, in the onboarding flow, the first pipeline has been labeled python run.py --training-pipeline
but rather should be simply python run.py
only. If you see an error while trying to completely the onboarding , simply use the latter command instead!
New Features and Improvements
New Quickstart Experience
This example demonstrates how ZenML streamlines the transition of machine learning workflows from local environments to cloud-scale operations.
Run Single Step as a ZenML Pipeline
If you want to run just an individual step on your stack, you can simply call the step as you would with a normal Python function. ZenML will internally create a pipeline with just your step and run it on the active stack.
Other improvements and fixes
- Updated AzureML Step Operator to work with SDKv2 and use Service Connectors
- Added timestamps to log messages
- Fixed issue with loading artifacts from the artifact store outside of the current active artifact store
- Support of templated names for Model Version (
{date}
and{time}
are currently supported placeholders) run_with_accelerate
step wrapper can be used as a Python Decorator on top of ZenML steps
Breaking changes
- Workspace scoped POST endpoint
full-stack
was removed and merged withstacks
POST endpoint - If you use
0.65.0
with any prior server version of ZenML it might lead to a situation where a Model Version is created for every step of the pipeline, while theModel
class was only once configured on the pipeline level. This is considered an expected behavior and you should not use the mismatching versions of ZenML Client and Server, in general.
Minimal example:
from zenml import step, pipeline, Model
@step
def step_1()->None:
print("1")
@step
def step_2()->None:
print("2")
@pipeline(model=Model(name="my_model"))
def my_pipeline()->None:
step_1()
step_2()
if __name__=="__main__":
my_pipeline()
In this case on server versions prior to 0.65.0
you will get 2 Model Versions of my_model
created: one in step_1
and one in step_2
. Please upgrade your server to 0.65.0+
and you will get only one Model Version for the same code snippet.
What's Changed
- Remove broken JIRA sync workflow by @strickvl in #2924
- Fix Hugging Face Spaces permissions by @strickvl in #2925
- Fixes for
run_with_accelerate
by @avishniakov in #2935 - Bump azure skypilot to a stable 0.6.1 by @avishniakov in #2933
- Add Timestamps to Logs and Update Dashboard URL Message by @htahir1 in #2934
- Adding 0.64.0 to migration tests by @bcdurak in #2923
- Removed docker build docs + fixed CLI command for zenml pipeline build list by @htahir1 in #2938
- Throw an error when running integration installs when uv == False but pip is not installed by @mennoliefstingh in #2930
- Update AzureML step operator to SDK v2 and add service connector support by @stefannica in #2927
- Improving the AzureML orchestrator docs by @bcdurak in #2940
- Update mlflow docs by @htahir1 in #2941
- Tell users where they can import
DockerSettings
from by @strickvl in #2947 - Fail early when specifying invalid materializers by @schustmi in #2950
- Add GitHub Codespaces and VS Code Remote Container support by @htahir1 in #2949
- Automatically detect whether code download is necessary by @schustmi in #2946
- Enable running a single step on the active stack by @schustmi in #2942
- Dynamic (templated) names for model versions by @avishniakov in #2909
- Adding an orchestrator URL to the AzureML orchestrator by @bcdurak in #2952
- Update python version of latest docker image by @schustmi in #2954
- Make
run_with_accelerate
a pythonic decorator by @avishniakov in #2943 - Bugfix for artifacts coming from a different artifact store by @bcdurak in #2928
- Stack Request cleanup and improvements by @bcdurak in #2906
- Silence pydantic protected namespace warnings by @schustmi in #2955
- Update key for finished onboarding survey by @schustmi in #2956
- Extend notebook source replacement code to other objects apart from ZenML steps by @schustmi in #2919
- Fix stack register CLI command by @schustmi in #2958
- Lightening studio orchestrator by @safoinme in #2931
- Introduce new quickstart with a focus on Stack switching by @AlexejPenner in #2937
- Bugfix for the required prompts for the AzureML wizard by @bcdurak in #2959
New Contributors
- @mennoliefstingh made their first contribution in #2930
Full Changelog: 0.64.0...0.65.0
0.64.0
New Features and Improvements
Notebook Integration
ZenML now supports running steps defined in notebook cells with remote orchestrators and step operators. This feature enhances the development workflow by allowing seamless transition from experimentation to production.
Reduced Docker Builds with Code Uploads
We've introduced an option to upload code to the artifact store, enabling Docker build reuse. This feature can significantly speed up iteration, especially when working with remote stacks.
- Default: Enabled
- Configuration: To disable, set
DockerSettings.allow_download_from_artifact_store=False
for steps or pipelines - Benefits:
- Faster development cycles
- No need to register a code repository to reuse builds
- Builds only occur when requirements or DockerSettings change
- Documentation: Which files are built into the image
AzureML Orchestrator Support
ZenML now supports AzureML as an orchestrator, expanding our list of supported cloud platforms.
- Full Azure Guide: Setting up an Azure stack
- Documentation: AzureML orchestrator
Terraform Modules
We've released new Terraform modules on the Hashicorp registry for provisioning complete MLOps stacks across major cloud providers.
- Features:
- Automate infrastructure setup for ZenML stack deployment
- Handle registration of configurations to ZenML server
- More Information: MLOps Terraform ZenML blog post
These updates aim to streamline the MLOps workflow, making it easier to develop, deploy, and manage machine learning pipelines with ZenML.
What's Changed
- Add 0.63.0 to migration testing by @bcdurak in #2893
- Document terraform stack deployment modules by @stefannica in #2898
- README update by @htahir1 in #2901
- Enable
Databricks
Unity Catalog for MLflow by @safoinme in #2900 - Make urls pop out from the sea of purple/cyan in the logs by @AlexejPenner in #2894
- Add terraform as a supported stack deployment provider by @stefannica in #2902
- Fix
Model
imports in docs by @strickvl in #2907 - Remove hub references by @schustmi in #2905
- Bump NLP template by @avishniakov in #2912
- Updated step operator docs by @htahir1 in #2908
- Added lightning studio check by @htahir1 in #2910
- Upload code to artifact store by @schustmi in #2895
- AzureML orchestrator by @bcdurak in #2873
- Run steps defined in notebooks with remote orchestrators by @schustmi in #2899
- Fix broken / unparsable md docs file by @strickvl in #2916
- Bump mlflow to 2.15.0 by @christianversloot in #2896
- Remove extra button by @schustmi in #2918
- Added last timestamp to zenserver by @htahir1 in #2913
- A pipeline can't finish successfully in this case by @AlexejPenner in #2903
- Fix the GCP Workload Identity Federation support in the GCP Service Connector by @stefannica in #2914
- Embeddings finetuning guide for LLMOps guide by @strickvl in #2917
🥳 Community Contributions 🥳
We'd like to give a special thanks to @christianversloot who contributed to this release by bumping the mlflow
version to 2.15.0
Full Changelog: 0.63.0...0.64.0
0.63.0
Moving forward from the last two releases, we have further improved the 1-click deployment tool and the stack wizard by adding support for Azure.
Moreover, we implemented a new step operator that allows you to run individual steps of your pipeline in Kubernetes pods.
Lastly, we have simplified our pipeline models by removing their versions. No migration is required but if you were using the API, please take out references to pipeline versions, and reference runs directly from now on.
What's Changed
- Enable cloud build service in GCP stack deployment by @stefannica in #2864
- Adding a
logo_url
and the of theintegration
to component responses by @bcdurak in #2866 - Use REST in Model tests by @avishniakov in #2834
- Add Azure stack wizard by @avishniakov in #2841
- Migration testing for 0.62.0 by @schustmi in #2860
- Fix RBAC in combination with lazy loaders by @schustmi in #2869
- Misc cleanup after release by @schustmi in #2861
- Disable notebook error for Kubernetes orchestrator by @strickvl in #2870
- Added ability to add labels to k8s pod by @htahir1 in #2872
- Fix zenml pro links by @schustmi in #2875
- Fix mlstacks docs typo by @begoechavarren in #2878
- Fix requests vulnerability by @stefannica in #2843
- Fixed some minor docs things i noticed by @htahir1 in #2881
- Serialize source as Any to keep subclass attributes by @schustmi in #2880
- Fix node selectors for Vertex orchestrator by @schustmi in #2876
- Kubernetes step operator by @schustmi in #2883
- Automatically populate GCP/azure path when using wizard from the frontend by @schustmi in #2886
- Remove pipeline versioning and add run templates by @schustmi in #2830
- Implement the Azure 1-click stack deployment by @stefannica in #2887
- Better error message sagemaker, better documentation server env vars by @AlexejPenner in #2885
- Azure Stack Wizard docs by @bcdurak in #2890
- Docs update mlflow deploy function call by @safoinme in #2863
- Fix databricks resource setting by @safoinme in #2889
New Contributors
- @begoechavarren made their first contribution in #2878
Full Changelog: 0.62.0...0.63.0
0.62.0
Building on top of the last release, this release adds a new and easy way to deploy a GCP ZenML stack from the dashboard and the CLI. Give it a try by going to the Stacks
section in the dashboard or running the zenml stack deploy
command! For more information on this new feature, please do check out the video and blog from our previous release.
We also updated our Hugging Face integration to support the automatic display of an embedded datasets
preview pane in the ZenML Dashboard whenever you return a Dataset
from a step. This was recently released by the Hugging Face datasets team and it allows you to easily visualize and inspect your data from the comfort of the dashboard.
What's Changed
- Fix release action docker limit by @schustmi in #2837
- Upgrade ruff and yamlfix to latest versions before running formatting by @christianversloot in #2577
- Fixed edge-case where step run is stored incompletely by @AlexejPenner in #2827
- Docs for stack registration + deployment wizards by @htahir1 in #2814
- Make upgrade checks in formatting script optional by @avishniakov in #2839
- Enable migration testing for version 0.61.0 by @schustmi in #2836
- One-click GCP stack deployments by @stefannica in #2833
- Only login to docker for PRs with secret access by @schustmi in #2842
- Add GCP Stack creation Wizard (CLI) by @avishniakov in #2826
- Update onboarding by @schustmi in #2794
- Merged log files in Step Ops steps might be not available on main process, due to merge in the step op by @avishniakov in #2795
- Fix some broken links, copy paste commands, and made secrets more visible by @htahir1 in #2848
- Update stack deployment docs and other small fixes by @stefannica in #2846
- Improved the
StepInterfaceError
message for missing inputs by @AlexejPenner in #2849 - add image pull secrets to k8s pod settings by @wjayesh in #2847
- Include apt installation of libgomp1 for docker images with lightgbm by @AlexejPenner in #2813
- Patch filter mflow by stage by @whoknowsb in #2798
- Bump mlflow to version 2.14.2 by @christianversloot in #2825
- Fix Accelerate string arguments passing by @avishniakov in #2845
- Fix CI by @schustmi in #2850
- Added some visualizations for the HF dataset by @htahir1 in #2851
- Fix skypilot versioning for the lambda integration by @wjayesh in #2853
- Improve custom visualization docs by @htahir1 in #2855
- Fix list typo by @htahir1 in #2856
- Endpoint to get existing and prospective resources for service connector by @avishniakov in #2854
- Databricks integrations by @safoinme in #2823
New Contributors
- @whoknowsb made their first contribution in #2798
Full Changelog: 0.61.0...0.62.0