zenml-nightly 0.62.0.dev20240729__py3-none-any.whl → 0.64.0.dev20240809__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +2 -2
- RELEASE_NOTES.md +120 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +0 -4
- zenml/actions/pipeline_run/pipeline_run_action.py +19 -17
- zenml/analytics/enums.py +4 -6
- zenml/cli/__init__.py +28 -76
- zenml/cli/base.py +2 -2
- zenml/cli/pipeline.py +54 -61
- zenml/cli/stack.py +6 -8
- zenml/cli/web_login.py +8 -0
- zenml/client.py +232 -103
- zenml/config/build_configuration.py +43 -17
- zenml/config/compiler.py +14 -22
- zenml/config/docker_settings.py +80 -57
- zenml/config/pipeline_run_configuration.py +3 -0
- zenml/config/server_config.py +3 -0
- zenml/config/source.py +60 -1
- zenml/constants.py +11 -2
- zenml/entrypoints/base_entrypoint_configuration.py +53 -8
- zenml/enums.py +4 -1
- zenml/environment.py +25 -9
- zenml/image_builders/base_image_builder.py +1 -1
- zenml/image_builders/build_context.py +25 -72
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +13 -4
- zenml/integrations/azure/__init__.py +4 -0
- zenml/integrations/azure/flavors/__init__.py +11 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +263 -0
- zenml/{_hub → integrations/azure/orchestrators}/__init__.py +7 -2
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +544 -0
- zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +86 -0
- zenml/integrations/azure/step_operators/azureml_step_operator.py +3 -0
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +20 -2
- zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +19 -13
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +7 -2
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +123 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +1 -1
- zenml/integrations/mlflow/__init__.py +1 -1
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +3 -1
- zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +3 -0
- zenml/logger.py +13 -0
- zenml/models/__init__.py +26 -22
- zenml/models/v2/base/filter.py +32 -0
- zenml/models/v2/core/pipeline.py +73 -89
- zenml/models/v2/core/pipeline_build.py +15 -11
- zenml/models/v2/core/pipeline_deployment.py +72 -24
- zenml/models/v2/core/pipeline_run.py +65 -1
- zenml/models/v2/core/run_template.py +393 -0
- zenml/models/v2/core/server_settings.py +12 -0
- zenml/models/v2/core/user.py +0 -21
- zenml/models/v2/misc/server_models.py +7 -1
- zenml/models/v2/misc/stack_deployment.py +5 -0
- zenml/models/v2/misc/user_auth.py +0 -7
- zenml/new/pipelines/build_utils.py +220 -89
- zenml/new/pipelines/code_archive.py +157 -0
- zenml/new/pipelines/pipeline.py +46 -78
- zenml/new/pipelines/run_utils.py +79 -1
- zenml/post_execution/pipeline.py +1 -4
- zenml/service_connectors/service_connector_utils.py +18 -2
- zenml/stack_deployments/aws_stack_deployment.py +32 -8
- zenml/stack_deployments/azure_stack_deployment.py +122 -10
- zenml/stack_deployments/gcp_stack_deployment.py +36 -7
- zenml/stack_deployments/stack_deployment.py +23 -7
- zenml/steps/base_step.py +3 -0
- zenml/steps/utils.py +0 -4
- zenml/utils/archivable.py +149 -0
- zenml/utils/code_utils.py +244 -0
- zenml/utils/notebook_utils.py +122 -0
- zenml/utils/package_utils.py +39 -0
- zenml/utils/pipeline_docker_image_builder.py +3 -96
- zenml/utils/source_utils.py +109 -1
- zenml/zen_server/dashboard/assets/{404-B_YdvmwS.js → 404-CRAA_Lew.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-BXWm7HOa.js +85 -0
- zenml/zen_server/dashboard/assets/{@react-router-CO-OsFwI.js → @react-router-l3lMcXA2.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-l_1hUr1S.js → @reactflow-CeVxyqYT.js} +2 -2
- zenml/zen_server/dashboard/assets/{@tanstack-DYiOyJUL.js → @tanstack-FmcYZMuX.js} +4 -4
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-ErO9aOgK.js +1 -0
- zenml/zen_server/dashboard/assets/{AwarenessChannel-CFg5iX4Z.js → AwarenessChannel-CLXo5rKM.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-Dvkx_82E.js → CodeSnippet-D0VLxT2A.js} +2 -2
- zenml/zen_server/dashboard/assets/CollapsibleCard-BaUPiVg0.js +1 -0
- zenml/zen_server/dashboard/assets/{Commands-DoN1xrEq.js → Commands-JrcZK-3j.js} +1 -1
- zenml/zen_server/dashboard/assets/CopyButton-Dbo52T1K.js +2 -0
- zenml/zen_server/dashboard/assets/{CsvVizualization-Ck-nZ43m.js → CsvVizualization-D3kAypDj.js} +3 -3
- zenml/zen_server/dashboard/assets/DisplayDate-DizbSeT-.js +1 -0
- zenml/zen_server/dashboard/assets/EditSecretDialog-Bd7mFLS4.js +1 -0
- zenml/zen_server/dashboard/assets/{EmptyState-BMLnFVlB.js → EmptyState-BHblM39I.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-kLtljEOM.js → Error-C6LeJSER.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-DguLLgTK.js → ExecutionStatus-jH4OrWBq.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-BXUMP21n.js → Helpbox-aAB2XP-z.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-DSt0O-dm.js → Infobox-BQ0aty32.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-xsrsIGE-.js → InlineAvatar-DpTLgM3Q.js} +1 -1
- zenml/zen_server/dashboard/assets/Lock-CNyJvf2r.js +1 -0
- zenml/zen_server/dashboard/assets/{MarkdownVisualization-xp3hhULl.js → MarkdownVisualization-Bajxn0HY.js} +1 -1
- zenml/zen_server/dashboard/assets/NumberBox-BmKE0qnO.js +1 -0
- zenml/zen_server/dashboard/assets/{PasswordChecker-DUveqlva.js → PasswordChecker-yGGoJSB-.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-BBqkIuTd.js +1 -0
- zenml/zen_server/dashboard/assets/RadioItem-xLhXoiFV.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-C9R0mdaX.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-BXGTWiwj.js → SetPassword-52sNxNiO.js} +1 -1
- zenml/zen_server/dashboard/assets/{SuccessStep-DZC60t0x.js → SuccessStep-DlkItqYG.js} +1 -1
- zenml/zen_server/dashboard/assets/Tick-uxv80Q6a.js +1 -0
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DGvwFWO1.js → UpdatePasswordSchemas-oN4G3sKz.js} +1 -1
- zenml/zen_server/dashboard/assets/{aws-BgKTfTfx.js → aws-0_3UsPif.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-i56092KI.js → check-circle-1_I207rW.js} +1 -1
- zenml/zen_server/dashboard/assets/chevron-down-BpaF8JqM.js +1 -0
- zenml/zen_server/dashboard/assets/{chevron-right-double-CZBOf6JM.js → chevron-right-double-Dk8e2L99.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-C_yFCAkP.js → cloud-only-BkUuI0lZ.js} +1 -1
- zenml/zen_server/dashboard/assets/components-Br2ezRib.js +1 -0
- zenml/zen_server/dashboard/assets/{copy-BXNk6BjL.js → copy-f3XGPPxt.js} +1 -1
- zenml/zen_server/dashboard/assets/{database-1xWSgZfO.js → database-cXYNX9tt.js} +1 -1
- zenml/zen_server/dashboard/assets/{docker-CQMVm_4d.js → docker-8uj__HHK.js} +1 -1
- zenml/zen_server/dashboard/assets/dots-horizontal-sKQlWEni.js +1 -0
- zenml/zen_server/dashboard/assets/edit-C0MVvPD2.js +1 -0
- zenml/zen_server/dashboard/assets/{file-text-CqD_iu6l.js → file-text-B9JibxTs.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-bu_DgLKI.js → help-FuHlZwn0.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-rK_Wuy2W.js → index-Bd1xgUQG.js} +1 -1
- zenml/zen_server/dashboard/assets/index-DaGknux4.css +1 -0
- zenml/zen_server/dashboard/assets/{index-BczVOqUf.js → index-DhIZtpxB.js} +5 -5
- zenml/zen_server/dashboard/assets/index.esm-DT4uyn2i.js +1 -0
- zenml/zen_server/dashboard/assets/layout-D6oiSbfd.js +1 -0
- zenml/zen_server/dashboard/assets/{login-mutation-CrHrndTI.js → login-mutation-13A_JSVA.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-D8k8BVFf.js → logs-CgeE2vZP.js} +1 -1
- zenml/zen_server/dashboard/assets/{not-found-DYa4pC-C.js → not-found-B0Mmb90p.js} +1 -1
- zenml/zen_server/dashboard/assets/package-DdkziX79.js +1 -0
- zenml/zen_server/dashboard/assets/page-7-v2OBm-.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MFQyIJd3.js → page-B3ozwdD1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BkuQDIf-.js → page-BGwA9B1M.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1iL8aMqs.js → page-BkjAUyTA.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BnacgBiy.js +1 -0
- zenml/zen_server/dashboard/assets/page-BxF_KMQ3.js +2 -0
- zenml/zen_server/dashboard/assets/page-C4POHC0K.js +1 -0
- zenml/zen_server/dashboard/assets/page-C9kudd44.js +9 -0
- zenml/zen_server/dashboard/assets/page-CA1j3GpJ.js +1 -0
- zenml/zen_server/dashboard/assets/page-CCY6yfmu.js +1 -0
- zenml/zen_server/dashboard/assets/page-CgTe7Bme.js +1 -0
- zenml/zen_server/dashboard/assets/{page-8a4UMKXZ.js → page-Cgn-6v2Y.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CxQmQqDw.js +1 -0
- zenml/zen_server/dashboard/assets/page-D2Goey3H.js +1 -0
- zenml/zen_server/dashboard/assets/page-DLpOnf7u.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BhgCDInH.js → page-DSTQnBk-.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1h_sD1jz.js → page-DTysUGOy.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-2grKx_MY.js → page-D_EXUFJb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Db15QzsM.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDns21Iz.js → page-DugsjcQ_.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-C6-UGEbH.js → page-OFKSPyN7.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BkeAAYwp.js → page-RnG-qhv9.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CCNRIt_f.js → page-T2BtjwPl.js} +1 -1
- zenml/zen_server/dashboard/assets/page-TXe1Eo3Z.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BnaevhnB.js → page-YiF_fNbe.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uA5prJGY.js → page-hQaiQXfg.js} +1 -1
- zenml/zen_server/dashboard/assets/persist-3-5nOJ6m.js +1 -0
- zenml/zen_server/dashboard/assets/{play-circle-CNtZKDnW.js → play-circle-XSkLR12B.js} +1 -1
- zenml/zen_server/dashboard/assets/plus-FB9-lEq_.js +1 -0
- zenml/zen_server/dashboard/assets/refresh-COb6KYDi.js +1 -0
- zenml/zen_server/dashboard/assets/sharedSchema-BoYx_B_L.js +14 -0
- zenml/zen_server/dashboard/assets/{stack-detail-query-Cficsl6d.js → stack-detail-query-B-US_-wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{terminal-By9cErXc.js → terminal-grtjrIEJ.js} +1 -1
- zenml/zen_server/dashboard/assets/trash-Cd5CSFqA.js +1 -0
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-7d8xi1tS.js → update-server-settings-mutation-B8GB_ubU.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-D7mAQGUM.js → url-hcMJkz8p.js} +1 -1
- zenml/zen_server/dashboard/assets/{zod-BhoGpZ63.js → zod-CnykDKJj.js} +1 -1
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
- zenml/zen_server/dashboard_legacy/index.html +1 -1
- zenml/zen_server/dashboard_legacy/{precache-manifest.12246c7548e71e2c4438e496360de80c.js → precache-manifest.9c473c96a43298343a7ce1256183123b.js} +4 -4
- zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
- zenml/zen_server/dashboard_legacy/static/js/{main.3b27024b.chunk.js → main.463c90b9.chunk.js} +2 -2
- zenml/zen_server/dashboard_legacy/static/js/{main.3b27024b.chunk.js.map → main.463c90b9.chunk.js.map} +1 -1
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/rbac/models.py +1 -0
- zenml/zen_server/rbac/utils.py +4 -0
- zenml/zen_server/routers/pipeline_builds_endpoints.py +2 -66
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +2 -53
- zenml/zen_server/routers/pipelines_endpoints.py +1 -74
- zenml/zen_server/routers/run_templates_endpoints.py +212 -0
- zenml/zen_server/routers/stack_deployment_endpoints.py +6 -0
- zenml/zen_server/routers/users_endpoints.py +0 -7
- zenml/zen_server/routers/workspaces_endpoints.py +79 -0
- zenml/zen_server/{pipeline_deployment → template_execution}/runner_entrypoint_configuration.py +1 -8
- zenml/zen_server/{pipeline_deployment → template_execution}/utils.py +214 -92
- zenml/zen_server/utils.py +77 -2
- zenml/zen_server/zen_server_api.py +54 -2
- zenml/zen_stores/base_zen_store.py +7 -1
- zenml/zen_stores/migrations/versions/0.63.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.64.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/026d4577b6a0_add_code_path.py +39 -0
- zenml/zen_stores/migrations/versions/3dcc5d20e82f_add_last_user_activity.py +51 -0
- zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py +100 -0
- zenml/zen_stores/migrations/versions/909550c7c4da_remove_user_hub_token.py +36 -0
- zenml/zen_stores/migrations/versions/b59aa68fdb1f_simplify_pipelines.py +139 -0
- zenml/zen_stores/rest_zen_store.py +112 -39
- zenml/zen_stores/schemas/__init__.py +2 -0
- zenml/zen_stores/schemas/pipeline_build_schemas.py +3 -3
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +32 -2
- zenml/zen_stores/schemas/pipeline_run_schemas.py +29 -3
- zenml/zen_stores/schemas/pipeline_schemas.py +29 -30
- zenml/zen_stores/schemas/run_template_schemas.py +264 -0
- zenml/zen_stores/schemas/server_settings_schemas.py +2 -0
- zenml/zen_stores/schemas/step_run_schemas.py +11 -4
- zenml/zen_stores/schemas/user_schemas.py +0 -2
- zenml/zen_stores/sql_zen_store.py +389 -151
- zenml/zen_stores/template_utils.py +261 -0
- zenml/zen_stores/zen_store_interface.py +93 -20
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/METADATA +3 -3
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/RECORD +211 -184
- zenml/_hub/client.py +0 -289
- zenml/_hub/constants.py +0 -21
- zenml/_hub/utils.py +0 -79
- zenml/cli/hub.py +0 -1116
- zenml/models/v2/core/pipeline_namespace.py +0 -113
- zenml/models/v2/misc/hub_plugin_models.py +0 -79
- zenml/new/pipelines/deserialization_utils.py +0 -292
- zenml/zen_server/dashboard/assets/@radix-CFOkMR_E.js +0 -85
- zenml/zen_server/dashboard/assets/CollapsibleCard-opiuBHHc.js +0 -1
- zenml/zen_server/dashboard/assets/CopyButton-Cr7xYEPb.js +0 -2
- zenml/zen_server/dashboard/assets/DisplayDate-DYgIjlDF.js +0 -1
- zenml/zen_server/dashboard/assets/Pagination-C6X-mifw.js +0 -1
- zenml/zen_server/dashboard/assets/index-EpMIKgrI.css +0 -1
- zenml/zen_server/dashboard/assets/index.esm-Corw4lXQ.js +0 -1
- zenml/zen_server/dashboard/assets/package-B3fWP-Dh.js +0 -1
- zenml/zen_server/dashboard/assets/page-5NCOHOsy.js +0 -1
- zenml/zen_server/dashboard/assets/page-B6h3iaHJ.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bi-wtWiO.js +0 -5
- zenml/zen_server/dashboard/assets/page-Bq0YxkLV.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bs2F4eoD.js +0 -2
- zenml/zen_server/dashboard/assets/page-CHNxpz3n.js +0 -1
- zenml/zen_server/dashboard/assets/page-DgorQFqi.js +0 -1
- zenml/zen_server/dashboard/assets/page-K8ebxVIs.js +0 -1
- zenml/zen_server/dashboard/assets/page-TgCF0P_U.js +0 -1
- zenml/zen_server/dashboard/assets/page-ZnCEe-eK.js +0 -9
- zenml/zen_server/dashboard/assets/persist-D7HJNBWx.js +0 -1
- zenml/zen_server/dashboard/assets/plus-C8WOyCzt.js +0 -1
- zenml/zen_server/dashboard/assets/secrets-video-OBJ6irhH.svg +0 -21
- zenml/zen_server/dashboard/assets/stacks-video-7gfxpAq4.svg +0 -21
- /zenml/zen_server/{pipeline_deployment → template_execution}/__init__.py +0 -0
- /zenml/zen_server/{pipeline_deployment → template_execution}/workload_manager_interface.py +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/entry_points.txt +0 -0
README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<div align="center">
|
2
2
|
<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=0fcbab94-8fbe-4a38-93e8-c2348450a42e" />
|
3
|
-
<h1 align="center">
|
3
|
+
<h1 align="center">Connecting data science teams seamlessly to cloud infrastructure.
|
4
4
|
</h1>
|
5
5
|
</div>
|
6
6
|
|
@@ -327,7 +327,7 @@ the Apache License Version 2.0.
|
|
327
327
|
<a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
|
328
328
|
<br />
|
329
329
|
<br />
|
330
|
-
🎉 Version 0.
|
330
|
+
🎉 Version 0.64.0 is out. Check out the release notes
|
331
331
|
<a href="https://github.com/zenml-io/zenml/releases">here</a>.
|
332
332
|
<br />
|
333
333
|
🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.
|
RELEASE_NOTES.md
CHANGED
@@ -1,4 +1,124 @@
|
|
1
1
|
<!-- markdown-link-check-disable -->
|
2
|
+
|
3
|
+
# 0.64.0
|
4
|
+
|
5
|
+
## New Features and Improvements
|
6
|
+
|
7
|
+
### Notebook Integration
|
8
|
+
|
9
|
+
ZenML now supports running steps defined in notebook cells with remote
|
10
|
+
orchestrators and step operators. This feature enhances the development
|
11
|
+
workflow by allowing seamless transition from experimentation to production.
|
12
|
+
|
13
|
+
- **Details**: [Running remote pipelines from notebooks](https://docs.zenml.io/v/docs/how-to/run-remote-pipelines-from-notebooks)
|
14
|
+
|
15
|
+
### Reduced Docker Builds with Code Uploads
|
16
|
+
|
17
|
+
We've introduced an option to upload code to the artifact store, enabling
|
18
|
+
Docker build reuse. This feature can significantly speed up iteration,
|
19
|
+
especially when working with remote stacks.
|
20
|
+
|
21
|
+
- **Default**: Enabled
|
22
|
+
- **Configuration**: To disable, set `DockerSettings.allow_download_from_artifact_store=False`
|
23
|
+
for steps or pipelines
|
24
|
+
- **Benefits**:
|
25
|
+
- Faster development cycles
|
26
|
+
- No need to register a code repository to reuse builds
|
27
|
+
- Builds only occur when requirements or DockerSettings change
|
28
|
+
- **Documentation**: [Which files are built into the image](https://docs.zenml.io/how-to/customize-docker-builds/which-files-are-built-into-the-image)
|
29
|
+
|
30
|
+
### AzureML Orchestrator Support
|
31
|
+
|
32
|
+
ZenML now supports [AzureML](https://azure.microsoft.com/en-gb/free/machine-learning)
|
33
|
+
as an orchestrator, expanding our list of supported cloud platforms.
|
34
|
+
|
35
|
+
- **Full Azure Guide**: [Setting up an Azure stack](https://docs.zenml.io/how-to/popular-integrations/azure-guide)
|
36
|
+
- **Documentation**: [AzureML orchestrator](https://docs.zenml.io/stack-components/orchestrators/azureml)
|
37
|
+
|
38
|
+
### Terraform Modules
|
39
|
+
|
40
|
+
We've released new Terraform modules on the Hashicorp registry for
|
41
|
+
provisioning complete MLOps stacks across major cloud providers.
|
42
|
+
|
43
|
+
- **Features**:
|
44
|
+
- Automate infrastructure setup for ZenML stack deployment
|
45
|
+
- Handle registration of configurations to ZenML server
|
46
|
+
- **More Information**: [MLOps Terraform ZenML blog post](https://www.zenml.io/blog/mlops-terraform-zenml)
|
47
|
+
|
48
|
+
These updates aim to streamline the MLOps workflow, making it easier to
|
49
|
+
develop, deploy, and manage machine learning pipelines with ZenML.
|
50
|
+
|
51
|
+
## What's Changed
|
52
|
+
|
53
|
+
* Add 0.63.0 to migration testing by @bcdurak in https://github.com/zenml-io/zenml/pull/2893
|
54
|
+
* Document terraform stack deployment modules by @stefannica in https://github.com/zenml-io/zenml/pull/2898
|
55
|
+
* README update by @htahir1 in https://github.com/zenml-io/zenml/pull/2901
|
56
|
+
* Enable `Databricks` Unity Catalog for MLflow by @safoinme in https://github.com/zenml-io/zenml/pull/2900
|
57
|
+
* Make urls pop out from the sea of purple/cyan in the logs by @AlexejPenner in https://github.com/zenml-io/zenml/pull/2894
|
58
|
+
* Add terraform as a supported stack deployment provider by @stefannica in https://github.com/zenml-io/zenml/pull/2902
|
59
|
+
* Fix `Model` imports in docs by @strickvl in https://github.com/zenml-io/zenml/pull/2907
|
60
|
+
* Remove hub references by @schustmi in https://github.com/zenml-io/zenml/pull/2905
|
61
|
+
* Bump NLP template by @avishniakov in https://github.com/zenml-io/zenml/pull/2912
|
62
|
+
* Updated step operator docs by @htahir1 in https://github.com/zenml-io/zenml/pull/2908
|
63
|
+
* Added lightning studio check by @htahir1 in https://github.com/zenml-io/zenml/pull/2910
|
64
|
+
* Upload code to artifact store by @schustmi in https://github.com/zenml-io/zenml/pull/2895
|
65
|
+
* AzureML orchestrator by @bcdurak in https://github.com/zenml-io/zenml/pull/2873
|
66
|
+
* Run steps defined in notebooks with remote orchestrators by @schustmi in https://github.com/zenml-io/zenml/pull/2899
|
67
|
+
* Fix broken / unparsable md docs file by @strickvl in https://github.com/zenml-io/zenml/pull/2916
|
68
|
+
* Bump mlflow to 2.15.0 by @christianversloot in https://github.com/zenml-io/zenml/pull/2896
|
69
|
+
* Remove extra button by @schustmi in https://github.com/zenml-io/zenml/pull/2918
|
70
|
+
* Added last timestamp to zenserver by @htahir1 in https://github.com/zenml-io/zenml/pull/2913
|
71
|
+
* A pipeline can't finish successfully in this case by @AlexejPenner in https://github.com/zenml-io/zenml/pull/2903
|
72
|
+
* Fix the GCP Workload Identity Federation support in the GCP Service Connector by @stefannica in https://github.com/zenml-io/zenml/pull/2914
|
73
|
+
* Embeddings finetuning guide for LLMOps guide by @strickvl in https://github.com/zenml-io/zenml/pull/2917
|
74
|
+
|
75
|
+
## 🥳 Community Contributions 🥳
|
76
|
+
|
77
|
+
We'd like to give a special thanks to @christianversloot who contributed to
|
78
|
+
this release by bumping the `mlflow` version to 2.15.0
|
79
|
+
|
80
|
+
**Full Changelog**: https://github.com/zenml-io/zenml/compare/0.63.0...0.64.0
|
81
|
+
|
82
|
+
# 0.63.0
|
83
|
+
|
84
|
+
Moving forward from the last two releases, we have further improved the
|
85
|
+
1-click deployment tool and the stack wizard by adding support for Azure.
|
86
|
+
|
87
|
+
Moreover, we implemented a new step operator that allows you to run individual
|
88
|
+
steps of your pipeline in Kubernetes pods.
|
89
|
+
|
90
|
+
Lastly, we have simplified our pipeline models by removing their versions.
|
91
|
+
|
92
|
+
## What's Changed
|
93
|
+
* Enable cloud build service in GCP stack deployment by @stefannica in https://github.com/zenml-io/zenml/pull/2864
|
94
|
+
* Adding a `logo_url` and the of the `integration` to component responses by @bcdurak in https://github.com/zenml-io/zenml/pull/2866
|
95
|
+
* Use REST in Model tests by @avishniakov in https://github.com/zenml-io/zenml/pull/2834
|
96
|
+
* Add Azure stack wizard by @avishniakov in https://github.com/zenml-io/zenml/pull/2841
|
97
|
+
* Migration testing for 0.62.0 by @schustmi in https://github.com/zenml-io/zenml/pull/2860
|
98
|
+
* Fix RBAC in combination with lazy loaders by @schustmi in https://github.com/zenml-io/zenml/pull/2869
|
99
|
+
* Misc cleanup after release by @schustmi in https://github.com/zenml-io/zenml/pull/2861
|
100
|
+
* Disable notebook error for Kubernetes orchestrator by @strickvl in https://github.com/zenml-io/zenml/pull/2870
|
101
|
+
* Added ability to add labels to k8s pod by @htahir1 in https://github.com/zenml-io/zenml/pull/2872
|
102
|
+
* Fix zenml pro links by @schustmi in https://github.com/zenml-io/zenml/pull/2875
|
103
|
+
* Fix mlstacks docs typo by @begoechavarren in https://github.com/zenml-io/zenml/pull/2878
|
104
|
+
* Fix requests vulnerability by @stefannica in https://github.com/zenml-io/zenml/pull/2843
|
105
|
+
* Fixed some minor docs things i noticed by @htahir1 in https://github.com/zenml-io/zenml/pull/2881
|
106
|
+
* Serialize source as Any to keep subclass attributes by @schustmi in https://github.com/zenml-io/zenml/pull/2880
|
107
|
+
* Fix node selectors for Vertex orchestrator by @schustmi in https://github.com/zenml-io/zenml/pull/2876
|
108
|
+
* Kubernetes step operator by @schustmi in https://github.com/zenml-io/zenml/pull/2883
|
109
|
+
* Automatically populate GCP/azure path when using wizard from the frontend by @schustmi in https://github.com/zenml-io/zenml/pull/2886
|
110
|
+
* Remove pipeline versioning and add run templates by @schustmi in https://github.com/zenml-io/zenml/pull/2830
|
111
|
+
* Implement the Azure 1-click stack deployment by @stefannica in https://github.com/zenml-io/zenml/pull/2887
|
112
|
+
* Better error message sagemaker, better documentation server env vars by @AlexejPenner in https://github.com/zenml-io/zenml/pull/2885
|
113
|
+
* Azure Stack Wizard docs by @bcdurak in https://github.com/zenml-io/zenml/pull/2890
|
114
|
+
* Docs update mlflow deploy function call by @safoinme in https://github.com/zenml-io/zenml/pull/2863
|
115
|
+
* Fix databricks resource setting by @safoinme in https://github.com/zenml-io/zenml/pull/2889
|
116
|
+
|
117
|
+
## New Contributors
|
118
|
+
* @begoechavarren made their first contribution in https://github.com/zenml-io/zenml/pull/2878
|
119
|
+
|
120
|
+
**Full Changelog**: https://github.com/zenml-io/zenml/compare/0.62.0...0.63.0
|
121
|
+
|
2
122
|
# 0.62.0
|
3
123
|
|
4
124
|
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](https://www.zenml.io/blog/easy-mlops-pipelines) from our previous release.
|
zenml/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.64.0.dev20240809
|
zenml/__init__.py
CHANGED
@@ -27,10 +27,6 @@ from zenml.logger import init_logging # noqa
|
|
27
27
|
|
28
28
|
init_logging()
|
29
29
|
|
30
|
-
# The following code is needed for `zenml.hub` subpackages to be found
|
31
|
-
from pkgutil import extend_path
|
32
|
-
|
33
|
-
__path__ = extend_path(__path__, __name__)
|
34
30
|
|
35
31
|
# Need to import zenml.models before zenml.config to avoid circular imports
|
36
32
|
from zenml.models import * # noqa: F401
|
@@ -33,8 +33,8 @@ from zenml.models import (
|
|
33
33
|
)
|
34
34
|
from zenml.models.v2.base.base import BaseResponse
|
35
35
|
from zenml.zen_server.auth import AuthContext
|
36
|
-
from zenml.zen_server.pipeline_deployment.utils import run_pipeline
|
37
36
|
from zenml.zen_server.rbac.models import ResourceType
|
37
|
+
from zenml.zen_server.template_execution.utils import run_template
|
38
38
|
from zenml.zen_server.utils import server_config
|
39
39
|
|
40
40
|
logger = get_logger(__name__)
|
@@ -45,7 +45,7 @@ logger = get_logger(__name__)
|
|
45
45
|
class PipelineRunActionConfiguration(ActionConfig):
|
46
46
|
"""Configuration class to configure a pipeline run action."""
|
47
47
|
|
48
|
-
|
48
|
+
template_id: UUID
|
49
49
|
run_config: Optional[PipelineRunConfiguration] = None
|
50
50
|
|
51
51
|
|
@@ -95,10 +95,10 @@ class PipelineRunActionHandler(BaseActionHandler):
|
|
95
95
|
|
96
96
|
assert isinstance(config, PipelineRunActionConfiguration)
|
97
97
|
|
98
|
-
|
99
|
-
logger.debug("Running
|
100
|
-
|
101
|
-
|
98
|
+
template = zen_store().get_run_template(config.template_id)
|
99
|
+
logger.debug("Running template:", template)
|
100
|
+
run_template(
|
101
|
+
template=template,
|
102
102
|
run_config=config.run_config,
|
103
103
|
auth_context=auth_context,
|
104
104
|
)
|
@@ -114,13 +114,14 @@ class PipelineRunActionHandler(BaseActionHandler):
|
|
114
114
|
Raises:
|
115
115
|
ValueError: In case no deployment can be found with the deployment_id
|
116
116
|
"""
|
117
|
-
deployment_id = config.pipeline_deployment_id
|
118
117
|
zen_store = GlobalConfiguration().zen_store
|
119
118
|
|
120
119
|
try:
|
121
|
-
zen_store.
|
120
|
+
zen_store.get_run_template(template_id=config.template_id)
|
122
121
|
except KeyError:
|
123
|
-
raise ValueError(
|
122
|
+
raise ValueError(
|
123
|
+
f"No template found with id {config.template_id}."
|
124
|
+
)
|
124
125
|
|
125
126
|
def _validate_action_request(
|
126
127
|
self, action: ActionRequest, config: ActionConfig
|
@@ -176,27 +177,28 @@ class PipelineRunActionHandler(BaseActionHandler):
|
|
176
177
|
List of resources related to the action.
|
177
178
|
|
178
179
|
Raises:
|
179
|
-
ValueError: In case the
|
180
|
+
ValueError: In case the specified template does not exist.
|
180
181
|
"""
|
181
182
|
assert isinstance(action_config, PipelineRunActionConfiguration)
|
182
183
|
|
183
|
-
deployment_id = action_config.pipeline_deployment_id
|
184
184
|
zen_store = GlobalConfiguration().zen_store
|
185
185
|
|
186
186
|
try:
|
187
|
-
|
188
|
-
|
187
|
+
template = zen_store.get_run_template(
|
188
|
+
template_id=action_config.template_id, hydrate=hydrate
|
189
189
|
)
|
190
190
|
except KeyError:
|
191
|
-
raise ValueError(
|
191
|
+
raise ValueError(
|
192
|
+
f"No template found with id {action_config.template_id}."
|
193
|
+
)
|
192
194
|
|
193
195
|
resources: Dict[ResourceType, BaseResponse[Any, Any, Any]] = {
|
194
|
-
ResourceType.
|
196
|
+
ResourceType.RUN_TEMPLATE: template
|
195
197
|
}
|
196
198
|
|
197
|
-
if
|
199
|
+
if template.pipeline is not None:
|
198
200
|
pipeline = zen_store.get_pipeline(
|
199
|
-
pipeline_id=
|
201
|
+
pipeline_id=template.pipeline.id, hydrate=hydrate
|
200
202
|
)
|
201
203
|
resources[ResourceType.PIPELINE] = pipeline
|
202
204
|
|
zenml/analytics/enums.py
CHANGED
@@ -48,6 +48,10 @@ class AnalyticsEvent(str, Enum):
|
|
48
48
|
CREATED_TRIGGER = "Trigger created"
|
49
49
|
UPDATED_TRIGGER = "Trigger updated"
|
50
50
|
|
51
|
+
# Templates
|
52
|
+
CREATED_RUN_TEMPLATE = "Run template created"
|
53
|
+
EXECUTED_RUN_TEMPLATE = "Run templated executed"
|
54
|
+
|
51
55
|
# Model Control Plane
|
52
56
|
MODEL_DEPLOYED = "Model deployed"
|
53
57
|
CREATED_MODEL = "Model created"
|
@@ -95,11 +99,5 @@ class AnalyticsEvent(str, Enum):
|
|
95
99
|
ZENML_SERVER_DEPLOYED = "ZenML server deployed"
|
96
100
|
ZENML_SERVER_DESTROYED = "ZenML server destroyed"
|
97
101
|
|
98
|
-
# ZenML Hub events
|
99
|
-
ZENML_HUB_PLUGIN_INSTALL = "ZenML Hub plugin installed"
|
100
|
-
ZENML_HUB_PLUGIN_UNINSTALL = "ZenML Hub plugin uninstalled"
|
101
|
-
ZENML_HUB_PLUGIN_CLONE = "ZenML Hub plugin pulled"
|
102
|
-
ZENML_HUB_PLUGIN_SUBMIT = "ZenML Hub plugin pushed"
|
103
|
-
|
104
102
|
# Server Settings
|
105
103
|
SERVER_SETTINGS_UPDATED = "Server Settings Updated"
|
zenml/cli/__init__.py
CHANGED
@@ -1684,7 +1684,7 @@ def my_pipeline(...):
|
|
1684
1684
|
|
1685
1685
|
You can register your pipeline like this:
|
1686
1686
|
```bash
|
1687
|
-
zenml pipeline register my_pipeline
|
1687
|
+
zenml pipeline register run.my_pipeline
|
1688
1688
|
```
|
1689
1689
|
|
1690
1690
|
To list all registered pipelines, use:
|
@@ -1693,21 +1693,15 @@ To list all registered pipelines, use:
|
|
1693
1693
|
zenml pipeline list
|
1694
1694
|
```
|
1695
1695
|
|
1696
|
-
|
1697
|
-
occasionally want to delete a pipeline, which you can do via:
|
1696
|
+
To delete a pipeline, run:
|
1698
1697
|
|
1699
1698
|
```bash
|
1700
1699
|
zenml pipeline delete <PIPELINE_NAME>
|
1701
1700
|
```
|
1702
1701
|
|
1703
|
-
This will delete the
|
1702
|
+
This will delete the pipeline and change all corresponding
|
1704
1703
|
pipeline runs to become unlisted (not linked to any pipeline).
|
1705
1704
|
|
1706
|
-
If you want to delete all versions of a pipeline, you can do so as follows:
|
1707
|
-
|
1708
|
-
```bash
|
1709
|
-
zenml pipeline delete <PIPELINE_NAME> --all-versions
|
1710
|
-
```
|
1711
1705
|
|
1712
1706
|
To list all pipeline runs that you have executed, use:
|
1713
1707
|
|
@@ -2378,11 +2372,30 @@ zenml code-repository delete <REPOSITORY_NAME_OR_ID>
|
|
2378
2372
|
Building an image without Runs
|
2379
2373
|
------------------------------
|
2380
2374
|
|
2375
|
+
To build or run a pipeline from the CLI, you need to know the source path of
|
2376
|
+
your pipeline. Let's imagine you have defined your pipeline in a python file
|
2377
|
+
called `run.py` like this:
|
2378
|
+
|
2379
|
+
```python
|
2380
|
+
from zenml import pipeline
|
2381
|
+
|
2382
|
+
@pipeline
|
2383
|
+
def my_pipeline(...):
|
2384
|
+
# Connect your pipeline steps here
|
2385
|
+
pass
|
2386
|
+
```
|
2387
|
+
|
2388
|
+
The source path of your pipeline will be `run.my_pipeline`. In a generalized
|
2389
|
+
way, this will be `<MODULE_PATH>.<PIPELINE_FUNCTION_NAME>`. If the python file
|
2390
|
+
defining the pipeline is not in your current directory, the module path consists
|
2391
|
+
of the full path to the file, separated by dots, e.g.
|
2392
|
+
`some_directory.some_file.my_pipeline`.
|
2393
|
+
|
2381
2394
|
To [build Docker images for your pipeline](https://docs.zenml.io/how-to/customize-docker-builds)
|
2382
2395
|
without actually running the pipeline, use:
|
2383
2396
|
|
2384
2397
|
```bash
|
2385
|
-
zenml pipeline build <
|
2398
|
+
zenml pipeline build <PIPELINE_SOURCE_PATH>
|
2386
2399
|
```
|
2387
2400
|
|
2388
2401
|
To specify settings for the Docker builds, use the `--config/-c` option of the
|
@@ -2390,20 +2403,20 @@ command. For more information about the structure of this configuration file,
|
|
2390
2403
|
check out the `zenml.pipelines.base_pipeline.BasePipeline.build(...)` method.
|
2391
2404
|
|
2392
2405
|
```bash
|
2393
|
-
zenml pipeline build <
|
2406
|
+
zenml pipeline build <PIPELINE_SOURCE_PATH> --config=<PATH_TO_CONFIG_YAML>
|
2394
2407
|
```
|
2395
2408
|
|
2396
2409
|
If you want to build the pipeline for a stack other than your current active
|
2397
2410
|
stack, use the `--stack` option.
|
2398
2411
|
|
2399
2412
|
```bash
|
2400
|
-
zenml pipeline build <
|
2413
|
+
zenml pipeline build <PIPELINE_SOURCE_PATH> --stack=<STACK_ID_OR_NAME>
|
2401
2414
|
```
|
2402
2415
|
|
2403
2416
|
To run a pipeline that was previously registered, use:
|
2404
2417
|
|
2405
2418
|
```bash
|
2406
|
-
zenml pipeline run
|
2419
|
+
zenml pipeline run <PIPELINE_SOURCE_PATH>
|
2407
2420
|
```
|
2408
2421
|
|
2409
2422
|
To specify settings for the pipeline, use the `--config/-c` option of the
|
@@ -2411,14 +2424,14 @@ command. For more information about the structure of this configuration file,
|
|
2411
2424
|
check out the `zenml.pipelines.base_pipeline.BasePipeline.run(...)` method.
|
2412
2425
|
|
2413
2426
|
```bash
|
2414
|
-
zenml pipeline run <
|
2427
|
+
zenml pipeline run <PIPELINE_SOURCE_PATH> --config=<PATH_TO_CONFIG_YAML>
|
2415
2428
|
```
|
2416
2429
|
|
2417
2430
|
If you want to run the pipeline on a stack different than your current active
|
2418
2431
|
stack, use the `--stack` option.
|
2419
2432
|
|
2420
2433
|
```bash
|
2421
|
-
zenml pipeline run <
|
2434
|
+
zenml pipeline run <PIPELINE_SOURCE_PATH> --stack=<STACK_ID_OR_NAME>
|
2422
2435
|
```
|
2423
2436
|
|
2424
2437
|
Tagging your resources with ZenML
|
@@ -2528,66 +2541,6 @@ zenml artifact-store deploy -f gcp -p gcp -r us-east1 -x project_id=zenml-core b
|
|
2528
2541
|
|
2529
2542
|
For full documentation on this functionality, please refer to [the dedicated
|
2530
2543
|
documentation on stack component deploy](https://docs.zenml.io/how-to/stack-deployment/deploy-a-stack-component).
|
2531
|
-
|
2532
|
-
Interacting with the ZenML Hub
|
2533
|
-
------------------------------
|
2534
|
-
|
2535
|
-
The ZenML Hub is a central location for discovering and sharing third-party
|
2536
|
-
ZenML code, such as custom integrations, components, steps, pipelines,
|
2537
|
-
materializers, and more.
|
2538
|
-
You can browse the ZenML Hub at [https://hub.zenml.io](https://hub.zenml.io).
|
2539
|
-
|
2540
|
-
The ZenML CLI provides various commands to interact with the ZenML Hub:
|
2541
|
-
|
2542
|
-
- Listing all plugins available on the Hub:
|
2543
|
-
```bash
|
2544
|
-
zenml hub list
|
2545
|
-
```
|
2546
|
-
|
2547
|
-
- Installing a Hub plugin:
|
2548
|
-
```bash
|
2549
|
-
zenml hub install
|
2550
|
-
```
|
2551
|
-
Installed plugins can be imported via `from zenml.hub.<plugin_name> import ...`.
|
2552
|
-
|
2553
|
-
|
2554
|
-
- Uninstalling a Hub plugin:
|
2555
|
-
```bash
|
2556
|
-
zenml hub uninstall
|
2557
|
-
```
|
2558
|
-
|
2559
|
-
- Cloning the source code of a Hub plugin (without installing it):
|
2560
|
-
```bash
|
2561
|
-
zenml hub clone
|
2562
|
-
```
|
2563
|
-
This is useful, e.g., for extending an existing plugin or for getting the
|
2564
|
-
examples of a plugin.
|
2565
|
-
|
2566
|
-
- Submitting/contributing a plugin to the Hub (requires login, see below):
|
2567
|
-
```bash
|
2568
|
-
zenml hub submit
|
2569
|
-
```
|
2570
|
-
If you are unsure about which arguments you need to set, you can run the
|
2571
|
-
command in interactive mode:
|
2572
|
-
```bash
|
2573
|
-
zenml hub submit --interactive
|
2574
|
-
```
|
2575
|
-
This will ask for and validate inputs one at a time.
|
2576
|
-
|
2577
|
-
- Logging in to the Hub:
|
2578
|
-
```bash
|
2579
|
-
zenml hub login
|
2580
|
-
```
|
2581
|
-
|
2582
|
-
- Logging out of the Hub:
|
2583
|
-
```bash
|
2584
|
-
zenml hub logout
|
2585
|
-
```
|
2586
|
-
|
2587
|
-
- Viewing the build logs of a plugin you submitted to the Hub:
|
2588
|
-
```bash
|
2589
|
-
zenml hub logs
|
2590
|
-
```
|
2591
2544
|
"""
|
2592
2545
|
|
2593
2546
|
from zenml.cli.version import * # noqa
|
@@ -2599,7 +2552,6 @@ from zenml.cli.code_repository import * # noqa
|
|
2599
2552
|
from zenml.cli.config import * # noqa
|
2600
2553
|
from zenml.cli.downgrade import * # noqa
|
2601
2554
|
from zenml.cli.feature import * # noqa
|
2602
|
-
from zenml.cli.hub import * # noqa
|
2603
2555
|
from zenml.cli.integration import * # noqa
|
2604
2556
|
from zenml.cli.model import * # noqa
|
2605
2557
|
from zenml.cli.model_registry import * # noqa
|
zenml/cli/base.py
CHANGED
@@ -83,11 +83,11 @@ ZENML_PROJECT_TEMPLATES = dict(
|
|
83
83
|
),
|
84
84
|
starter=ZenMLProjectTemplateLocation(
|
85
85
|
github_url="zenml-io/template-starter",
|
86
|
-
github_tag="2024.
|
86
|
+
github_tag="2024.07.26", # Make sure it is aligned with .github/workflows/update-templates-to-examples.yml
|
87
87
|
),
|
88
88
|
nlp=ZenMLProjectTemplateLocation(
|
89
89
|
github_url="zenml-io/template-nlp",
|
90
|
-
github_tag="2024.
|
90
|
+
github_tag="2024.08.07", # Make sure it is aligned with .github/workflows/update-templates-to-examples.yml
|
91
91
|
),
|
92
92
|
llm_finetuning=ZenMLProjectTemplateLocation(
|
93
93
|
github_url="zenml-io/template-llm-finetuning",
|