zenml-nightly 0.66.0.dev20240930__py3-none-any.whl → 0.68.0.dev20241026__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 +227 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +4 -9
- zenml/analytics/enums.py +0 -13
- zenml/artifact_stores/base_artifact_store.py +11 -0
- zenml/artifacts/artifact_config.py +19 -65
- zenml/artifacts/external_artifact.py +7 -53
- zenml/artifacts/external_artifact_config.py +21 -40
- zenml/artifacts/load_directory_materializer.py +91 -0
- zenml/artifacts/utils.py +320 -85
- zenml/cli/__init__.py +1 -39
- zenml/cli/base.py +5 -5
- zenml/cli/integration.py +0 -9
- zenml/cli/pipeline.py +1 -1
- zenml/cli/served_model.py +8 -1
- zenml/cli/server.py +8 -232
- zenml/cli/stack.py +1 -567
- zenml/cli/stack_components.py +0 -578
- zenml/cli/utils.py +0 -65
- zenml/client.py +11 -26
- zenml/client_lazy_loader.py +29 -12
- zenml/config/compiler.py +6 -11
- zenml/config/server_config.py +7 -5
- zenml/config/step_configurations.py +2 -0
- zenml/constants.py +3 -33
- zenml/enums.py +0 -3
- zenml/environment.py +1 -315
- zenml/exceptions.py +1 -41
- zenml/hooks/hook_validators.py +1 -8
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +2 -3
- zenml/integrations/argilla/__init__.py +1 -1
- zenml/integrations/argilla/annotators/argilla_annotator.py +234 -89
- zenml/integrations/argilla/flavors/argilla_annotator_flavor.py +10 -5
- zenml/integrations/aws/flavors/sagemaker_orchestrator_flavor.py +9 -5
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +15 -2
- zenml/integrations/aws/service_connectors/aws_service_connector.py +6 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +5 -4
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/bentoml/model_deployers/bentoml_model_deployer.py +85 -19
- zenml/integrations/bentoml/services/__init__.py +15 -4
- zenml/integrations/bentoml/services/bentoml_container_deployment.py +399 -0
- zenml/integrations/bentoml/services/{bentoml_deployment.py → bentoml_local_deployment.py} +81 -40
- zenml/{steps/base_parameters.py → integrations/bentoml/services/deployment_type.py} +8 -5
- zenml/integrations/bentoml/steps/bento_builder.py +1 -0
- zenml/integrations/bentoml/steps/bentoml_deployer.py +93 -41
- zenml/integrations/gitlab/code_repositories/gitlab_code_repository.py +6 -1
- zenml/integrations/huggingface/__init__.py +1 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +3 -3
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +2 -2
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +6 -3
- zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -0
- zenml/integrations/mlflow/services/mlflow_deployment.py +2 -2
- zenml/integrations/mlflow/steps/mlflow_deployer.py +1 -1
- zenml/integrations/mlflow/steps/mlflow_registry.py +1 -1
- zenml/integrations/neptune/experiment_trackers/run_state.py +2 -2
- zenml/integrations/pytorch/materializers/base_pytorch_materializer.py +8 -2
- zenml/integrations/pytorch/materializers/pytorch_module_materializer.py +4 -1
- zenml/integrations/s3/artifact_stores/s3_artifact_store.py +98 -0
- zenml/integrations/s3/flavors/s3_artifact_store_flavor.py +14 -0
- zenml/integrations/s3/utils.py +40 -0
- zenml/integrations/tensorflow/__init__.py +0 -9
- zenml/logging/step_logging.py +13 -15
- zenml/materializers/__init__.py +2 -0
- zenml/materializers/uuid_materializer.py +79 -0
- zenml/metadata/lazy_load.py +10 -7
- zenml/model/lazy_load.py +85 -4
- zenml/model/model.py +61 -45
- zenml/model/utils.py +47 -118
- zenml/models/__init__.py +3 -0
- zenml/models/v2/core/artifact_version.py +4 -15
- zenml/models/v2/core/model.py +1 -0
- zenml/models/v2/core/model_version.py +1 -1
- zenml/models/v2/core/pipeline_run.py +1 -2
- zenml/models/v2/core/run_metadata.py +2 -2
- zenml/models/v2/core/step_run.py +15 -12
- zenml/models/v2/misc/server_models.py +0 -4
- zenml/orchestrators/base_orchestrator.py +33 -0
- zenml/orchestrators/input_utils.py +52 -36
- zenml/orchestrators/step_launcher.py +49 -171
- zenml/orchestrators/step_run_utils.py +566 -0
- zenml/orchestrators/step_runner.py +102 -151
- zenml/orchestrators/utils.py +1 -158
- zenml/pipelines/__init__.py +3 -16
- zenml/{new/pipelines → pipelines}/pipeline_context.py +3 -18
- zenml/pipelines/pipeline_decorator.py +29 -60
- zenml/{new/pipelines/pipeline.py → pipelines/pipeline_definition.py} +4 -47
- zenml/stack/stack.py +1 -102
- zenml/stack/stack_component.py +0 -71
- zenml/stack_deployments/aws_stack_deployment.py +3 -0
- zenml/step_operators/step_operator_entrypoint_configuration.py +1 -1
- zenml/steps/__init__.py +3 -9
- zenml/steps/base_step.py +17 -265
- zenml/steps/entrypoint_function_utils.py +2 -80
- zenml/{new/steps → steps}/step_context.py +12 -63
- zenml/steps/step_decorator.py +42 -89
- zenml/steps/step_invocation.py +2 -55
- zenml/steps/utils.py +3 -23
- zenml/utils/dashboard_utils.py +16 -51
- zenml/utils/typing_utils.py +8 -28
- zenml/zen_server/dashboard/assets/{404-Y50hSt65.js → 404-DT4QRUqN.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-DP6vWzyx.js +85 -0
- zenml/zen_server/dashboard/assets/@react-router-BMhZulnd.js +29 -0
- zenml/zen_server/dashboard/assets/@reactflow-8U9qNlMR.js +17 -0
- zenml/zen_server/dashboard/assets/@tanstack-BUCbhJyH.js +22 -0
- zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-xLR9a1iw.js → AlertDialogDropdownItem-C6N2rGrB.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-IxXNxUDa.js → CodeSnippet-CqybNv0k.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BhutZbBL.js → CollapsibleCard-0r_8G2Lj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Commands-Bf-rd1z8.js → Commands-BDjgBQKi.js} +1 -1
- zenml/zen_server/dashboard/assets/ComponentBadge-DUiEYJHu.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentFallbackDialog-BFoH5K4V.js +1 -0
- zenml/zen_server/dashboard/assets/ComponentIcon-CAIoUis2.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-DcFHidFJ.js → CopyButton-C745BrKi.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-QSbjrfxw.js → CsvVizualization-PpAq0CeZ.js} +5 -5
- zenml/zen_server/dashboard/assets/{DialogItem-Cd3HqST4.js → DialogItem-DcVCZEew.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DkCy54Bp.js → DisplayDate-BeXgUG_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{EmptyState-Cs3DEmso.js → EmptyState-DeK7H4pr.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-BhwdmqK7.js → Error-BMlzibXj.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-0pBpTwTm.js → Helpbox-BLf40fLV.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BTK_EUKT.js → Infobox-BwisKifi.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-CA3DFMcM.js → InlineAvatar-jEgodSgX.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CmIn0szs.js → Lock-3lLt1ih0.js} +1 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-8O9kTr-2.js +14 -0
- zenml/zen_server/dashboard/assets/{NumberBox-CrN0_kqI.js → NumberBox-T9eELfLZ.js} +1 -1
- zenml/zen_server/dashboard/assets/{Partials-QLOZw624.js → Partials-YPBB3V4q.js} +1 -1
- zenml/zen_server/dashboard/assets/{PasswordChecker-DE71J_3F.js → PasswordChecker-CW0kqY0W.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderIcon-C16CCIN4.js → ProviderIcon-Bb3Xha5A.js} +1 -1
- zenml/zen_server/dashboard/assets/{ProviderRadio-D3FuCHf3.js → ProviderRadio-BROY1700.js} +1 -1
- zenml/zen_server/dashboard/assets/RunSelector-DCiL3M1c.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-DfUiGFVd.js +1 -0
- zenml/zen_server/dashboard/assets/{SecretTooltip-BaMwHF-Q.js → SecretTooltip-C_qByGWB.js} +1 -1
- zenml/zen_server/dashboard/assets/{SetPassword-DuIC65H9.js → SetPassword-7pRB00El.js} +1 -1
- zenml/zen_server/dashboard/assets/{Tick-DJTCF0Re.js → Tick-CykQFPj2.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-CUm-DMpw.js → UpdatePasswordSchemas-DckMEkFf.js} +1 -1
- zenml/zen_server/dashboard/assets/{UsageReason-CKw0juLF.js → UsageReason-DVceN14P.js} +1 -1
- zenml/zen_server/dashboard/assets/{WizardFooter-Cv9ApYWU.js → WizardFooter-CW0Cvd70.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-DOoS4yhF.js → check-circle-Dwxliy1Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-Cwb-W_B_.js → chevron-down-8wLBS5pQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-c9H46Kl8.js → chevron-right-double-DoD8iXWM.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BB4BVa6E.js → cloud-only-B-s_HMDm.js} +1 -1
- zenml/zen_server/dashboard/assets/{code-browser-BJYErIjr.js → code-browser-CZUQs3Wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{copy-CaGlDsUy.js → copy-CaSMXwiU.js} +1 -1
- zenml/zen_server/dashboard/assets/{create-stack-F29xAUEx.js → create-stack-CEmaPZ4c.js} +1 -1
- zenml/zen_server/dashboard/assets/delete-run-D-LKbGyz.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-BFAFXr2_.js → docker-BFNgg-z3.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-C6K59vUm.js → dots-horizontal-DK5Duzx4.js} +1 -1
- zenml/zen_server/dashboard/assets/{form-schemas-BKXwSDK2.js → form-schemas-1AyOCx90.js} +1 -1
- zenml/zen_server/dashboard/assets/{gcp-Dj6ntk0L.js → gcp-7M2Yf3ZK.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-CwN931fX.js → help-Dam461dC.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-5GJ5ysEZ.js → index-BVJ8n2-j.js} +1 -1
- zenml/zen_server/dashboard/assets/index-Bpmj40BI.js +1 -0
- zenml/zen_server/dashboard/assets/index-CbU4Ln_E.css +1 -0
- zenml/zen_server/dashboard/assets/{index-D-mtoBj3.js → index-DKPhqP2B.js} +1 -1
- zenml/zen_server/dashboard/assets/index-QQb7wQEC.js +55 -0
- zenml/zen_server/dashboard/assets/index.esm-cuVep_NJ.js +1 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DH2hs3aW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BGBWG807.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-BuzJQFbW.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-BZzXV7-1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DxZsaF_h.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CeQXL5ds.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-d_eO-yCQ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-CwicyhtI.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-Dhlb-90d.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-Bput3-QP.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-DCpCPQOf.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-B6guLgqG.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-M2hEX8vc.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-C9WLioJ8.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BOOGhInR.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-gitzw0hO.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D2bGa7uu.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-deR1Tlfd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B5cFAncS.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-D273HNI0.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-C1t-h-pH.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-hnt3BR84.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-UMdmhHu2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-BnYJhD27.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-CAF0vJDd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-BUNmGMP1.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff +0 -0
- zenml/zen_server/dashboard/assets/{kubernetes-BjbR6D-1.js → kubernetes--g7r02Zu.js} +1 -1
- zenml/zen_server/dashboard/assets/{layout-Dru15_XR.js → layout-DCSYN7-C.js} +1 -1
- zenml/zen_server/dashboard/assets/{link-external-BT2L8hAQ.js → link-external-CBEk6kEG.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-ax6iL2Mb.js → login-mutation-DTcAFP1l.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-GiDJXbLS.js → logs-D5bdJGur.js} +1 -1
- zenml/zen_server/dashboard/assets/not-found-Cc-JkRH2.js +1 -0
- zenml/zen_server/dashboard/assets/{package-DYKZ5jKW.js → package-Cs35Szwh.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-HkVBdZl6.js → page-9yplj5JT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uORspyRu.js → page-B-y2XKIc.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BBpOxVcY.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDg1F-Ug.js → page-BQQKaabe.js} +2 -2
- zenml/zen_server/dashboard/assets/page-BRInM1Lg.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CvKnNK1S.js → page-BjjlMk7s.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BukXK1Aa.js → page-Bvd7YH2A.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DcTjHmYZ.js → page-C0N5q3l7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CT3Nep8W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DuqYMYmH.js → page-C_f47pBf.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DRfcRK1w.js → page-ClUVkl-O.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Cmv8C_yM.js +3 -0
- zenml/zen_server/dashboard/assets/{page-p0BhSAWx.js → page-CyN2bdWG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CzzXH4fs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-6mfzecin.js → page-DH_Z7iW1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8kYmrh0B.js → page-DIOXwhiD.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BXarY9K2.js → page-DLixvR-7.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DTlGjgnG.js +1 -0
- zenml/zen_server/dashboard/assets/page-Dbpl86h0.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MAXyfXBq.js → page-Ddgy6kDS.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DtCAfBLy.js +9 -0
- zenml/zen_server/dashboard/assets/{page-CKHNAq7z.js → page-Dx16z7nA.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DMSLXKGT.js → page-DzpVUZ8f.js} +1 -1
- zenml/zen_server/dashboard/assets/page-McUyYbo1.js +1 -0
- zenml/zen_server/dashboard/assets/{page-miU2rhYG.js → page-N4qoPHKb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-T1P3RyAR.js +1 -0
- zenml/zen_server/dashboard/assets/{page-3qPX9WYH.js → page-bKaULTGG.js} +1 -1
- zenml/zen_server/dashboard/assets/page-sbXUJy9t.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-CfJMar_k.js → persist-CP0JmYZ4.js} +1 -1
- zenml/zen_server/dashboard/assets/{persist-BxIR2XZs.js → persist-DNb5cdrU.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-Bc8eLSDM.js → plus-C9IxgN2M.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-hfgWPeto.js → refresh-BVu22P_C.js} +1 -1
- zenml/zen_server/dashboard/assets/{rocket-SESCGQXm.js → rocket-CONEmRmB.js} +1 -1
- zenml/zen_server/dashboard/assets/{sharedSchema-vub0rii3.js → sharedSchema-TMLu-nYQ.js} +1 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-xmYxSsUY.js +1 -0
- zenml/zen_server/dashboard/assets/{tick-circle-m-hJG8i9.js → tick-circle-CM1ZScbQ.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-DUWZWzse.js → trash-DkJHMOg7.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-FGVP7X2U.js → update-server-settings-mutation-DsU8cNVl.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-CbAPzsmT.js → url-D5le3J4q.js} +1 -1
- zenml/zen_server/dashboard/assets/zod-D89GC_vc.js +1 -0
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/deploy/__init__.py +0 -9
- zenml/zen_server/deploy/docker/docker_zen_server.py +0 -6
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/deploy/local/local_zen_server.py +0 -6
- zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +1 -1
- zenml/zen_server/routers/artifact_version_endpoints.py +1 -1
- zenml/zen_server/routers/runs_endpoints.py +0 -28
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +1 -1
- zenml/zen_server/template_execution/utils.py +2 -2
- zenml/zen_server/utils.py +10 -40
- zenml/zen_server/zen_server_api.py +107 -17
- zenml/zen_stores/base_zen_store.py +0 -2
- zenml/zen_stores/migrations/versions/0.67.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.68.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/1d8f30c54477_migrate_to_new_.py +124 -0
- zenml/zen_stores/schemas/pipeline_run_schemas.py +12 -4
- zenml/zen_stores/schemas/step_run_schemas.py +2 -2
- zenml/zen_stores/sql_zen_store.py +29 -5
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/METADATA +4 -8
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/RECORD +273 -452
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/WHEEL +1 -1
- zenml/cli/stack_recipes.py +0 -469
- zenml/lineage_graph/__init__.py +0 -34
- zenml/lineage_graph/edge.py +0 -24
- zenml/lineage_graph/lineage_graph.py +0 -244
- zenml/lineage_graph/node/__init__.py +0 -32
- zenml/lineage_graph/node/artifact_node.py +0 -51
- zenml/lineage_graph/node/base_node.py +0 -31
- zenml/lineage_graph/node/step_node.py +0 -41
- zenml/model/model_version.py +0 -38
- zenml/new/__init__.py +0 -13
- zenml/new/pipelines/__init__.py +0 -13
- zenml/new/pipelines/code_archive.py +0 -157
- zenml/new/pipelines/pipeline_decorator.py +0 -118
- zenml/new/steps/__init__.py +0 -13
- zenml/new/steps/step_decorator.py +0 -176
- zenml/pipelines/base_pipeline.py +0 -273
- zenml/post_execution/__init__.py +0 -30
- zenml/post_execution/pipeline.py +0 -55
- zenml/post_execution/pipeline_run.py +0 -55
- zenml/services/terraform/__init__.py +0 -14
- zenml/services/terraform/terraform_service.py +0 -441
- zenml/steps/external_artifact.py +0 -26
- zenml/steps/step_environment.py +0 -108
- zenml/steps/step_output.py +0 -36
- zenml/utils/mlstacks_utils.py +0 -635
- zenml/utils/terraform_utils.py +0 -43
- zenml/zen_server/dashboard/assets/@radix-DnFH_oo1.js +0 -85
- zenml/zen_server/dashboard/assets/@react-router-APVeuk-U.js +0 -29
- zenml/zen_server/dashboard/assets/@reactflow-ytavUpwh.js +0 -17
- zenml/zen_server/dashboard/assets/@tanstack-QbMbTrh5.js +0 -22
- zenml/zen_server/dashboard/assets/ComponentBadge-gKR1OIwG.js +0 -1
- zenml/zen_server/dashboard/assets/ExecutionStatus-D6r6aK8J.js +0 -1
- zenml/zen_server/dashboard/assets/MarkdownVisualization-DS05sfBm.js +0 -14
- zenml/zen_server/dashboard/assets/SearchField-BzmfxS0L.js +0 -1
- zenml/zen_server/dashboard/assets/all-pipeline-runs-query-BA3R2Sey.js +0 -1
- zenml/zen_server/dashboard/assets/delete-run-CP0pcJ3U.js +0 -1
- zenml/zen_server/dashboard/assets/index-BhJ6ZJxv.css +0 -1
- zenml/zen_server/dashboard/assets/index-Ci0nJ8EZ.js +0 -55
- zenml/zen_server/dashboard/assets/index.esm-BE1uqCX5.js +0 -1
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-Df6ckaLK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-400-normal-JrS_4yms.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-BRrLR67x.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-500-normal-DskEQOpE.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-DDpWG8g5.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-600-normal-iz1--dBq.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-CzG7Kr3z.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-400-normal-tyfMZHQw.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-DOnSzjnx.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-500-normal-Xebo2OyJ.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-DpA2xaRd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-cyrillic-ext-600-normal-KAwcVx6H.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DQXyrmoy.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-400-normal-DvIPHDQ7.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-BjpBGs91.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-500-normal-CmOavsDc.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-B-l8Lzzd.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-600-normal-BLZsI-P3.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-CIdlr5YK.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-400-normal-_Rr29XE2.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-2pdUafRD.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-500-normal-Dtavx3qw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-BmtRFZgT.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-greek-ext-600-normal-CkBLDEl_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-BT1H-PT_.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-400-normal-Cdi8t5Mu.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-D4I8BKCx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-500-normal-kWhwEdDH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-B2Ssfs8e.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-600-normal-Dbvh0wvx.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-8tIzm-yw.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-400-normal-D3W-OpO-.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-B9u8Q_zH.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-500-normal-SuUkSNTU.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-Dg0Bk0Yr.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-latin-ext-600-normal-ao35dkSb.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-Cnt0N5Vm.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-400-normal-DIOGfGLL.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-0i6yoQMg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-500-normal-5IkPJ6Nk.woff2 +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-BQ_dbMbg.woff +0 -0
- zenml/zen_server/dashboard/assets/inter-vietnamese-600-normal-DjnxGF-L.woff2 +0 -0
- zenml/zen_server/dashboard/assets/not-found-DbjllLY_.js +0 -1
- zenml/zen_server/dashboard/assets/page-B1n7_W7z.js +0 -1
- zenml/zen_server/dashboard/assets/page-BZZhLo2u.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bbf_oBjn.js +0 -1
- zenml/zen_server/dashboard/assets/page-BjjuBvZG.js +0 -9
- zenml/zen_server/dashboard/assets/page-CHaQkFK5.js +0 -1
- zenml/zen_server/dashboard/assets/page-CS0SYFK8.js +0 -1
- zenml/zen_server/dashboard/assets/page-DGM1CbYT.js +0 -2
- zenml/zen_server/dashboard/assets/page-DOmIZ2ra.js +0 -1
- zenml/zen_server/dashboard/assets/page-DYVmJ9_w.js +0 -3
- zenml/zen_server/dashboard/assets/page-Dwow2doB.js +0 -1
- zenml/zen_server/dashboard/assets/stack-detail-query-DQcyzG-2.js +0 -1
- zenml/zen_server/dashboard/assets/zod-uFd1wBcd.js +0 -1
- zenml/zen_server/dashboard_legacy/_redirects +0 -1
- zenml/zen_server/dashboard_legacy/asset-manifest.json +0 -131
- zenml/zen_server/dashboard_legacy/favicon.ico +0 -0
- zenml/zen_server/dashboard_legacy/index.html +0 -1
- zenml/zen_server/dashboard_legacy/manifest.json +0 -25
- zenml/zen_server/dashboard_legacy/precache-manifest.6d320abb70db612019dda6c4948e7a90.js +0 -462
- zenml/zen_server/dashboard_legacy/robots.txt +0 -2
- zenml/zen_server/dashboard_legacy/service-worker.js +0 -39
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css +0 -16
- zenml/zen_server/dashboard_legacy/static/css/2.5b37d44a.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css +0 -2
- zenml/zen_server/dashboard_legacy/static/css/main.e79dff04.chunk.css.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js +0 -3
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.LICENSE.txt +0 -95
- zenml/zen_server/dashboard_legacy/static/js/2.7934458d.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/main.fa9299d5.chunk.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js +0 -2
- zenml/zen_server/dashboard_legacy/static/js/runtime-main.bfca2edd.js.map +0 -1
- zenml/zen_server/dashboard_legacy/static/media/AlertTriangle.28aee535.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/ArrowSquareOut.abfb9bc7.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Back.86c23a22.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BookOpen.5cb101ff.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/BoundingBox.1eb98717.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Burger.9b1c67d7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Cached.2381fb8d.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Calendar.356e11c7.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChartBarHorizontal.0247447b.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/ChartLine.0d79e18d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ChatDots.2e1c9211.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Check.dad6beb2.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CheckCircleFilled.c19566d0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Checkbox.af50e31e.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDown.f860ce32.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronDownLight.6642d756.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ChevronLeft.f6edfcdb.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CircleCheck.f98fd6ca.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Clock.ffc9de95.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Close.74e9efbc.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/CloseWithBorder.6960930a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloseWithoutBorder.cd6f71df.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/CloudArrowUp.0aecb235.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Code.ef0f33b5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Config.0be63f8a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Connector.9fd46ef1.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/Copy.36e2112a.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Dashboard.d05787e0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Data.b1c3b5f8.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Delete.3c361b28.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Docs.7541d478.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Download.fba04d87.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Edit.490eb294.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/EmptyRightArrow.23749d01.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Example.6396cd37.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Extension.1394cd4a.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Eye.d9e4ee62.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Failed.0213c1a0.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/FileText.1f15bacd.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Filter.ab6b9c0d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Folders.12b29887.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/FunnelFill.6df4c143.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/GitCommit.7dd9c2aa.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/GitHub_Logo.cefc2023.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Graph.2c63a892.svg +0 -11
- zenml/zen_server/dashboard_legacy/static/media/History.08329240.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Home.0843b0d5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/ImageBuilder.ea762d9c.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/InProgress.304a0edc.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/Info.9fe10c5c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/KeyboardReturn.491afbe3.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Link.72bbb55d.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Lock.30f5e1fe.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Lock2.a769ea52.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/LockKey.92f21621.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Logs.8bf4d005.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/MinusCircle.4188f418.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/ModelRegistry.f0de050a.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/MultiUser.a2ba7c67.svg +0 -10
- zenml/zen_server/dashboard_legacy/static/media/PaginationFirst.92628634.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationLast.00d3c732.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/PaginationNext.86158845.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PaginationPrev.60c18a88.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pen.f2d831d4.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/PhotoCamera.179d6d4c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Pipeline.30d298b0.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/Plus.5aa1c16b.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/PlusCircle.92d860dd.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/Repositories.71a36b8c.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RightArrow.f30d3871.svg +0 -29
- zenml/zen_server/dashboard_legacy/static/media/Rocket.63bf7b9d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/RocketLaunch.1bff2b59.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Medium.c87313aa.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Rubik-Regular.b3d0902b.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Run.daec4fb2.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Search.d1afcce5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Settings.59ca73ae.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Share2.46c3ff66.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SignOut.6aa718c5.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SimplePlus.5cf7ec20.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SingleUser.bef3a095.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/SourceCodePro-Regular.b484b32f.ttf +0 -0
- zenml/zen_server/dashboard_legacy/static/media/Stack.19b604ac.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/StackComponent.b1ba90b5.svg +0 -4
- zenml/zen_server/dashboard_legacy/static/media/Star.f0c25022.svg +0 -9
- zenml/zen_server/dashboard_legacy/static/media/StarOutline.94ca8cd9.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Storefront.4b4796fe.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/Stream.543e3039.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/SupportAgent.510ddf1f.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/Table.77033750.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Tool.d5785486.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/UserPlus.741a99d7.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/Verified.0625b2a0.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/addNew.4fb6c939.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/arrowClose.cbd53f3f.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/arrowOpen.6ceef0af.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/check_small.30bc0138.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideClose.98d6013e.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/circleArrowSideOpen.63653df6.svg +0 -18
- zenml/zen_server/dashboard_legacy/static/media/image.104fd14b.png +0 -0
- zenml/zen_server/dashboard_legacy/static/media/imageAddIcon.e83004a9.svg +0 -7
- zenml/zen_server/dashboard_legacy/static/media/logo.93333e5c.svg +0 -1
- zenml/zen_server/dashboard_legacy/static/media/logo_small.4204397d.svg +0 -3
- zenml/zen_server/dashboard_legacy/static/media/logo_white.d4b4414e.svg +0 -20
- zenml/zen_server/dashboard_legacy/static/media/notConnected.5e2c8ea7.svg +0 -8
- zenml/zen_server/dashboard_legacy/static/media/plugin-fallback.72c294e6.svg +0 -6
- zenml/zen_server/dashboard_legacy/static/media/share.bcd998b0.svg +0 -5
- zenml/zen_server/dashboard_legacy/static/media/stars.08a9b19a.svg +0 -8
- zenml/zen_server/deploy/terraform/__init__.py +0 -41
- zenml/zen_server/deploy/terraform/providers/__init__.py +0 -14
- zenml/zen_server/deploy/terraform/providers/aws_provider.py +0 -61
- zenml/zen_server/deploy/terraform/providers/azure_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/gcp_provider.py +0 -59
- zenml/zen_server/deploy/terraform/providers/terraform_provider.py +0 -331
- zenml/zen_server/deploy/terraform/recipes/aws/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/aws/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/aws/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/aws/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/aws/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/aws/sql.tf +0 -62
- zenml/zen_server/deploy/terraform/recipes/aws/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/aws/variables.tf +0 -167
- zenml/zen_server/deploy/terraform/recipes/aws/vpc.tf +0 -47
- zenml/zen_server/deploy/terraform/recipes/aws/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/azure/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/azure/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/azure/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/azure/key_vault.tf +0 -73
- zenml/zen_server/deploy/terraform/recipes/azure/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/azure/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/azure/rg.tf +0 -36
- zenml/zen_server/deploy/terraform/recipes/azure/sql.tf +0 -65
- zenml/zen_server/deploy/terraform/recipes/azure/terraform.tf +0 -52
- zenml/zen_server/deploy/terraform/recipes/azure/variables.tf +0 -176
- zenml/zen_server/deploy/terraform/recipes/azure/zen_server.tf +0 -103
- zenml/zen_server/deploy/terraform/recipes/gcp/.gitignore +0 -8
- zenml/zen_server/deploy/terraform/recipes/gcp/helm.tf +0 -20
- zenml/zen_server/deploy/terraform/recipes/gcp/ingress.tf +0 -30
- zenml/zen_server/deploy/terraform/recipes/gcp/outputs.tf +0 -7
- zenml/zen_server/deploy/terraform/recipes/gcp/printf.cmd +0 -2
- zenml/zen_server/deploy/terraform/recipes/gcp/sql.tf +0 -64
- zenml/zen_server/deploy/terraform/recipes/gcp/terraform.tf +0 -44
- zenml/zen_server/deploy/terraform/recipes/gcp/variables.tf +0 -171
- zenml/zen_server/deploy/terraform/recipes/gcp/zen_server.tf +0 -114
- zenml/zen_server/deploy/terraform/terraform_zen_server.py +0 -246
- /zenml/{new/pipelines → pipelines}/build_utils.py +0 -0
- /zenml/{new/pipelines → pipelines}/run_utils.py +0 -0
- /zenml/{new/steps → steps}/decorated_step.py +0 -0
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.66.0.dev20240930.dist-info → zenml_nightly-0.68.0.dev20241026.dist-info}/entry_points.txt +0 -0
@@ -11,16 +11,17 @@
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
12
|
# or implied. See the License for the specific language governing
|
13
13
|
# permissions and limitations under the License.
|
14
|
-
"""Implementation for the BentoML
|
14
|
+
"""Implementation for the BentoML local deployment service."""
|
15
15
|
|
16
16
|
import os
|
17
17
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
18
18
|
|
19
|
-
from bentoml
|
19
|
+
from bentoml import AsyncHTTPClient, SyncHTTPClient
|
20
20
|
from pydantic import BaseModel, Field
|
21
21
|
|
22
22
|
from zenml.constants import DEFAULT_LOCAL_SERVICE_IP_ADDRESS
|
23
23
|
from zenml.integrations.bentoml.constants import (
|
24
|
+
BENTOML_DEFAULT_PORT,
|
24
25
|
BENTOML_HEALTHCHECK_URL_PATH,
|
25
26
|
BENTOML_PREDICTION_URL_PATH,
|
26
27
|
)
|
@@ -44,6 +45,8 @@ if TYPE_CHECKING:
|
|
44
45
|
|
45
46
|
logger = get_logger(__name__)
|
46
47
|
|
48
|
+
BENTOML_LOCAL_DEPLOYMENT_SERVICE_NAME = "bentoml-local-deployment"
|
49
|
+
|
47
50
|
|
48
51
|
class BentoMLDeploymentEndpointConfig(LocalDaemonServiceEndpointConfig):
|
49
52
|
"""BentoML deployment service configuration.
|
@@ -100,14 +103,15 @@ class SSLBentoMLParametersConfig(BaseModel):
|
|
100
103
|
ssl_ciphers: Optional[str] = None
|
101
104
|
|
102
105
|
|
103
|
-
class
|
106
|
+
class BentoMLLocalDeploymentConfig(LocalDaemonServiceConfig):
|
104
107
|
"""BentoML model deployment configuration.
|
105
108
|
|
106
109
|
Attributes:
|
107
110
|
model_name: name of the model to deploy
|
108
111
|
model_uri: URI of the model to deploy
|
109
112
|
port: port to expose the service on
|
110
|
-
|
113
|
+
bento_tag: Bento package to deploy. A bento tag is a combination of the
|
114
|
+
name of the bento and its version.
|
111
115
|
workers: number of workers to use
|
112
116
|
backlog: number of requests to queue
|
113
117
|
production: whether to run in production mode
|
@@ -118,11 +122,11 @@ class BentoMLDeploymentConfig(LocalDaemonServiceConfig):
|
|
118
122
|
|
119
123
|
model_name: str
|
120
124
|
model_uri: str
|
121
|
-
|
125
|
+
bento_tag: str
|
122
126
|
bento_uri: Optional[str] = None
|
123
127
|
apis: List[str] = []
|
124
128
|
workers: int = 1
|
125
|
-
port: int
|
129
|
+
port: Optional[int] = None
|
126
130
|
backlog: int = 2048
|
127
131
|
production: bool = False
|
128
132
|
working_dir: str
|
@@ -132,7 +136,7 @@ class BentoMLDeploymentConfig(LocalDaemonServiceConfig):
|
|
132
136
|
)
|
133
137
|
|
134
138
|
|
135
|
-
class
|
139
|
+
class BentoMLLocalDeploymentService(LocalDaemonService, BaseDeploymentService):
|
136
140
|
"""BentoML deployment service used to start a local prediction server for BentoML models.
|
137
141
|
|
138
142
|
Attributes:
|
@@ -143,19 +147,19 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
143
147
|
"""
|
144
148
|
|
145
149
|
SERVICE_TYPE = ServiceType(
|
146
|
-
name=
|
150
|
+
name=BENTOML_LOCAL_DEPLOYMENT_SERVICE_NAME,
|
147
151
|
type="model-serving",
|
148
152
|
flavor="bentoml",
|
149
|
-
description="BentoML prediction service",
|
153
|
+
description="BentoML local prediction service",
|
150
154
|
logo_url="https://public-flavor-logos.s3.eu-central-1.amazonaws.com/model_deployer/bentoml.png",
|
151
155
|
)
|
152
156
|
|
153
|
-
config:
|
157
|
+
config: BentoMLLocalDeploymentConfig
|
154
158
|
endpoint: BentoMLDeploymentEndpoint
|
155
159
|
|
156
160
|
def __init__(
|
157
161
|
self,
|
158
|
-
config: Union[
|
162
|
+
config: Union[BentoMLLocalDeploymentConfig, Dict[str, Any]],
|
159
163
|
**attrs: Any,
|
160
164
|
) -> None:
|
161
165
|
"""Initialize the BentoML deployment service.
|
@@ -168,13 +172,15 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
168
172
|
# TODO [ENG-700]: implement a service factory or builder for BentoML
|
169
173
|
# deployment services
|
170
174
|
if (
|
171
|
-
isinstance(config,
|
175
|
+
isinstance(config, BentoMLLocalDeploymentConfig)
|
172
176
|
and "endpoint" not in attrs
|
173
177
|
):
|
174
178
|
endpoint = BentoMLDeploymentEndpoint(
|
175
179
|
config=BentoMLDeploymentEndpointConfig(
|
176
180
|
protocol=ServiceEndpointProtocol.HTTP,
|
177
|
-
port=config.port
|
181
|
+
port=config.port
|
182
|
+
if config.port is not None
|
183
|
+
else BENTOML_DEFAULT_PORT,
|
178
184
|
ip_address=config.host or DEFAULT_LOCAL_SERVICE_IP_ADDRESS,
|
179
185
|
prediction_url_path=BENTOML_PREDICTION_URL_PATH,
|
180
186
|
),
|
@@ -189,6 +195,9 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
189
195
|
|
190
196
|
def run(self) -> None:
|
191
197
|
"""Start the service."""
|
198
|
+
from bentoml import Service
|
199
|
+
from bentoml._internal.service.loader import load
|
200
|
+
|
192
201
|
logger.info(
|
193
202
|
"Starting BentoML prediction service as blocking "
|
194
203
|
"process... press CTRL+C once to stop it."
|
@@ -198,26 +207,55 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
198
207
|
ssl_params = self.config.ssl_parameters or SSLBentoMLParametersConfig()
|
199
208
|
# verify if to deploy in production mode or development mode
|
200
209
|
logger.info("Running in production mode.")
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
210
|
+
svc = load(
|
211
|
+
bento_identifier=self.config.bento_tag,
|
212
|
+
working_dir=self.config.working_dir or ".",
|
213
|
+
)
|
214
|
+
|
215
|
+
if isinstance(svc, Service):
|
216
|
+
# bentoml<1.2
|
217
|
+
from bentoml.serving import serve_http_production
|
218
|
+
|
219
|
+
try:
|
220
|
+
serve_http_production(
|
221
|
+
self.config.bento_tag,
|
222
|
+
working_dir=self.config.working_dir,
|
223
|
+
port=self.config.port,
|
224
|
+
api_workers=self.config.workers,
|
225
|
+
host=self.config.host or DEFAULT_LOCAL_SERVICE_IP_ADDRESS,
|
226
|
+
backlog=self.config.backlog,
|
227
|
+
ssl_certfile=ssl_params.ssl_certfile,
|
228
|
+
ssl_keyfile=ssl_params.ssl_keyfile,
|
229
|
+
ssl_keyfile_password=ssl_params.ssl_keyfile_password,
|
230
|
+
ssl_version=ssl_params.ssl_version,
|
231
|
+
ssl_cert_reqs=ssl_params.ssl_cert_reqs,
|
232
|
+
ssl_ca_certs=ssl_params.ssl_ca_certs,
|
233
|
+
ssl_ciphers=ssl_params.ssl_ciphers,
|
234
|
+
)
|
235
|
+
except KeyboardInterrupt:
|
236
|
+
logger.info("Stopping BentoML prediction service...")
|
237
|
+
else:
|
238
|
+
# bentoml>=1.2
|
239
|
+
from _bentoml_impl.server import serve_http # type: ignore
|
240
|
+
|
241
|
+
svc.inject_config()
|
242
|
+
try:
|
243
|
+
serve_http(
|
244
|
+
self.config.bento_tag,
|
245
|
+
working_dir=self.config.working_dir or ".",
|
246
|
+
host=self.config.host or DEFAULT_LOCAL_SERVICE_IP_ADDRESS,
|
247
|
+
port=self.config.port,
|
248
|
+
backlog=self.config.backlog,
|
249
|
+
ssl_certfile=ssl_params.ssl_certfile,
|
250
|
+
ssl_keyfile=ssl_params.ssl_keyfile,
|
251
|
+
ssl_keyfile_password=ssl_params.ssl_keyfile_password,
|
252
|
+
ssl_version=ssl_params.ssl_version,
|
253
|
+
ssl_cert_reqs=ssl_params.ssl_cert_reqs,
|
254
|
+
ssl_ca_certs=ssl_params.ssl_ca_certs,
|
255
|
+
ssl_ciphers=ssl_params.ssl_ciphers,
|
256
|
+
)
|
257
|
+
except KeyboardInterrupt:
|
258
|
+
logger.info("Stopping BentoML prediction service...")
|
221
259
|
|
222
260
|
@property
|
223
261
|
def prediction_url(self) -> Optional[str]:
|
@@ -249,12 +287,15 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
249
287
|
]
|
250
288
|
return None
|
251
289
|
|
252
|
-
def predict(
|
290
|
+
def predict(
|
291
|
+
self, api_endpoint: str, data: "Any", sync: bool = True
|
292
|
+
) -> "Any":
|
253
293
|
"""Make a prediction using the service.
|
254
294
|
|
255
295
|
Args:
|
256
296
|
data: data to make a prediction on
|
257
297
|
api_endpoint: the api endpoint to make the prediction on
|
298
|
+
sync: if set to False, the prediction will be made asynchronously
|
258
299
|
|
259
300
|
Returns:
|
260
301
|
The prediction result.
|
@@ -268,11 +309,11 @@ class BentoMLDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
268
309
|
"BentoML prediction service is not running. "
|
269
310
|
"Please start the service before making predictions."
|
270
311
|
)
|
271
|
-
if self.endpoint.prediction_url is
|
272
|
-
client = Client.from_url(
|
273
|
-
self.endpoint.prediction_url.replace("http://", "").rstrip("/")
|
274
|
-
)
|
275
|
-
result = client.call(api_endpoint, data)
|
276
|
-
else:
|
312
|
+
if self.endpoint.prediction_url is None:
|
277
313
|
raise ValueError("No endpoint known for prediction.")
|
314
|
+
if sync:
|
315
|
+
client = SyncHTTPClient(self.endpoint.prediction_url)
|
316
|
+
else:
|
317
|
+
client = AsyncHTTPClient(self.endpoint.prediction_url)
|
318
|
+
result = client.call(api_endpoint, data)
|
278
319
|
return result
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) ZenML GmbH
|
1
|
+
# Copyright (c) ZenML GmbH 2024. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -11,10 +11,13 @@
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
12
|
# or implied. See the License for the specific language governing
|
13
13
|
# permissions and limitations under the License.
|
14
|
-
"""
|
14
|
+
"""BentoML Service Deployment Types."""
|
15
15
|
|
16
|
-
from
|
16
|
+
from enum import Enum
|
17
17
|
|
18
18
|
|
19
|
-
class
|
20
|
-
"""
|
19
|
+
class BentoMLDeploymentType(Enum):
|
20
|
+
"""BentoML Service Deployment Types."""
|
21
|
+
|
22
|
+
LOCAL = "local"
|
23
|
+
CONTAINER = "container"
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Implementation of the BentoML model deployer pipeline step."""
|
15
15
|
|
16
|
-
from typing import List, Optional, cast
|
16
|
+
from typing import List, Optional, Tuple, cast
|
17
17
|
|
18
18
|
import bentoml
|
19
19
|
from bentoml._internal.bento import bento
|
@@ -22,12 +22,21 @@ from zenml import get_step_context, step
|
|
22
22
|
from zenml.integrations.bentoml.model_deployers.bentoml_model_deployer import (
|
23
23
|
BentoMLModelDeployer,
|
24
24
|
)
|
25
|
-
from zenml.integrations.bentoml.services.
|
26
|
-
|
27
|
-
|
25
|
+
from zenml.integrations.bentoml.services.bentoml_container_deployment import (
|
26
|
+
BentoMLContainerDeploymentConfig,
|
27
|
+
BentoMLContainerDeploymentService,
|
28
|
+
)
|
29
|
+
from zenml.integrations.bentoml.services.bentoml_local_deployment import (
|
30
|
+
BentoMLLocalDeploymentConfig,
|
31
|
+
BentoMLLocalDeploymentService,
|
28
32
|
SSLBentoMLParametersConfig,
|
29
33
|
)
|
34
|
+
from zenml.integrations.bentoml.services.deployment_type import (
|
35
|
+
BentoMLDeploymentType,
|
36
|
+
)
|
30
37
|
from zenml.logger import get_logger
|
38
|
+
from zenml.services.service import BaseService, ServiceConfig
|
39
|
+
from zenml.services.service_type import ServiceType
|
31
40
|
from zenml.utils import source_utils
|
32
41
|
|
33
42
|
logger = get_logger(__name__)
|
@@ -38,12 +47,16 @@ def bentoml_model_deployer_step(
|
|
38
47
|
bento: bento.Bento,
|
39
48
|
model_name: str,
|
40
49
|
port: int,
|
50
|
+
deployment_type: BentoMLDeploymentType = BentoMLDeploymentType.LOCAL,
|
41
51
|
deploy_decision: bool = True,
|
42
52
|
workers: Optional[int] = 1,
|
43
53
|
backlog: Optional[int] = 2048,
|
44
54
|
production: bool = False,
|
45
55
|
working_dir: Optional[str] = None,
|
46
56
|
host: Optional[str] = None,
|
57
|
+
image: Optional[str] = None,
|
58
|
+
image_tag: Optional[str] = None,
|
59
|
+
platform: Optional[str] = None,
|
47
60
|
ssl_certfile: Optional[str] = None,
|
48
61
|
ssl_keyfile: Optional[str] = None,
|
49
62
|
ssl_keyfile_password: Optional[str] = None,
|
@@ -52,7 +65,7 @@ def bentoml_model_deployer_step(
|
|
52
65
|
ssl_ca_certs: Optional[str] = None,
|
53
66
|
ssl_ciphers: Optional[str] = None,
|
54
67
|
timeout: int = 30,
|
55
|
-
) ->
|
68
|
+
) -> BaseService:
|
56
69
|
"""Model deployer pipeline step for BentoML.
|
57
70
|
|
58
71
|
This step deploys a given Bento to a local BentoML http prediction server.
|
@@ -61,12 +74,16 @@ def bentoml_model_deployer_step(
|
|
61
74
|
bento: the bento artifact to deploy
|
62
75
|
model_name: the name of the model to deploy.
|
63
76
|
port: the port to use for the prediction service.
|
77
|
+
deployment_type: the type of deployment to use. Either "local" or "container".
|
64
78
|
deploy_decision: whether to deploy the model or not
|
65
79
|
workers: number of workers to use for the prediction service
|
66
80
|
backlog: the number of requests to queue up before rejecting requests.
|
67
81
|
production: whether to deploy the service in production mode.
|
68
82
|
working_dir: the working directory to use for the prediction service.
|
69
83
|
host: the host to use for the prediction service.
|
84
|
+
image: the image to use for the prediction service in the container deployment.
|
85
|
+
image_tag: the image tag to use for the prediction service in the container deployment.
|
86
|
+
platform: the platform to use to build the image for the container deployment.
|
70
87
|
ssl_certfile: the path to the ssl cert file.
|
71
88
|
ssl_keyfile: the path to the ssl key file.
|
72
89
|
ssl_keyfile_password: the password for the ssl key file.
|
@@ -102,40 +119,62 @@ def bentoml_model_deployer_step(
|
|
102
119
|
apis_paths = list(apis.keys())
|
103
120
|
return apis_paths
|
104
121
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
122
|
+
def create_deployment_config(
|
123
|
+
deployment_type: BentoMLDeploymentType,
|
124
|
+
) -> Tuple[ServiceConfig, ServiceType]:
|
125
|
+
common_config = {
|
126
|
+
"model_name": model_name,
|
127
|
+
"bento_tag": str(bento.tag),
|
128
|
+
"model_uri": bento.info.labels.get("model_uri"),
|
129
|
+
"bento_uri": bento.info.labels.get("bento_uri"),
|
130
|
+
"apis": service_apis(str(bento.tag)),
|
131
|
+
"host": host,
|
132
|
+
"port": port,
|
133
|
+
"pipeline_name": pipeline_name,
|
134
|
+
"pipeline_step_name": step_name,
|
135
|
+
"workers": workers,
|
136
|
+
"backlog": backlog,
|
137
|
+
}
|
138
|
+
|
139
|
+
if deployment_type == BentoMLDeploymentType.CONTAINER:
|
140
|
+
return BentoMLContainerDeploymentConfig(
|
141
|
+
**common_config,
|
142
|
+
image=image,
|
143
|
+
image_tag=image_tag,
|
144
|
+
platform=platform,
|
145
|
+
), BentoMLContainerDeploymentService.SERVICE_TYPE
|
146
|
+
else:
|
147
|
+
return BentoMLLocalDeploymentConfig(
|
148
|
+
**common_config,
|
149
|
+
working_dir=working_dir or source_utils.get_source_root(),
|
150
|
+
ssl_parameters=SSLBentoMLParametersConfig(
|
151
|
+
ssl_certfile=ssl_certfile,
|
152
|
+
ssl_keyfile=ssl_keyfile,
|
153
|
+
ssl_keyfile_password=ssl_keyfile_password,
|
154
|
+
ssl_version=ssl_version,
|
155
|
+
ssl_cert_reqs=ssl_cert_reqs,
|
156
|
+
ssl_ca_certs=ssl_ca_certs,
|
157
|
+
ssl_ciphers=ssl_ciphers,
|
158
|
+
),
|
159
|
+
production=production,
|
160
|
+
), BentoMLLocalDeploymentService.SERVICE_TYPE
|
161
|
+
|
162
|
+
predictor_cfg, service_type = create_deployment_config(deployment_type)
|
130
163
|
# fetch existing services with same pipeline name, step name and model name
|
131
164
|
existing_services = model_deployer.find_model_server(
|
132
165
|
config=predictor_cfg.model_dump(),
|
133
|
-
service_type=
|
166
|
+
service_type=service_type,
|
134
167
|
)
|
135
168
|
|
136
169
|
# Creating a new service with inactive state and status by default
|
170
|
+
service: Optional[BaseService] = None
|
137
171
|
if existing_services:
|
138
|
-
|
172
|
+
if deployment_type == BentoMLDeploymentType.CONTAINER:
|
173
|
+
service = cast(
|
174
|
+
BentoMLContainerDeploymentService, existing_services[0]
|
175
|
+
)
|
176
|
+
else:
|
177
|
+
service = cast(BentoMLLocalDeploymentService, existing_services[0])
|
139
178
|
|
140
179
|
if not deploy_decision and existing_services:
|
141
180
|
logger.info(
|
@@ -144,20 +183,33 @@ def bentoml_model_deployer_step(
|
|
144
183
|
f"'{step_name}' and pipeline '{pipeline_name}' for model "
|
145
184
|
f"'{model_name}'..."
|
146
185
|
)
|
186
|
+
assert service is not None
|
147
187
|
if not service.is_running:
|
148
188
|
service.start(timeout=timeout)
|
149
189
|
return service
|
150
190
|
|
151
191
|
# create a new model deployment and replace an old one if it exists
|
152
|
-
new_service
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
192
|
+
new_service: BaseService
|
193
|
+
if deployment_type == BentoMLDeploymentType.CONTAINER:
|
194
|
+
new_service = cast(
|
195
|
+
BentoMLContainerDeploymentService,
|
196
|
+
model_deployer.deploy_model(
|
197
|
+
replace=True,
|
198
|
+
config=cast(BentoMLContainerDeploymentConfig, predictor_cfg),
|
199
|
+
timeout=timeout,
|
200
|
+
service_type=service_type,
|
201
|
+
),
|
202
|
+
)
|
203
|
+
else:
|
204
|
+
new_service = cast(
|
205
|
+
BentoMLLocalDeploymentService,
|
206
|
+
model_deployer.deploy_model(
|
207
|
+
replace=True,
|
208
|
+
config=cast(BentoMLLocalDeploymentConfig, predictor_cfg),
|
209
|
+
timeout=timeout,
|
210
|
+
service_type=service_type,
|
211
|
+
),
|
212
|
+
)
|
161
213
|
|
162
214
|
logger.info(
|
163
215
|
f"BentoML deployment service started and reachable at:\n"
|
@@ -159,7 +159,12 @@ class GitLabCodeRepository(BaseCodeRepository):
|
|
159
159
|
return True
|
160
160
|
|
161
161
|
ssh_regex = re.compile(
|
162
|
-
|
162
|
+
r"^(?P<scheme_with_delimiter>ssh://)?"
|
163
|
+
r"(?P<userinfo>git)"
|
164
|
+
f"@{self.config.host}:"
|
165
|
+
r"(?P<port>\d+)?"
|
166
|
+
r"(?(scheme_with_delimiter)/|/?)"
|
167
|
+
f"{self.config.group}/{self.config.project}.git$",
|
163
168
|
)
|
164
169
|
if ssh_regex.fullmatch(url):
|
165
170
|
return True
|
@@ -57,14 +57,9 @@ class HuggingfaceIntegration(Integration):
|
|
57
57
|
# - https://github.com/huggingface/datasets/issues/6697
|
58
58
|
# TODO try relaxing it back going forward
|
59
59
|
"fsspec<=2023.12.0",
|
60
|
+
"transformers",
|
60
61
|
]
|
61
62
|
|
62
|
-
# In python 3.8 higher transformers version lead to other packages breaking
|
63
|
-
if sys.version_info.minor > 8:
|
64
|
-
requirements += ["transformers"]
|
65
|
-
else:
|
66
|
-
requirements += ["transformers<=4.31"]
|
67
|
-
|
68
63
|
# Add the pandas integration requirements
|
69
64
|
from zenml.integrations.pandas import PandasIntegration
|
70
65
|
|
@@ -199,9 +199,9 @@ class KanikoImageBuilder(BaseImageBuilder):
|
|
199
199
|
"--image-name-with-digest-file=/dev/termination-log",
|
200
200
|
] + self.config.executor_args
|
201
201
|
|
202
|
-
|
202
|
+
optional_spec_args: Dict[str, Any] = {}
|
203
203
|
if self.config.service_account_name:
|
204
|
-
|
204
|
+
optional_spec_args["serviceAccountName"] = (
|
205
205
|
self.config.service_account_name
|
206
206
|
)
|
207
207
|
|
@@ -218,10 +218,10 @@ class KanikoImageBuilder(BaseImageBuilder):
|
|
218
218
|
"env": self.config.env,
|
219
219
|
"envFrom": self.config.env_from,
|
220
220
|
"volumeMounts": self.config.volume_mounts,
|
221
|
-
**optional_container_args,
|
222
221
|
}
|
223
222
|
],
|
224
223
|
"volumes": self.config.volumes,
|
224
|
+
**optional_spec_args,
|
225
225
|
},
|
226
226
|
}
|
227
227
|
|
@@ -399,7 +399,7 @@ class LightningOrchestrator(WheeledOrchestrator):
|
|
399
399
|
f"Installing requirements: {pipeline_requirements_to_string}"
|
400
400
|
)
|
401
401
|
studio.run(f"uv pip install {pipeline_requirements_to_string}")
|
402
|
-
studio.run("pip install zenml
|
402
|
+
studio.run("pip install zenml")
|
403
403
|
|
404
404
|
for custom_command in settings.custom_commands or []:
|
405
405
|
studio.run(
|
@@ -493,7 +493,7 @@ class LightningOrchestrator(WheeledOrchestrator):
|
|
493
493
|
)
|
494
494
|
studio.run("pip install uv")
|
495
495
|
studio.run(f"uv pip install {requirements}")
|
496
|
-
studio.run("pip install zenml
|
496
|
+
studio.run("pip install zenml")
|
497
497
|
# studio.run(f"pip install {wheel_path.rsplit('/', 1)[-1]}")
|
498
498
|
for command in settings.custom_commands or []:
|
499
499
|
output = studio.run(
|
@@ -566,7 +566,7 @@ class LightningOrchestrator(WheeledOrchestrator):
|
|
566
566
|
)
|
567
567
|
studio.run("pip install uv")
|
568
568
|
studio.run(f"uv pip install {details['requirements']}")
|
569
|
-
studio.run("pip install zenml
|
569
|
+
studio.run("pip install zenml")
|
570
570
|
# studio.run(f"pip install {wheel_path.rsplit('/', 1)[-1]}")
|
571
571
|
for command in custom_commands or []:
|
572
572
|
output = studio.run(
|
@@ -166,7 +166,7 @@ def main() -> None:
|
|
166
166
|
f"uv pip install {pipeline_requirements_to_string}"
|
167
167
|
)
|
168
168
|
logger.info(output)
|
169
|
-
output = main_studio.run("pip install zenml
|
169
|
+
output = main_studio.run("pip install zenml")
|
170
170
|
logger.info(output)
|
171
171
|
|
172
172
|
for command in pipeline_settings.custom_commands or []:
|
@@ -248,7 +248,7 @@ def main() -> None:
|
|
248
248
|
f"uv pip install {step_requirements_to_string}"
|
249
249
|
)
|
250
250
|
logger.info(output)
|
251
|
-
output = studio.run("pip install zenml
|
251
|
+
output = studio.run("pip install zenml")
|
252
252
|
logger.info(output)
|
253
253
|
for command in step_settings.custom_commands or []:
|
254
254
|
output = studio.run(
|
@@ -221,13 +221,16 @@ class MLFlowExperimentTracker(BaseExperimentTracker):
|
|
221
221
|
Returns:
|
222
222
|
A dictionary of metadata.
|
223
223
|
"""
|
224
|
-
|
224
|
+
metadata: Dict[str, Any] = {
|
225
225
|
METADATA_EXPERIMENT_TRACKER_URL: Uri(
|
226
226
|
self.get_tracking_uri(as_plain_text=False)
|
227
227
|
),
|
228
|
-
"mlflow_run_id": mlflow.active_run().info.run_id,
|
229
|
-
"mlflow_experiment_id": mlflow.active_run().info.experiment_id,
|
230
228
|
}
|
229
|
+
if run := mlflow.active_run():
|
230
|
+
metadata["mlflow_run_id"] = run.info.run_id
|
231
|
+
metadata["mlflow_experiment_id"] = run.info.experiment_id
|
232
|
+
|
233
|
+
return metadata
|
231
234
|
|
232
235
|
def disable_autologging(self) -> None:
|
233
236
|
"""Disables MLflow autologging for all supported frameworks."""
|
@@ -362,10 +362,16 @@ class MLFlowModelRegistry(BaseModelRegistry):
|
|
362
362
|
|
363
363
|
Raises:
|
364
364
|
RuntimeError: If the registered model does not exist.
|
365
|
+
ValueError: If no model source URI was provided.
|
365
366
|
|
366
367
|
Returns:
|
367
368
|
The registered model version.
|
368
369
|
"""
|
370
|
+
if not model_source_uri:
|
371
|
+
raise ValueError(
|
372
|
+
"Unable to register model version without model source URI."
|
373
|
+
)
|
374
|
+
|
369
375
|
# Check if the model exists, if not create it.
|
370
376
|
try:
|
371
377
|
self.get_model(name=name)
|
@@ -225,7 +225,7 @@ class MLFlowDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
225
225
|
# to run the deploy the model on the local running environment
|
226
226
|
if int(mlflow_version[0]) >= 2:
|
227
227
|
backend_kwargs["env_manager"] = "local"
|
228
|
-
backend = PyFuncBackend(
|
228
|
+
backend = PyFuncBackend( # type: ignore[no-untyped-call]
|
229
229
|
config={},
|
230
230
|
no_conda=True,
|
231
231
|
workers=self.config.workers,
|
@@ -240,7 +240,7 @@ class MLFlowDeploymentService(LocalDaemonService, BaseDeploymentService):
|
|
240
240
|
"stack."
|
241
241
|
)
|
242
242
|
experiment_tracker.configure_mlflow()
|
243
|
-
backend.serve(
|
243
|
+
backend.serve( # type: ignore[no-untyped-call]
|
244
244
|
model_uri=self.config.model_uri,
|
245
245
|
port=self.endpoint.status.port,
|
246
246
|
host="localhost",
|
@@ -114,7 +114,7 @@ def mlflow_model_deployer_step(
|
|
114
114
|
# Fetch the model URI from the MLflow artifact store
|
115
115
|
model_uri = ""
|
116
116
|
if mlflow_run_id and client.list_artifacts(mlflow_run_id, model_name):
|
117
|
-
model_uri = artifact_utils.get_artifact_uri(
|
117
|
+
model_uri = artifact_utils.get_artifact_uri( # type: ignore[no-untyped-call]
|
118
118
|
run_id=mlflow_run_id, artifact_path=model_name
|
119
119
|
)
|
120
120
|
|
@@ -124,7 +124,7 @@ def mlflow_register_model_step(
|
|
124
124
|
if not model_source_uri and client.list_artifacts(
|
125
125
|
mlflow_run_id, trained_model_name
|
126
126
|
):
|
127
|
-
model_source_uri = artifact_utils.get_artifact_uri(
|
127
|
+
model_source_uri = artifact_utils.get_artifact_uri( # type: ignore[no-untyped-call]
|
128
128
|
run_id=mlflow_run_id, artifact_path=trained_model_name
|
129
129
|
)
|
130
130
|
if not model_source_uri:
|