Releases: zenml-io/zenml
0.7.0
With ZenML 0.7.0, a lot has been revamped under the hood about how things are stored. Importantly what this means is that ZenML now has system-wide profiles that let you register stacks to share across several of your projects! If you still want to manage your stacks for each project folder individually, profiles still let you do that as well.
Most projects of any complexity will require passwords or tokens to access data and infrastructure, and for this purpose ZenML 0.7.0 introduces the Secrets Manager stack component to seamlessly pass around these values to your steps. Our AWS integration also allows you to use AWS Secrets Manager as a backend to handle all your secret persistence needs.
Finally, in addition to the new AzureML and Sagemaker Step Operators that version 0.6.3 brought, this release also adds the ability to run individual steps on GCP's Vertex AI.
Beyond this, some smaller bugfixes and documentation changes combine to make ZenML 0.7.0 a more pleasant user experience.
What's Changed
- Added quick mention of how to use dockerignore by @AlexejPenner in #468
- Made rich traceback optional with ENV variable by @htahir1 in #472
- Separate stack persistence from repo implementation by @jwwwb in #462
- Adding safoine username to github team by @safoinme in #475
- Fix
zenml stack describe
bug by @strickvl in #476 - ZenProfiles and centralized ZenML repositories by @stefannica in #471
- Add
examples
folder to linting script by @strickvl in #482 - Vertex AI integration and numerous other changes by @htahir1 in #477
- Fix profile handing in the Azure ML step operator by @stefannica in #483
- Copy the entire stack configuration into containers by @stefannica in #480
- Improve some things with the Profiles CLI output by @stefannica in #484
- Secrets manager stack component and interface by @AlexejPenner in #470
- Update schedule.py (#485) by @avramdj in #485
New Contributors
Full Changelog: 0.6.3...0.7.0rc
0.6.3
0.6.3
With ZenML 0.6.3, you can now run your ZenML steps on Sagemaker and AzureML! It's normal to have certain steps that require specific hardware on which to run model training, for example, and this latest release gives you the power to switch out hardware for individual steps to support this.
We added a new Tensorboard visualisation that you can make use of when using our Kubeflow Pipelines integration. We handle the background processes needed to spin up this interactive web interface that you can use to visualise your model's performance over time.
Behind the scenes we gave our integration testing suite a massive upgrade, fixed a number of smaller bugs and made documentation updates. For a detailed look at what's changed, see below:
What's Changed
- Fix typo by @wjayesh in #432
- Remove tabulate dependency (replaced by rich) by @jwwwb in #436
- Fix potential issue with local integration tests by @schustmi in #428
- Remove support for python 3.6 by @schustmi in #437
- Create clean test repos in separate folders by @michael-zenml in #430
- Copy explicit materializers before modifying, log correct class by @schustmi in #434
- Fix typo in mysql password parameter by @pafpixel in #438
- Pytest-fixture for separate virtual environments for each integration test by @AlexejPenner in #405
- Bugfix/fix failing tests due to comments step by @AlexejPenner in #444
- Added --use-virtualenvs option to allow choosing envs to run by @AlexejPenner in #445
- Log whether a step was cached by @strickvl in #435
- Added basic integration tests for remaining examples by @strickvl in #439
- Improve error message when provisioning local kubeflow resources with a non-local container registry. by @schustmi in #442
- Enable generic step inputs and outputs by @schustmi in #440
- Removed old reference to a step that no longer exists by @AlexejPenner in #452
- Correctly use custom kubernetes context if specified by @schustmi in #451
- Fix CLI stack component describe/list commands by @schustmi in #450
- Ignore type of any tfx proto file by @schustmi in #453
- Another boyscout pr on the gh actions by @AlexejPenner in #455
- Upgrade TFX to 1.6.1 by @jwwwb in #441
- Added ZenFiles to README by @htahir1 in #457
- Upgrade
rich
from 11.0 to 12.0 by @strickvl in #458 - Add Kubeflow tensorboard viz and fix tensorflow file IO for cloud back-ends by @stefannica in #447
- Implementing the
explain
subcommand by @bcdurak in #460 - Implement AzureML and Sagemaker step operators by @schustmi in #456
New Contributors
0.6.2
ZenML 0.6.2 brings you the ability to serve models using MLflow deployments as well as an updated CLI interface! For a real continuous deployment cycle, we know that ZenML pipelines should be able to handle everything — from pre-processing to training to serving to monitoring and then potentially re-training and re-serving. The interfaces we created in this release are the foundation on which all of this will build.
We also improved how you interact with ZenML through the CLI. Everything looks so much smarter and readable now with the popular rich
library integrated into our dependencies.
Smaller changes that you'll notice include updates to our cloud integrations and bug fixes for Windows users. For a detailed look at what's changed, see below.
What's Changed
- Updated notebook for quickstart by @htahir1 in #398
- Update tensorflow base image by @schustmi in #396
- Add cloud specific deployment guide + refactoring by @wjayesh in #400
- add cloud sub page to toc.md by @wjayesh in #401
- fix tab indent by @wjayesh in #402
- Bugfix for workflows failing due to modules not being found by @bcdurak in #390
- Improve github workflows by @schustmi in #406
- Add plausible script to docs.zenml.io pages by @alex-zenml in #414
- Add orchestrator and ECR docs by @wjayesh in #413
- Richify the CLI by @alex-zenml in #392
- Allow specification of required integrations for a pipeline by @schustmi in #408
- Update quickstart in docs to conform to examples by @htahir1 in #410
- Updated PR template with some more details by @htahir1 in #411
- Bugfix on the CLI to work without a git installation by @bcdurak in #412
- Added Ayush's Handle by @ayush714 in #417
- Adding an info message on Windows if there is no application associated to .sh files by @bcdurak in #419
- Catch
matplotlib
crash when running IPython in terminal by @strickvl in #416 - Automatically activate integrations when unable to find stack component by @schustmi in #420
- Fix some code inspections by @halvgaard in #422
- Prepare integration tests on kubeflow by @schustmi in #423
- Add concepts back into glossary by @strickvl in #425
- Make guide easier to follow by @wjayesh in #427
- Fix httplib to 0.19 and pyparsing to 2.4 by @jwwwb in #426
- Wrap context serialization in try blocks by @jwwwb in #397
- Track stack configuration when registering and running a pipeline by @schustmi in #429
- MLflow deployment integration by @stefannica in #415
0.6.1
0.6.1
ZenML 0.6.1 is out and it's all about the cloud ☁️! We have improved AWS integration and a brand-new Azure integration! Run your pipelines on AWS and Azure now and let us know how it went on our Slack. To learn more, check out the new documentation page we just included to guide you in deploying your pipelines to AWS, GCP and/or Azure.
Smaller changes that you'll notice include much-awaited updates and fixes, including the first iterations of scheduling pipelines and tracking more reproducibility-relevant data in the metadata store.
For a detailed look at what's changed, see below.
What's Changed
- Update 0.6.0 release notes by @alex-zenml in #362
- Update 0.6.0 release notes (#362) by @alex-zenml in #364
- Fix cuda-dev base container image by @stefannica in #361
- [0.6.0] Fix cuda-dev base container image by @stefannica in #367
- Mark ZenML as typed package by @schustmi in #360
- Improve error message if ZenML repo is missing inside kubeflow container entrypoint by @schustmi in #363
- Spell whylogs and WhyLabs correctly in our docs by @stefannica in #369
- Feature/add readme for mkdocs by @AlexejPenner in #372
- Cleaning up the assets pushed by gitbook automatically by @bcdurak in #371
- Turn codecov off for patch updates by @htahir1 in #376
- Minor changes and fixes by @schustmi in #365
- Only include python files when building local docs by @schustmi in #377
- Prevent access to repo during step execution by @schustmi in #370
- Removed duplicated Section within docs by @AlexejPenner in #379
- Fixing the materializer registry to spot sub-classes of defined types by @bcdurak in #368
- Computing hash of step and materializer works in notebooks by @htahir1 in #375
- Sort requirements to improve docker build caching by @schustmi in #383
- Make sure the s3 artifact store is registered when the integration is activated by @schustmi in #382
- Make MLflow integration work with kubeflow and scheduled pipelines by @stefannica in #374
- Reset _has_been_called to False ahead of pipeline.connect by @AlexejPenner in #385
- Fix local airflow example by @schustmi in #366
- Improve and extend base materializer error messages by @schustmi in #380
- Windows CI issue by @schustmi in #389
- Add the ability to attach custom properties to the Metadata Store by @bcdurak in #355
- Handle case when return values do not match output by @AlexejPenner in #386
- Quickstart code in docs fixed by @AlexejPenner in #387
- Fix mlflow tracking example by @stefannica in #393
- Implement azure artifact store and fileio plugin by @schustmi in #388
- Create todo issues with separate issue type by @schustmi in #394
- Log that steps are cached while running pipeline by @alex-zenml in #381
- Schedule added to context for all orchestrators by @AlexejPenner in #391
- Fix lineage and statistics examples by @stefannica in #395
Full Changelog: 0.6.0...0.6.1
0.6.0
ZenML 0.6.0 is out now. We've made some big changes under the hood, but our biggest public-facing addition is our new integration to support all your data logging needs: whylogs
. Our core architecture was thoroughly reworked and is now in a much better place to support our ongoing development needs.
Smaller changes that you'll notice include extensive documentation additions, updates and fixes. For a detailed look at what's changed, see below.
📊 Whylogs logging
Whylogs is an open source library that analyzes your data and creates statistical summaries called whylogs profiles. Whylogs profiles can be visualized locally or uploaded to the WhyLabs platform where more comprehensive analysis can be carried out.
ZenML integrates seamlessly with Whylogs and WhyLabs. This example shows how easy it is to enhance steps in an existing ML pipeline with Whylogs profiling features. Changes to the user code are minimal while ZenML takes care of all aspects related to Whylogs session initialization, profile serialization, versioning and persistence and even uploading generated profiles to Whylabs.
With our WhylogsVisualizer
, as described in the associated example notes, you can visualize Whylogs profiles generated as part of a pipeline.
⛩ New Core Architecture
We implemented some fundamental changes to the core architecture to solve some of the issues we previously had and provide a more extensible design to support quicker implementations of different stack components and integrations. The main change was to refactor the Repository
, Stack
and StackComponent
architectures. These changes had a pretty wide impact so involved changes in many files throughout the codebase, especially in the CLI which makes calls to all these pieces.
We've already seen how it helps us move faster in building integrations and we hope it helps making contributions as pain-free as possible!
🗒 Documentation and Example Updates
As the codebase and functionality of ZenML grows, we always want to make sure our documentation is clear, up-to-date and easy to use. We made a number of changes in this release that will improve your experience in this regard:
- added a number of new explainers on key ZenML concepts and how to use them in your code, notably on how to create a custom materializer and how to fetch historic pipeline runs using the
StepContext
- fixed a number of typos and broken links
- added versioning to our API documentation so you can choose to view the reference appropriate to the version that you're using. We now use
mkdocs
for this so you'll notice a slight visual refresh as well. - added new examples highlighting specific use cases and integrations:
➕ Other updates, additions and fixes
As with most releases, we made a number of small but significant fixes and additions. The most import of these were that you can now access the metadata store via the step context. This enables a number of new possible workflows and pipeline patterns and we're really excited to have this in the release.
We added in a markdown parser for the zenml example info …
command, so now when you want to use our CLI to learn more about specific examples you will see beautifully parsed text and not markdown markup.
We improved a few of our error messages, too, like for when the return type of a step function doesn’t match the expected type, or if step is called twice. We hope this makes ZenML just that little bit easier to use.
New Contributors
- @bhattbhuwan13 made their first contribution in #317
- @wjayesh made their first contribution in #324
[Full Changelog: https://github.com/zenml-io/zenml/compare/0.5.7...0.6.0]
0.5.7
0.5.7
ZenML 0.5.7 is here 💯 and it brings not one, but 🔥TWO🔥 brand new integrations 🚀! ZenML now support MLFlow for tracking pipelines as experiments and Evidently for detecting drift in your ML pipelines in production!
New Features
- Introducing the MLFLow Tracking Integration, a first step towards our complete MLFlow Integration as described in the #115 poll. Full example found here.
- Introducing the Evidently integration. Use the standard Evidently drift detection step to calculate drift automatically in your pipeline. Full example found here.
Bugfixes
- Prevent KFP install timeouts during
stack up
by @stefannica in #299 - Prevent naming parameters same name as inputs/outputs to prevent kwargs-errors by @bcdurak in #300
What's Changed
- Force pull overwrites local examples without user confirmation by @AlexejPenner in #278
- Updated README with latest features by @htahir1 in #280
- Integration test the examples within ci pipeline by @AlexejPenner in #282
- Add exception for missing system requirements by @kamalesh0406 in #281
- Examples are automatically pulled if not present before any example command is run by @AlexejPenner in #279
- Add pipeline error for passing the same step object twice by @kamalesh0406 in #283
- Create pytest fixture to use a temporary zenml repo in tests by @htahir1 in #287
- Additional example run implementations for standard interfaces, functional and class based api by @AlexejPenner in #286
- Make pull_request.yaml actually use os.runner instead of ubuntu by @htahir1 in #288
- In pytest return to previous workdir before tearing down tmp_dir fixture by @AlexejPenner in #289
- Don't raise an exception during integration installation if system requirement is not installed by @schustmi in #291
- Update starting page for the API docs by @alex-zenml in #294
- Add
stack up
failure prompts by @alex-zenml in #290 - Spelling fixes by @alex-zenml in #295
- Remove instructions to git init from docs by @bcdurak in #293
- Fix the
stack up
andorchestrator up
failure prompts by @stefannica in #297 - Prevent KFP install timeouts during
stack up
by @stefannica in #299 - Add stefannica to list of internal github users by @stefannica in #303
- Improve KFP UI daemon error messages by @schustmi in #292
- Replaced old diagrams with new ones in the docs by @AlexejPenner in #306
- Fix broken links & text formatting in docs by @alex-zenml in #302
- Run KFP container as local user/group if local by @stefannica in #304
- Add james to github team by @jwwwb in #308
- Implement integration of mlflow tracking by @AlexejPenner in #301
- Bugfix integration tests on windows by @jwwwb in #296
- Prevent naming parameters same name as inputs/outputs to prevent kwargs-errors by @bcdurak in #300
- Add tests for
fileio
by @alex-zenml in #298 - Evidently integration (standard steps and example) by @alex-zenml in #307
- Implemented evidently integration by @stefannica in #310
- Make mlflow example faster by @AlexejPenner in #312
New Contributors
- @kamalesh0406 made their first contribution in #281
- @stefannica made their first contribution in #297
- @jwwwb made their first contribution in #308
0.5.6
) * (
( /( ( ` )\ )
)\()) ( )\))( (()/(
((_)\ ))\ ( ((_)()\ /(_))
_((_) /((_) )\ ) (_()((_) (_))
|_ / (_)) _(_/( | \/ | | |
/ / / -_) | ' \)) | |\/| | | |__
/___| \___| |_||_| |_| |_| |____|
This release fixes some known bugs from previous releases and especially 0.5.5. Therefore, upgrading to 0.5.6 is a breaking change. You must do the following in order to proceed with this version:
cd zenml_enabled_repo
rm -rf .zen/
And then start again with ZenML init:
pip install --upgrade zenml
zenml init
New Features
- Added
zenml example run [EXAMPLE_RUN_NAME]
feature: The ability to run an example with one command. In order to run this, dozenml example pull
first and see all examples available by runningzenml example list
. - Added ability to specify a
.dockerignore
file before running pipelines on Kubeflow. - Kubeflow Orchestrator is now leaner and faster.
- Added the
describe
command group to the CLI for groupsstack
,orchestrator
,artifact-store
, andmetadata-store
. E.g.zenml stack describe
Bug fixes and minor improvements
- Adding
StepContext
to a branch now invalidates caching by default. Disable explicitly withenable_cache=True
. - Docs updated to reflect minor changes in CLI commands.
- CLI
list
commands now mentions active component. Tryzenml stack list
to check this out. zenml version
now has cooler art.
What's Changed
- Delete blog reference from release notes by @alex-zenml in #228
- Docs updates by @alex-zenml in #229
- Update kubeflow guide by @schustmi in #230
- Updated quickstart to reflect newest zenml version by @alexej-zenml in #231
- Add KFP GCP example readme by @schustmi in #233
- Baris/update docs with class api by @bcdurak in #232
- fixing a small typo [ci skip] by @bcdurak in #236
- Hamza/docs last min updates by @htahir1 in #234
- fix broken links by @alex-zenml in #237
- added one more page for standardized artifacts [ci skip] by @bcdurak in #238
- Unified use of cli_utils.print_table for all table format cli printouts by @AlexejPenner in #240
- Remove unused tfx kubeflow code by @schustmi in #239
- Relaxed typing requirements for cli_utils.print_table by @AlexejPenner in #241
- Pass input artifact types to kubeflow container entrypoint by @schustmi in #242
- Catch duplicate run name error and throw custom exception by @schustmi in #243
- Improved logs by @htahir1 in #244
- CLI active component highlighting by @alex-zenml in #245
- Baris/eng 244 clean up by @bcdurak in #246
- CLI describe command by @alex-zenml in #248
- Alexej/eng 35 run examples from cli by @AlexejPenner in #253
- CLI argument and option flag consistency improvements by @alex-zenml in #250
- Invalidate caching when a step requires a step context by @schustmi in #252
- Implement better error messages for custom step output artifact types by @schustmi in #254
- Small improvements by @schustmi in #251
- Kubeflow dockerignore by @schustmi in #249
- Rename container registry folder to be consistent with the other stack components by @schustmi in #257
- Update todo script by @schustmi in #256
- Update docs following CLI change by @alex-zenml in #255
- Bump mypy version by @schustmi in #258
- Kubeflow Windows daemon alternative by @schustmi in #259
- Run pre commit in local environment by @schustmi in #260
- Hamza/eng 269 move beam out by @htahir1 in #262
- Update docs by @alex-zenml in #261
- Hamza/update readme with contribitions by @htahir1 in #271
- Hamza/eng 256 backoff analytics by @htahir1 in #270
- Add spellcheck by @alex-zenml in #264
- Using the pipeline run name to explicitly access when explaining the … by @AlexejPenner in #263
- Import user main module in kubeflow entrypoint to make sure all components are registered by @schustmi in #273
- Fix cli version command by @schustmi in #272
- User is informed of version mismatch and example pull defaults to cod… by @AlexejPenner in #274
- Hamza/eng 274 telemetry by @htahir1 in #275
- Update docs with right commands and events by @htahir1 in #276
- Fixed type annotation for some python versions by @AlexejPenner in #277
Full Changelog: 0.5.5...0.5.6
0.5.5
ZenML 0.5.5 is jam-packed with new features to take your ML pipelines to the next level. Our three biggest new features: Kubeflow Pipelines, CLI support for our integrations and Standard Interfaces. That’s right, Standard Interfaces are back!
What's Changed
- Implement base component tests by @schustmi in #211
- Add chapter names by @alex-zenml in #212
- Fix docstring error by @alex-zenml in #213
- Hamza/add caching example by @htahir1 in #214
- Update readme by @alex-zenml in #216
- Hamza/add small utils by @htahir1 in #219
- Update docs by @alex-zenml in #220
- Docs fixes by @alex-zenml in #222
- Baris/eng 182 standard interfaces by @bcdurak in #209
- Fix naming error by @alex-zenml in #221
- Remove framework design by @alex-zenml in #224
- Alexej/eng 234 zenml integration install by @alexej-zenml in #223
- Fix deployment section order by @alex-zenml in #225
- the readme of the example by @bcdurak in #227
- Kubeflow integration by @schustmi in #226
New Contributors
- @alexej-zenml made their first contribution in #223
Full Changelog: 0.5.4...0.5.5
0.5.4
0.5.4 adds a lineage tracking integration to visualize lineage of pipeline runs! It also includes numerous bug fixes and optimizations.
What's Changed
- Fix typos by @alex-zenml in #192
- Fix Apache Beam bug by @alex-zenml in #194
- Fix apache beam logging bug by @alex-zenml in #195
- Add step context by @schustmi in #196
- Init docstrings by @alex-zenml in #197
- Hamza/small fixes by @htahir1 in #199
- Fix writing to metadata store with airflow orchestrator by @schustmi in #198
- Use pipeline parameter name as step name in post execution by @schustmi in #200
- Add error message when step name is not in metadata store by @schustmi in #201
- Add option to set repo location using an environment variable by @schustmi in #202
- Run cloudbuild after pypi publish by @schustmi in #203
- Refactor component generation by @schustmi in #204
- Removed unnecessary panel dependency by @htahir1 in #206
- Updated README to successively install requirements by @AlexejPenner in #205
- Store active stack in local config by @schustmi in #208
- Hamza/eng 125 lineage tracking vis by @htahir1 in #207
New Contributors
- @AlexejPenner made their first contribution in #205
Full Changelog: 0.5.3...0.5.4
0.5.3
Version 0.5.3 adds statistics visualizations, greatly improved speed for CLI commands as well as lots of small improvements to the pipeline and step interface.
What's Changed
- Make tests run in a random order by @alex-zenml in #160
- Connect steps using *args by @schustmi in #162
- Move location of repobeats image by @alex-zenml in #163
- Hamza/add sam by @htahir1 in #165
- Pipeline initialization with *args by @schustmi in #164
- Improve detection of third party modules during class resolving by @schustmi in #167
- Merge path_utils into fileio & refactor what was left by @alex-zenml in #168
- Update docker files by @schustmi in #169
- Hamza/deploy api reference by @htahir1 in #171
- API Reference by @schustmi in #172
- Add colour back into our github actions by @alex-zenml in #176
- Refactor tests not raising by @alex-zenml in #177
- Improve step and pipeline interface by @schustmi in #175
- Alex/eng 27 windows bug again by @htahir1 in #178
- Automated todo tracking by @schustmi in #173
- Fix mypy issues related to windows by @schustmi in #179
- Include Github URL to TODO comment in issue by @schustmi in #181
- Create Visualizers logic by @htahir1 in #182
- Add README for visualizers examples by @alex-zenml in #184
- Allow None as default value for BaseStep configs by @schustmi in #185
- Baris/eng 37 standard import check by @bcdurak in #183
- Replace duplicated code by call to source_utils.resolve_class by @schustmi in #186
- Remove unused base enum cases by @schustmi in #187
- Testing mocks for CLI
examples
command by @alex-zenml in #180 - Set the correct module for steps created using our decorator by @schustmi in #188
- Fix some cli commands by @schustmi in #189
- Tag jira issues for which the todo was deleted by @schustmi in #190
- Remove deadlinks by @alex-zenml in #191
Full Changelog: 0.5.2...0.5.3