zenml-nightly 0.64.0.dev20240811__py3-none-any.whl → 0.65.0.dev20240906__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 +1 -1
- RELEASE_NOTES.md +68 -4
- zenml/VERSION +1 -1
- zenml/artifacts/utils.py +13 -6
- zenml/cli/__init__.py +1 -1
- zenml/cli/base.py +4 -4
- zenml/cli/integration.py +48 -9
- zenml/cli/pipeline.py +9 -2
- zenml/cli/stack.py +39 -27
- zenml/cli/utils.py +13 -0
- zenml/client.py +15 -17
- zenml/config/server_config.py +30 -0
- zenml/config/source.py +3 -7
- zenml/constants.py +5 -3
- zenml/entrypoints/base_entrypoint_configuration.py +41 -27
- zenml/entrypoints/step_entrypoint_configuration.py +5 -2
- zenml/enums.py +2 -0
- zenml/environment.py +31 -0
- zenml/feature_stores/base_feature_store.py +4 -6
- zenml/integrations/__init__.py +3 -0
- zenml/integrations/airflow/flavors/airflow_orchestrator_flavor.py +9 -0
- zenml/integrations/aws/__init__.py +2 -2
- zenml/integrations/azure/__init__.py +2 -2
- zenml/integrations/azure/azureml_utils.py +201 -0
- zenml/integrations/azure/flavors/azureml.py +139 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +20 -118
- zenml/integrations/azure/flavors/azureml_step_operator_flavor.py +67 -14
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +58 -172
- zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +1 -0
- zenml/integrations/azure/service_connectors/azure_service_connector.py +4 -0
- zenml/integrations/azure/step_operators/azureml_step_operator.py +78 -177
- zenml/integrations/constants.py +3 -0
- zenml/integrations/databricks/__init__.py +22 -4
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +9 -0
- zenml/integrations/deepchecks/__init__.py +29 -11
- zenml/integrations/deepchecks/materializers/deepchecks_dataset_materializer.py +3 -1
- zenml/integrations/deepchecks/validation_checks.py +0 -30
- zenml/integrations/evidently/__init__.py +17 -2
- zenml/integrations/facets/__init__.py +21 -5
- zenml/integrations/feast/__init__.py +18 -5
- zenml/integrations/gcp/__init__.py +2 -2
- zenml/integrations/gcp/flavors/vertex_orchestrator_flavor.py +9 -0
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +10 -1
- zenml/integrations/great_expectations/__init__.py +21 -7
- zenml/integrations/huggingface/__init__.py +39 -15
- zenml/integrations/huggingface/materializers/__init__.py +3 -0
- zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +3 -1
- zenml/integrations/huggingface/materializers/huggingface_pt_model_materializer.py +1 -1
- zenml/integrations/huggingface/materializers/huggingface_t5_materializer.py +107 -0
- zenml/integrations/huggingface/materializers/huggingface_tf_model_materializer.py +1 -1
- zenml/integrations/huggingface/materializers/huggingface_tokenizer_materializer.py +2 -2
- zenml/integrations/huggingface/steps/accelerate_runner.py +108 -85
- zenml/integrations/hyperai/flavors/hyperai_orchestrator_flavor.py +9 -0
- zenml/integrations/kubeflow/flavors/kubeflow_orchestrator_flavor.py +9 -0
- zenml/integrations/kubeflow/orchestrators/kubeflow_orchestrator.py +10 -1
- zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +9 -0
- zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +10 -1
- zenml/integrations/lightning/__init__.py +48 -0
- zenml/integrations/lightning/flavors/__init__.py +23 -0
- zenml/integrations/lightning/flavors/lightning_orchestrator_flavor.py +148 -0
- zenml/integrations/lightning/orchestrators/__init__.py +23 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator.py +596 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint.py +307 -0
- zenml/integrations/lightning/orchestrators/lightning_orchestrator_entrypoint_configuration.py +77 -0
- zenml/integrations/lightning/orchestrators/utils.py +67 -0
- zenml/integrations/mlflow/__init__.py +43 -5
- zenml/integrations/mlflow/services/mlflow_deployment.py +26 -0
- zenml/integrations/numpy/__init__.py +32 -0
- zenml/integrations/numpy/materializers/__init__.py +18 -0
- zenml/integrations/numpy/materializers/numpy_materializer.py +246 -0
- zenml/integrations/pandas/__init__.py +32 -0
- zenml/integrations/pandas/materializers/__init__.py +18 -0
- zenml/integrations/pandas/materializers/pandas_materializer.py +192 -0
- zenml/integrations/prodigy/annotators/prodigy_annotator.py +1 -1
- zenml/integrations/seldon/__init__.py +18 -3
- zenml/integrations/sklearn/__init__.py +1 -1
- zenml/integrations/skypilot_azure/__init__.py +1 -1
- zenml/integrations/tensorboard/__init__.py +1 -1
- zenml/integrations/tensorflow/__init__.py +2 -2
- zenml/integrations/wandb/experiment_trackers/wandb_experiment_tracker.py +1 -1
- zenml/integrations/whylogs/__init__.py +18 -2
- zenml/logging/step_logging.py +9 -2
- zenml/materializers/__init__.py +0 -4
- zenml/materializers/base_materializer.py +4 -0
- zenml/materializers/numpy_materializer.py +23 -234
- zenml/materializers/pandas_materializer.py +22 -179
- zenml/model/model.py +91 -2
- zenml/model/utils.py +5 -5
- zenml/models/__init__.py +16 -3
- zenml/models/v2/core/model_version.py +1 -1
- zenml/models/v2/core/pipeline_run.py +31 -1
- zenml/models/v2/core/stack.py +51 -20
- zenml/models/v2/core/step_run.py +28 -0
- zenml/models/v2/misc/info_models.py +78 -0
- zenml/new/pipelines/pipeline.py +65 -25
- zenml/new/pipelines/run_utils.py +57 -136
- zenml/new/steps/step_context.py +17 -6
- zenml/orchestrators/base_orchestrator.py +9 -0
- zenml/orchestrators/step_launcher.py +37 -14
- zenml/orchestrators/step_runner.py +14 -13
- zenml/orchestrators/utils.py +107 -7
- zenml/service_connectors/service_connector_utils.py +2 -2
- zenml/stack/utils.py +11 -2
- zenml/stack_deployments/azure_stack_deployment.py +2 -1
- zenml/steps/base_step.py +62 -25
- zenml/steps/utils.py +115 -3
- zenml/utils/cloud_utils.py +8 -8
- zenml/utils/code_utils.py +130 -32
- zenml/utils/function_utils.py +7 -7
- zenml/utils/notebook_utils.py +14 -0
- zenml/utils/pipeline_docker_image_builder.py +1 -11
- zenml/utils/pydantic_utils.py +3 -3
- zenml/utils/secret_utils.py +2 -2
- zenml/utils/source_utils.py +67 -21
- zenml/utils/string_utils.py +29 -0
- zenml/zen_server/dashboard/assets/{404-CRAA_Lew.js → 404-nKxQ4QDX.js} +1 -1
- zenml/zen_server/dashboard/assets/{@radix-BXWm7HOa.js → @radix-DnFH_oo1.js} +1 -1
- zenml/zen_server/dashboard/assets/{@react-router-l3lMcXA2.js → @react-router-APVeuk-U.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-CeVxyqYT.js → @reactflow-IuMOnBUC.js} +2 -2
- zenml/zen_server/dashboard/assets/{@tanstack-FmcYZMuX.js → @tanstack-QbMbTrh5.js} +1 -1
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-CO2rOw5M.js +1 -0
- zenml/zen_server/dashboard/assets/{CodeSnippet-D0VLxT2A.js → CodeSnippet-i_WEOWw9.js} +1 -1
- zenml/zen_server/dashboard/assets/{CollapsibleCard-BaUPiVg0.js → CollapsibleCard-C9BzoY6q.js} +1 -1
- zenml/zen_server/dashboard/assets/Commands-m9HMl-eh.js +1 -0
- zenml/zen_server/dashboard/assets/{CopyButton-Dbo52T1K.js → CopyButton-BAYaQlWF.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-D3kAypDj.js → CsvVizualization-Bbzv7VEL.js} +5 -5
- zenml/zen_server/dashboard/assets/{edit-C0MVvPD2.js → DialogItem-B576Svvy.js} +1 -1
- zenml/zen_server/dashboard/assets/{DisplayDate-DizbSeT-.js → DisplayDate-DkCy54Bp.js} +1 -1
- zenml/zen_server/dashboard/assets/EditSecretDialog-CmY9fiM0.js +1 -0
- zenml/zen_server/dashboard/assets/{EmptyState-BHblM39I.js → EmptyState-Cs3DEmso.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-C6LeJSER.js → Error-QMgFNDTs.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-jH4OrWBq.js → ExecutionStatus-BSQgMpzk.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-aAB2XP-z.js → Helpbox-C96LeSX9.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-BQ0aty32.js → Infobox-BB7dfbrO.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-DpTLgM3Q.js → InlineAvatar-C2ZECnGP.js} +1 -1
- zenml/zen_server/dashboard/assets/{Lock-CNyJvf2r.js → Lock-CmIn0szs.js} +1 -1
- zenml/zen_server/dashboard/assets/{MarkdownVisualization-Bajxn0HY.js → MarkdownVisualization-DS05sfBm.js} +1 -1
- zenml/zen_server/dashboard/assets/{NumberBox-BmKE0qnO.js → NumberBox-CrN0_kqI.js} +1 -1
- zenml/zen_server/dashboard/assets/Partials-RDhJ8Ci7.js +1 -0
- zenml/zen_server/dashboard/assets/{PasswordChecker-yGGoJSB-.js → PasswordChecker-DE71J_3F.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderIcon-wA4qBOv1.js +1 -0
- zenml/zen_server/dashboard/assets/ProviderRadio-DkPE6alG.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-BPNazO4G.js +1 -0
- zenml/zen_server/dashboard/assets/SetPassword-kA6Bi_Kp.js +1 -0
- zenml/zen_server/dashboard/assets/{Tick-uxv80Q6a.js → Tick-DEACFydX.js} +1 -1
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-oN4G3sKz.js → UpdatePasswordSchemas-BKyR7Eqi.js} +1 -1
- zenml/zen_server/dashboard/assets/UsageReason-DbgUeRkI.js +1 -0
- zenml/zen_server/dashboard/assets/WizardFooter-sUnbJ70r.js +1 -0
- zenml/zen_server/dashboard/assets/{check-circle-1_I207rW.js → check-circle-DOoS4yhF.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-down-BpaF8JqM.js → chevron-down-Cwb-W_B_.js} +1 -1
- zenml/zen_server/dashboard/assets/{chevron-right-double-Dk8e2L99.js → chevron-right-double-c9H46Kl8.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-BkUuI0lZ.js → cloud-only-DrdxC8NV.js} +1 -1
- zenml/zen_server/dashboard/assets/code-browser-BJYErIjr.js +1 -0
- zenml/zen_server/dashboard/assets/{copy-f3XGPPxt.js → copy-CaGlDsUy.js} +1 -1
- zenml/zen_server/dashboard/assets/create-stack-u6VyIXZP.js +1 -0
- zenml/zen_server/dashboard/assets/{docker-8uj__HHK.js → docker-BFAFXr2_.js} +1 -1
- zenml/zen_server/dashboard/assets/{dots-horizontal-sKQlWEni.js → dots-horizontal-C6K59vUm.js} +1 -1
- zenml/zen_server/dashboard/assets/flyte-Cj-xy_8I.svg +10 -0
- zenml/zen_server/dashboard/assets/form-schemas-DD4OppNK.js +1 -0
- zenml/zen_server/dashboard/assets/gcp-Dj6ntk0L.js +1 -0
- zenml/zen_server/dashboard/assets/{help-FuHlZwn0.js → help-CwN931fX.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-Bd1xgUQG.js → index-5GJ5ysEZ.js} +1 -1
- zenml/zen_server/dashboard/assets/index-CnqMjIZT.js +1 -0
- zenml/zen_server/dashboard/assets/index-CsIuf3i6.css +1 -0
- zenml/zen_server/dashboard/assets/index-Davdjm1d.js +55 -0
- zenml/zen_server/dashboard/assets/{index.esm-DT4uyn2i.js → index.esm-BE1uqCX5.js} +1 -1
- zenml/zen_server/dashboard/assets/kubernetes-BjbR6D-1.js +1 -0
- zenml/zen_server/dashboard/assets/{layout-D6oiSbfd.js → layout-Dru15_XR.js} +1 -1
- zenml/zen_server/dashboard/assets/{login-mutation-13A_JSVA.js → login-mutation-TIWnZoJ7.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-CgeE2vZP.js → logs-GiDJXbLS.js} +1 -1
- zenml/zen_server/dashboard/assets/metaflow-weOkWNyT.svg +10 -0
- zenml/zen_server/dashboard/assets/{not-found-B0Mmb90p.js → not-found-C_bW_Kkr.js} +1 -1
- zenml/zen_server/dashboard/assets/{package-DdkziX79.js → package-DYKZ5jKW.js} +1 -1
- zenml/zen_server/dashboard/assets/page-0eecLRNs.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DugsjcQ_.js → page-BN7n3Dsp.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-OFKSPyN7.js → page-BPFkP_IB.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BSkbj719.js +1 -0
- zenml/zen_server/dashboard/assets/{page-YiF_fNbe.js → page-Bg5X2mLz.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-DSTQnBk-.js → page-BhqIV8mu.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BxPQz4Q8.js +1 -0
- zenml/zen_server/dashboard/assets/{page-DLpOnf7u.js → page-CDG9uQT9.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CCY6yfmu.js → page-CUOBhxxU.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CrjI9mjm.js +1 -0
- zenml/zen_server/dashboard/assets/page-D4J2Oy-I.js +1 -0
- zenml/zen_server/dashboard/assets/{page-TXe1Eo3Z.js → page-D5I0-LSs.js} +1 -1
- zenml/zen_server/dashboard/assets/page-D7bwpJvV.js +1 -0
- zenml/zen_server/dashboard/assets/page-DCnizFO_.js +9 -0
- zenml/zen_server/dashboard/assets/page-DQBv3t8t.js +1 -0
- zenml/zen_server/dashboard/assets/page-DYNlbmas.js +1 -0
- zenml/zen_server/dashboard/assets/{page-Cgn-6v2Y.js → page-DsKroTLH.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DsQOL6ZL.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BGwA9B1M.js → page-Dvr6lpJm.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-hQaiQXfg.js → page-Dy0EbJQD.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DyM2M_wT.js +1 -0
- zenml/zen_server/dashboard/assets/page-HXZtxyWq.js +1 -0
- zenml/zen_server/dashboard/assets/page-OmVfClGH.js +2 -0
- zenml/zen_server/dashboard/assets/{page-RnG-qhv9.js → page-XReFLy-1.js} +1 -1
- zenml/zen_server/dashboard/assets/page-t1VWIy6W.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BkjAUyTA.js → page-wPiJkPp6.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CxQmQqDw.js → page-wQ8_y5mW.js} +1 -1
- zenml/zen_server/dashboard/assets/persist-CnMMI8ls.js +1 -0
- zenml/zen_server/dashboard/assets/{persist-3-5nOJ6m.js → persist-g4uRK-v-.js} +1 -1
- zenml/zen_server/dashboard/assets/{plus-FB9-lEq_.js → plus-Bc8eLSDM.js} +1 -1
- zenml/zen_server/dashboard/assets/{refresh-COb6KYDi.js → refresh-CtPKdk2G.js} +1 -1
- zenml/zen_server/dashboard/assets/rocket-SESCGQXm.js +1 -0
- zenml/zen_server/dashboard/assets/sharedSchema-Dbpe2oAO.js +14 -0
- zenml/zen_server/dashboard/assets/stack-detail-query-fuuoot1D.js +1 -0
- zenml/zen_server/dashboard/assets/{terminal-grtjrIEJ.js → terminal-DRIPb4oF.js} +1 -1
- zenml/zen_server/dashboard/assets/{trash-Cd5CSFqA.js → trash-DUWZWzse.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-B8GB_ubU.js → update-server-settings-mutation-YhoZKgC9.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-hcMJkz8p.js → url-DNHuFfYx.js} +1 -1
- zenml/zen_server/dashboard/assets/{zod-CnykDKJj.js → zod-uFd1wBcd.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.9c473c96a43298343a7ce1256183123b.js → precache-manifest.123c8e8fafecee40f30294ab26484cf1.js} +4 -4
- zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
- zenml/zen_server/dashboard_legacy/static/js/{main.463c90b9.chunk.js → main.a98a73cf.chunk.js} +2 -2
- zenml/zen_server/dashboard_legacy/static/js/{main.463c90b9.chunk.js.map → main.a98a73cf.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/routers/service_connectors_endpoints.py +2 -4
- zenml/zen_server/routers/workspaces_endpoints.py +20 -66
- zenml/zen_server/secure_headers.py +120 -0
- zenml/zen_server/template_execution/runner_entrypoint_configuration.py +0 -2
- zenml/zen_server/template_execution/utils.py +1 -0
- zenml/zen_server/utils.py +0 -100
- zenml/zen_server/zen_server_api.py +4 -2
- zenml/zen_stores/migrations/versions/0.65.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/bf2120261b5a_add_configured_model_version_id.py +74 -0
- zenml/zen_stores/rest_zen_store.py +4 -21
- zenml/zen_stores/schemas/constants.py +16 -0
- zenml/zen_stores/schemas/model_schemas.py +9 -3
- zenml/zen_stores/schemas/pipeline_run_schemas.py +22 -8
- zenml/zen_stores/schemas/step_run_schemas.py +23 -12
- zenml/zen_stores/sql_zen_store.py +312 -300
- zenml/zen_stores/zen_store_interface.py +0 -16
- {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.65.0.dev20240906.dist-info}/METADATA +9 -11
- {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.65.0.dev20240906.dist-info}/RECORD +242 -214
- zenml/models/v2/misc/full_stack.py +0 -129
- zenml/new/pipelines/model_utils.py +0 -72
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-ErO9aOgK.js +0 -1
- zenml/zen_server/dashboard/assets/AwarenessChannel-CLXo5rKM.js +0 -1
- zenml/zen_server/dashboard/assets/Commands-JrcZK-3j.js +0 -1
- zenml/zen_server/dashboard/assets/EditSecretDialog-Bd7mFLS4.js +0 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-BBqkIuTd.js +0 -1
- zenml/zen_server/dashboard/assets/RadioItem-xLhXoiFV.js +0 -1
- zenml/zen_server/dashboard/assets/SearchField-C9R0mdaX.js +0 -1
- zenml/zen_server/dashboard/assets/SetPassword-52sNxNiO.js +0 -1
- zenml/zen_server/dashboard/assets/SuccessStep-DlkItqYG.js +0 -1
- zenml/zen_server/dashboard/assets/aws-0_3UsPif.js +0 -1
- zenml/zen_server/dashboard/assets/database-cXYNX9tt.js +0 -1
- zenml/zen_server/dashboard/assets/file-text-B9JibxTs.js +0 -1
- zenml/zen_server/dashboard/assets/index-DaGknux4.css +0 -1
- zenml/zen_server/dashboard/assets/index-DhIZtpxB.js +0 -55
- zenml/zen_server/dashboard/assets/page-7-v2OBm-.js +0 -1
- zenml/zen_server/dashboard/assets/page-B3ozwdD1.js +0 -1
- zenml/zen_server/dashboard/assets/page-BnacgBiy.js +0 -1
- zenml/zen_server/dashboard/assets/page-BxF_KMQ3.js +0 -2
- zenml/zen_server/dashboard/assets/page-C4POHC0K.js +0 -1
- zenml/zen_server/dashboard/assets/page-C9kudd44.js +0 -9
- zenml/zen_server/dashboard/assets/page-CA1j3GpJ.js +0 -1
- zenml/zen_server/dashboard/assets/page-CgTe7Bme.js +0 -1
- zenml/zen_server/dashboard/assets/page-D2Goey3H.js +0 -1
- zenml/zen_server/dashboard/assets/page-DTysUGOy.js +0 -1
- zenml/zen_server/dashboard/assets/page-D_EXUFJb.js +0 -1
- zenml/zen_server/dashboard/assets/page-Db15QzsM.js +0 -1
- zenml/zen_server/dashboard/assets/page-T2BtjwPl.js +0 -1
- zenml/zen_server/dashboard/assets/play-circle-XSkLR12B.js +0 -1
- zenml/zen_server/dashboard/assets/sharedSchema-BoYx_B_L.js +0 -14
- zenml/zen_server/dashboard/assets/stack-detail-query-B-US_-wa.js +0 -1
- {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.65.0.dev20240906.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.65.0.dev20240906.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.64.0.dev20240811.dist-info → zenml_nightly-0.65.0.dev20240906.dist-info}/entry_points.txt +0 -0
@@ -13,29 +13,16 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Implementation of the ZenML AzureML Step Operator."""
|
15
15
|
|
16
|
-
import itertools
|
17
|
-
import os
|
18
16
|
from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Type, cast
|
19
17
|
|
20
|
-
from
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
ScriptRunConfig,
|
25
|
-
Workspace,
|
26
|
-
)
|
27
|
-
from azureml.core.authentication import (
|
28
|
-
AbstractAuthentication,
|
29
|
-
ServicePrincipalAuthentication,
|
30
|
-
)
|
31
|
-
from azureml.core.conda_dependencies import CondaDependencies
|
18
|
+
from azure.ai.ml import MLClient, command
|
19
|
+
from azure.ai.ml.entities import Environment
|
20
|
+
from azure.core.credentials import TokenCredential
|
21
|
+
from azure.identity import ClientSecretCredential, DefaultAzureCredential
|
32
22
|
|
33
|
-
import
|
34
|
-
from zenml.
|
35
|
-
from zenml.
|
36
|
-
ENV_ZENML_CONFIG_PATH,
|
37
|
-
)
|
38
|
-
from zenml.environment import Environment as ZenMLEnvironment
|
23
|
+
from zenml.config.build_configuration import BuildConfiguration
|
24
|
+
from zenml.enums import StackComponentType
|
25
|
+
from zenml.integrations.azure.azureml_utils import create_or_get_compute
|
39
26
|
from zenml.integrations.azure.flavors.azureml_step_operator_flavor import (
|
40
27
|
AzureMLStepOperatorConfig,
|
41
28
|
AzureMLStepOperatorSettings,
|
@@ -43,20 +30,18 @@ from zenml.integrations.azure.flavors.azureml_step_operator_flavor import (
|
|
43
30
|
from zenml.logger import get_logger
|
44
31
|
from zenml.stack import Stack, StackValidator
|
45
32
|
from zenml.step_operators import BaseStepOperator
|
46
|
-
from zenml.utils import source_utils
|
47
|
-
from zenml.utils.pipeline_docker_image_builder import (
|
48
|
-
DOCKER_IMAGE_ZENML_CONFIG_DIR,
|
49
|
-
PipelineDockerImageBuilder,
|
50
|
-
)
|
51
33
|
|
52
34
|
if TYPE_CHECKING:
|
53
|
-
from zenml.config import DockerSettings
|
54
35
|
from zenml.config.base_settings import BaseSettings
|
55
36
|
from zenml.config.step_run_info import StepRunInfo
|
37
|
+
from zenml.models import PipelineDeploymentBase
|
56
38
|
|
57
39
|
logger = get_logger(__name__)
|
58
40
|
|
59
41
|
|
42
|
+
AZUREML_STEP_OPERATOR_DOCKER_IMAGE_KEY = "azureml_step_operator"
|
43
|
+
|
44
|
+
|
60
45
|
class AzureMLStepOperator(BaseStepOperator):
|
61
46
|
"""Step operator to run a step on AzureML.
|
62
47
|
|
@@ -87,11 +72,11 @@ class AzureMLStepOperator(BaseStepOperator):
|
|
87
72
|
"""Validates the stack.
|
88
73
|
|
89
74
|
Returns:
|
90
|
-
A validator that checks that the stack contains a remote
|
91
|
-
store.
|
75
|
+
A validator that checks that the stack contains a remote container
|
76
|
+
registry and a remote artifact store.
|
92
77
|
"""
|
93
78
|
|
94
|
-
def
|
79
|
+
def _validate_remote_components(
|
95
80
|
stack: "Stack",
|
96
81
|
) -> Tuple[bool, str]:
|
97
82
|
if stack.artifact_store.config.is_local:
|
@@ -104,113 +89,75 @@ class AzureMLStepOperator(BaseStepOperator):
|
|
104
89
|
"step operator."
|
105
90
|
)
|
106
91
|
|
92
|
+
container_registry = stack.container_registry
|
93
|
+
assert container_registry is not None
|
94
|
+
|
95
|
+
if container_registry.config.is_local:
|
96
|
+
return False, (
|
97
|
+
"The AzureML step operator runs code remotely and "
|
98
|
+
"needs to push/pull Docker images, but the "
|
99
|
+
f"container registry `{container_registry.name}` of the "
|
100
|
+
"active stack is local. Please ensure that your stack "
|
101
|
+
"contains a remote container registry when using the "
|
102
|
+
"AzureML step operator."
|
103
|
+
)
|
104
|
+
|
107
105
|
return True, ""
|
108
106
|
|
109
107
|
return StackValidator(
|
110
|
-
|
108
|
+
required_components={
|
109
|
+
StackComponentType.CONTAINER_REGISTRY,
|
110
|
+
StackComponentType.IMAGE_BUILDER,
|
111
|
+
},
|
112
|
+
custom_validation_function=_validate_remote_components,
|
111
113
|
)
|
112
114
|
|
113
|
-
def
|
115
|
+
def _get_credentials(self) -> TokenCredential:
|
114
116
|
"""Returns the authentication object for the AzureML environment.
|
115
117
|
|
116
118
|
Returns:
|
117
119
|
The authentication object for the AzureML environment.
|
118
120
|
"""
|
119
|
-
|
121
|
+
# Authentication
|
122
|
+
if connector := self.get_connector():
|
123
|
+
credentials = connector.connect()
|
124
|
+
assert isinstance(credentials, TokenCredential)
|
125
|
+
return credentials
|
126
|
+
elif (
|
120
127
|
self.config.tenant_id
|
121
128
|
and self.config.service_principal_id
|
122
129
|
and self.config.service_principal_password
|
123
130
|
):
|
124
|
-
return
|
131
|
+
return ClientSecretCredential(
|
125
132
|
tenant_id=self.config.tenant_id,
|
126
|
-
|
127
|
-
|
133
|
+
client_id=self.config.service_principal_id,
|
134
|
+
client_secret=self.config.service_principal_password,
|
128
135
|
)
|
129
|
-
|
136
|
+
else:
|
137
|
+
return DefaultAzureCredential()
|
130
138
|
|
131
|
-
def
|
132
|
-
self,
|
133
|
-
|
134
|
-
|
135
|
-
run_name: str,
|
136
|
-
environment_variables: Dict[str, str],
|
137
|
-
environment_name: Optional[str] = None,
|
138
|
-
) -> Environment:
|
139
|
-
"""Prepares the environment in which Azure will run all jobs.
|
139
|
+
def get_docker_builds(
|
140
|
+
self, deployment: "PipelineDeploymentBase"
|
141
|
+
) -> List["BuildConfiguration"]:
|
142
|
+
"""Gets the Docker builds required for the component.
|
140
143
|
|
141
144
|
Args:
|
142
|
-
|
143
|
-
for a storage account, container registry among other
|
144
|
-
things.
|
145
|
-
docker_settings: The Docker settings for this step.
|
146
|
-
run_name: The name of the pipeline run that can be used
|
147
|
-
for naming environments and runs.
|
148
|
-
environment_variables: Environment variables to set in the
|
149
|
-
environment.
|
150
|
-
environment_name: Optional name of an existing environment to use.
|
145
|
+
deployment: The pipeline deployment for which to get the builds.
|
151
146
|
|
152
147
|
Returns:
|
153
|
-
The
|
148
|
+
The required Docker builds.
|
154
149
|
"""
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
itertools.chain.from_iterable(
|
163
|
-
r[1].split("\n") for r in requirements_files
|
164
|
-
)
|
165
|
-
)
|
166
|
-
requirements.append(f"zenml=={zenml.__version__}")
|
167
|
-
logger.info(
|
168
|
-
"Using requirements for AzureML step operator environment: %s",
|
169
|
-
requirements,
|
170
|
-
)
|
171
|
-
if environment_name:
|
172
|
-
environment = Environment.get(
|
173
|
-
workspace=workspace, name=environment_name
|
174
|
-
)
|
175
|
-
if not environment.python.conda_dependencies:
|
176
|
-
environment.python.conda_dependencies = (
|
177
|
-
CondaDependencies.create(
|
178
|
-
python_version=ZenMLEnvironment.python_version()
|
179
|
-
)
|
150
|
+
builds = []
|
151
|
+
for step_name, step in deployment.step_configurations.items():
|
152
|
+
if step.config.step_operator == self.name:
|
153
|
+
build = BuildConfiguration(
|
154
|
+
key=AZUREML_STEP_OPERATOR_DOCKER_IMAGE_KEY,
|
155
|
+
settings=step.config.docker_settings,
|
156
|
+
step_name=step_name,
|
180
157
|
)
|
158
|
+
builds.append(build)
|
181
159
|
|
182
|
-
|
183
|
-
environment.python.conda_dependencies.add_pip_package(
|
184
|
-
requirement
|
185
|
-
)
|
186
|
-
else:
|
187
|
-
environment = Environment(name=f"zenml-{run_name}")
|
188
|
-
environment.python.conda_dependencies = CondaDependencies.create(
|
189
|
-
pip_packages=requirements,
|
190
|
-
python_version=ZenMLEnvironment.python_version(),
|
191
|
-
)
|
192
|
-
|
193
|
-
if docker_settings.parent_image:
|
194
|
-
# replace the default azure base image
|
195
|
-
environment.docker.base_image = docker_settings.parent_image
|
196
|
-
|
197
|
-
# set credentials to access azure storage
|
198
|
-
for key in [
|
199
|
-
"AZURE_STORAGE_ACCOUNT_KEY",
|
200
|
-
"AZURE_STORAGE_ACCOUNT_NAME",
|
201
|
-
"AZURE_STORAGE_CONNECTION_STRING",
|
202
|
-
"AZURE_STORAGE_SAS_TOKEN",
|
203
|
-
]:
|
204
|
-
value = os.getenv(key)
|
205
|
-
if value:
|
206
|
-
environment_variables[key] = value
|
207
|
-
|
208
|
-
environment_variables[ENV_ZENML_CONFIG_PATH] = (
|
209
|
-
f"./{DOCKER_IMAGE_ZENML_CONFIG_DIR}"
|
210
|
-
)
|
211
|
-
environment_variables.update(docker_settings.environment)
|
212
|
-
environment.environment_variables = environment_variables
|
213
|
-
return environment
|
160
|
+
return builds
|
214
161
|
|
215
162
|
def launch(
|
216
163
|
self,
|
@@ -226,79 +173,33 @@ class AzureMLStepOperator(BaseStepOperator):
|
|
226
173
|
environment: Environment variables to set in the step operator
|
227
174
|
environment.
|
228
175
|
"""
|
229
|
-
if not info.config.resource_settings.empty:
|
230
|
-
logger.warning(
|
231
|
-
"Specifying custom step resources is not supported for "
|
232
|
-
"the AzureML step operator. If you want to run this step "
|
233
|
-
"operator on specific resources, you can do so by creating an "
|
234
|
-
"Azure compute target (https://docs.microsoft.com/en-us/azure/machine-learning/concept-compute-target) "
|
235
|
-
"with a specific machine type and then updating this step "
|
236
|
-
"operator: `zenml step-operator update %s "
|
237
|
-
"--compute_target_name=<COMPUTE_TARGET_NAME>`",
|
238
|
-
self.name,
|
239
|
-
)
|
240
|
-
|
241
|
-
unused_docker_fields = [
|
242
|
-
"dockerfile",
|
243
|
-
"build_context_root",
|
244
|
-
"build_options",
|
245
|
-
"skip_build",
|
246
|
-
"target_repository",
|
247
|
-
"dockerignore",
|
248
|
-
"copy_files",
|
249
|
-
"copy_global_config",
|
250
|
-
"apt_packages",
|
251
|
-
"user",
|
252
|
-
"source_files",
|
253
|
-
"allow_including_files_in_images",
|
254
|
-
"allow_download_from_code_repository",
|
255
|
-
"allow_download_from_artifact_store",
|
256
|
-
]
|
257
|
-
docker_settings = info.config.docker_settings
|
258
|
-
ignored_docker_fields = docker_settings.model_fields_set.intersection(
|
259
|
-
unused_docker_fields
|
260
|
-
)
|
261
|
-
|
262
|
-
if ignored_docker_fields:
|
263
|
-
logger.warning(
|
264
|
-
"The AzureML step operator currently does not support all "
|
265
|
-
"options defined in your Docker settings. Ignoring all "
|
266
|
-
"values set for the attributes: %s",
|
267
|
-
ignored_docker_fields,
|
268
|
-
)
|
269
|
-
|
270
176
|
settings = cast(AzureMLStepOperatorSettings, self.get_settings(info))
|
177
|
+
image_name = info.get_image(key=AZUREML_STEP_OPERATOR_DOCKER_IMAGE_KEY)
|
271
178
|
|
272
|
-
|
179
|
+
# Client creation
|
180
|
+
ml_client = MLClient(
|
181
|
+
credential=self._get_credentials(),
|
273
182
|
subscription_id=self.config.subscription_id,
|
274
|
-
|
275
|
-
|
276
|
-
auth=self._get_authentication(),
|
183
|
+
resource_group_name=self.config.resource_group,
|
184
|
+
workspace_name=self.config.workspace_name,
|
277
185
|
)
|
278
186
|
|
279
|
-
|
187
|
+
env = Environment(name=f"zenml-{info.run_name}", image=image_name)
|
280
188
|
|
281
|
-
|
282
|
-
|
283
|
-
docker_settings=docker_settings,
|
284
|
-
run_name=info.run_name,
|
285
|
-
environment_variables=environment,
|
286
|
-
environment_name=settings.environment_name,
|
287
|
-
)
|
288
|
-
compute_target = ComputeTarget(
|
289
|
-
workspace=workspace, name=self.config.compute_target_name
|
189
|
+
compute_target = create_or_get_compute(
|
190
|
+
ml_client, settings, default_compute_name=f"zenml_{self.id}"
|
290
191
|
)
|
291
192
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
193
|
+
command_job = command(
|
194
|
+
name=info.run_name,
|
195
|
+
command=" ".join(entrypoint_command),
|
196
|
+
environment=env,
|
197
|
+
environment_variables=environment,
|
198
|
+
compute=compute_target,
|
199
|
+
experiment_name=info.pipeline.name,
|
297
200
|
)
|
298
201
|
|
299
|
-
|
300
|
-
run = experiment.submit(config=run_config)
|
202
|
+
job = ml_client.jobs.create_or_update(command_job)
|
301
203
|
|
302
|
-
|
303
|
-
info.
|
304
|
-
run.wait_for_completion(show_output=True)
|
204
|
+
logger.info(f"AzureML job created with id: {job.id}")
|
205
|
+
ml_client.jobs.stream(info.run_name)
|
zenml/integrations/constants.py
CHANGED
@@ -44,7 +44,9 @@ LIGHTGBM = "lightgbm"
|
|
44
44
|
MLFLOW = "mlflow"
|
45
45
|
NEPTUNE = "neptune"
|
46
46
|
NEURAL_PROPHET = "neural_prophet"
|
47
|
+
NUMPY = "numpy"
|
47
48
|
OPEN_AI = "openai"
|
49
|
+
PANDAS = "pandas"
|
48
50
|
PIGEON = "pigeon"
|
49
51
|
PILLOW = "pillow"
|
50
52
|
PLOTLY = "plotly"
|
@@ -73,3 +75,4 @@ WANDB = "wandb"
|
|
73
75
|
VERTEX = "vertex"
|
74
76
|
XGBOOST = "xgboost"
|
75
77
|
VAULT = "vault"
|
78
|
+
LIGHTNING = "lightning"
|
@@ -13,11 +13,10 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Initialization of the Databricks integration for ZenML."""
|
15
15
|
|
16
|
-
from typing import List, Type
|
16
|
+
from typing import List, Type, Optional
|
17
|
+
|
18
|
+
from zenml.integrations.constants import DATABRICKS
|
17
19
|
|
18
|
-
from zenml.integrations.constants import (
|
19
|
-
DATABRICKS,
|
20
|
-
)
|
21
20
|
from zenml.integrations.integration import Integration
|
22
21
|
from zenml.stack import Flavor
|
23
22
|
|
@@ -32,6 +31,25 @@ class DatabricksIntegration(Integration):
|
|
32
31
|
NAME = DATABRICKS
|
33
32
|
REQUIREMENTS = ["databricks-sdk==0.28.0"]
|
34
33
|
|
34
|
+
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["numpy", "pandas"]
|
35
|
+
|
36
|
+
@classmethod
|
37
|
+
def get_requirements(cls, target_os: Optional[str] = None) -> List[str]:
|
38
|
+
"""Method to get the requirements for the integration.
|
39
|
+
|
40
|
+
Args:
|
41
|
+
target_os: The target operating system to get the requirements for.
|
42
|
+
|
43
|
+
Returns:
|
44
|
+
A list of requirements.
|
45
|
+
"""
|
46
|
+
from zenml.integrations.numpy import NumpyIntegration
|
47
|
+
from zenml.integrations.pandas import PandasIntegration
|
48
|
+
|
49
|
+
return cls.REQUIREMENTS + \
|
50
|
+
NumpyIntegration.get_requirements(target_os=target_os) + \
|
51
|
+
PandasIntegration.get_requirements(target_os=target_os)
|
52
|
+
|
35
53
|
@classmethod
|
36
54
|
def flavors(cls) -> List[Type[Flavor]]:
|
37
55
|
"""Declare the stack component flavors for the Databricks integration.
|
@@ -102,6 +102,15 @@ class DatabricksOrchestratorConfig(
|
|
102
102
|
"""
|
103
103
|
return True
|
104
104
|
|
105
|
+
@property
|
106
|
+
def is_schedulable(self) -> bool:
|
107
|
+
"""Whether the orchestrator is schedulable or not.
|
108
|
+
|
109
|
+
Returns:
|
110
|
+
Whether the orchestrator is schedulable or not.
|
111
|
+
"""
|
112
|
+
return True
|
113
|
+
|
105
114
|
|
106
115
|
class DatabricksOrchestratorFlavor(BaseOrchestratorFlavor):
|
107
116
|
"""Databricks orchestrator flavor."""
|
@@ -13,18 +13,17 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Deepchecks integration for ZenML.
|
15
15
|
|
16
|
-
The Deepchecks integration provides a way to validate your data in your
|
17
|
-
It includes a way to detect data anomalies and define checks to
|
18
|
-
data.
|
16
|
+
The Deepchecks integration provides a way to validate your data in your
|
17
|
+
pipelines. It includes a way to detect data anomalies and define checks to
|
18
|
+
ensure quality of data.
|
19
19
|
|
20
20
|
The integration includes custom materializers to store and visualize Deepchecks
|
21
21
|
`SuiteResults`.
|
22
22
|
"""
|
23
23
|
|
24
|
-
from typing import List, Type
|
24
|
+
from typing import List, Type, Optional
|
25
25
|
|
26
|
-
from zenml.
|
27
|
-
from zenml.integrations.constants import DEEPCHECKS
|
26
|
+
from zenml.integrations.constants import DEEPCHECKS, PANDAS
|
28
27
|
from zenml.integrations.integration import Integration
|
29
28
|
from zenml.stack import Flavor
|
30
29
|
|
@@ -36,21 +35,40 @@ class DeepchecksIntegration(Integration):
|
|
36
35
|
|
37
36
|
NAME = DEEPCHECKS
|
38
37
|
REQUIREMENTS = [
|
39
|
-
"deepchecks[vision]
|
38
|
+
"deepchecks[vision]>=0.18.0",
|
40
39
|
"torchvision>=0.14.0",
|
41
|
-
"pandas<2.0.0",
|
42
40
|
"opencv-python==4.5.5.64", # pin to same version
|
43
41
|
"opencv-python-headless==4.5.5.64", # pin to same version
|
44
42
|
"tenacity!=8.4.0", # https://github.com/jd/tenacity/issues/471
|
43
|
+
# The deepchecks integrations requires pandas to work.
|
44
|
+
# However, their version 0.18.0 is still not compatible with
|
45
|
+
# pandas>=2.2.0, so we limit the version here.
|
46
|
+
"pandas<2.2.0",
|
45
47
|
]
|
48
|
+
|
46
49
|
APT_PACKAGES = ["ffmpeg", "libsm6", "libxext6"]
|
47
|
-
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["pandas","torchvision","tenacity"]
|
50
|
+
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["pandas", "torchvision", "tenacity"]
|
48
51
|
|
49
|
-
@
|
50
|
-
def activate() -> None:
|
52
|
+
@classmethod
|
53
|
+
def activate(cls) -> None:
|
51
54
|
"""Activate the Deepchecks integration."""
|
52
55
|
from zenml.integrations.deepchecks import materializers # noqa
|
53
56
|
|
57
|
+
@classmethod
|
58
|
+
def get_requirements(cls, target_os: Optional[str] = None) -> List[str]:
|
59
|
+
"""Method to get the requirements for the integration.
|
60
|
+
|
61
|
+
Args:
|
62
|
+
target_os: The target operating system to get the requirements for.
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
A list of requirements.
|
66
|
+
"""
|
67
|
+
from zenml.integrations.pandas import PandasIntegration
|
68
|
+
|
69
|
+
return cls.REQUIREMENTS + \
|
70
|
+
PandasIntegration.get_requirements(target_os=target_os)
|
71
|
+
|
54
72
|
@classmethod
|
55
73
|
def flavors(cls) -> List[Type[Flavor]]:
|
56
74
|
"""Declare the stack component flavors for the Deepchecks integration.
|
@@ -18,7 +18,9 @@ from typing import TYPE_CHECKING, Any, ClassVar, Dict, Tuple, Type
|
|
18
18
|
from deepchecks.tabular import Dataset
|
19
19
|
|
20
20
|
from zenml.enums import ArtifactType, VisualizationType
|
21
|
-
from zenml.materializers.pandas_materializer import
|
21
|
+
from zenml.integrations.pandas.materializers.pandas_materializer import (
|
22
|
+
PandasMaterializer,
|
23
|
+
)
|
22
24
|
|
23
25
|
if TYPE_CHECKING:
|
24
26
|
from zenml.metadata.metadata_types import MetadataType
|
@@ -176,9 +176,6 @@ class DeepchecksDataIntegrityCheck(DeepchecksValidationCheck):
|
|
176
176
|
TABULAR_FEATURE_LABEL_CORRELATION = source_utils.resolve(
|
177
177
|
tabular_checks.FeatureLabelCorrelation
|
178
178
|
).import_path
|
179
|
-
TABULAR_IDENTIFIER_LEAKAGE = source_utils.resolve(
|
180
|
-
tabular_checks.IdentifierLeakage
|
181
|
-
).import_path
|
182
179
|
TABULAR_IS_SINGLE_VALUE = source_utils.resolve(
|
183
180
|
tabular_checks.IsSingleValue
|
184
181
|
).import_path
|
@@ -234,9 +231,6 @@ class DeepchecksDataDriftCheck(DeepchecksValidationCheck):
|
|
234
231
|
TABULAR_DATE_TRAIN_TEST_LEAKAGE_OVERLAP = source_utils.resolve(
|
235
232
|
tabular_checks.DateTrainTestLeakageOverlap
|
236
233
|
).import_path
|
237
|
-
TABULAR_DOMINANT_FREQUENCY_CHANGE = source_utils.resolve(
|
238
|
-
tabular_checks.DominantFrequencyChange
|
239
|
-
).import_path
|
240
234
|
TABULAR_FEATURE_LABEL_CORRELATION_CHANGE = source_utils.resolve(
|
241
235
|
tabular_checks.FeatureLabelCorrelationChange
|
242
236
|
).import_path
|
@@ -262,9 +256,6 @@ class DeepchecksDataDriftCheck(DeepchecksValidationCheck):
|
|
262
256
|
tabular_checks.WholeDatasetDrift
|
263
257
|
).import_path
|
264
258
|
|
265
|
-
VISION_FEATURE_LABEL_CORRELATION_CHANGE = source_utils.resolve(
|
266
|
-
vision_checks.FeatureLabelCorrelationChange
|
267
|
-
).import_path
|
268
259
|
VISION_HEATMAP_COMPARISON = source_utils.resolve(
|
269
260
|
vision_checks.HeatmapComparison
|
270
261
|
).import_path
|
@@ -277,9 +268,6 @@ class DeepchecksDataDriftCheck(DeepchecksValidationCheck):
|
|
277
268
|
VISION_NEW_LABELS = source_utils.resolve(
|
278
269
|
vision_checks.NewLabels
|
279
270
|
).import_path
|
280
|
-
VISION_SIMILAR_IMAGE_LEAKAGE = source_utils.resolve(
|
281
|
-
vision_checks.SimilarImageLeakage
|
282
|
-
).import_path
|
283
271
|
VISION_TRAIN_TEST_LABEL_DRIFT = source_utils.resolve(
|
284
272
|
vision_checks.TrainTestLabelDrift
|
285
273
|
).import_path
|
@@ -324,21 +312,12 @@ class DeepchecksModelValidationCheck(DeepchecksValidationCheck):
|
|
324
312
|
VISION_CONFUSION_MATRIX_REPORT = source_utils.resolve(
|
325
313
|
vision_checks.ConfusionMatrixReport
|
326
314
|
).import_path
|
327
|
-
VISION_IMAGE_SEGMENT_PERFORMANCE = source_utils.resolve(
|
328
|
-
vision_checks.ImageSegmentPerformance
|
329
|
-
).import_path
|
330
315
|
VISION_MEAN_AVERAGE_PRECISION_REPORT = source_utils.resolve(
|
331
316
|
vision_checks.MeanAveragePrecisionReport
|
332
317
|
).import_path
|
333
318
|
VISION_MEAN_AVERAGE_RECALL_REPORT = source_utils.resolve(
|
334
319
|
vision_checks.MeanAverageRecallReport
|
335
320
|
).import_path
|
336
|
-
VISION_ROBUSTNESS_REPORT = source_utils.resolve(
|
337
|
-
vision_checks.RobustnessReport
|
338
|
-
).import_path
|
339
|
-
VISION_SINGLE_DATASET_SCALAR_PERFORMANCE = source_utils.resolve(
|
340
|
-
vision_checks.SingleDatasetScalarPerformance
|
341
|
-
).import_path
|
342
321
|
|
343
322
|
|
344
323
|
class DeepchecksModelDriftCheck(DeepchecksValidationCheck):
|
@@ -358,12 +337,6 @@ class DeepchecksModelDriftCheck(DeepchecksValidationCheck):
|
|
358
337
|
TABULAR_BOOSTING_OVERFIT = source_utils.resolve(
|
359
338
|
tabular_checks.BoostingOverfit
|
360
339
|
).import_path
|
361
|
-
TABULAR_MODEL_ERROR_ANALYSIS = source_utils.resolve(
|
362
|
-
tabular_checks.ModelErrorAnalysis
|
363
|
-
).import_path
|
364
|
-
TABULAR_PERFORMANCE_REPORT = source_utils.resolve(
|
365
|
-
tabular_checks.PerformanceReport
|
366
|
-
).import_path
|
367
340
|
TABULAR_SIMPLE_MODEL_COMPARISON = source_utils.resolve(
|
368
341
|
tabular_checks.SimpleModelComparison
|
369
342
|
).import_path
|
@@ -377,9 +350,6 @@ class DeepchecksModelDriftCheck(DeepchecksValidationCheck):
|
|
377
350
|
VISION_CLASS_PERFORMANCE = source_utils.resolve(
|
378
351
|
vision_checks.ClassPerformance
|
379
352
|
).import_path
|
380
|
-
VISION_MODEL_ERROR_ANALYSIS = source_utils.resolve(
|
381
|
-
vision_checks.ModelErrorAnalysis
|
382
|
-
).import_path
|
383
353
|
VISION_SIMPLE_MODEL_COMPARISON = source_utils.resolve(
|
384
354
|
vision_checks.SimpleModelComparison
|
385
355
|
).import_path
|
@@ -25,7 +25,7 @@ file.
|
|
25
25
|
import logging
|
26
26
|
import os
|
27
27
|
import warnings
|
28
|
-
from typing import List, Type
|
28
|
+
from typing import List, Type, Optional
|
29
29
|
|
30
30
|
from zenml.integrations.constants import EVIDENTLY
|
31
31
|
from zenml.integrations.integration import Integration
|
@@ -57,7 +57,22 @@ class EvidentlyIntegration(Integration):
|
|
57
57
|
"evidently>=0.4.16,<=0.4.22",
|
58
58
|
"tenacity!=8.4.0", # https://github.com/jd/tenacity/issues/471
|
59
59
|
]
|
60
|
-
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["tenacity"]
|
60
|
+
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["tenacity", "pandas"]
|
61
|
+
|
62
|
+
@classmethod
|
63
|
+
def get_requirements(cls, target_os: Optional[str] = None) -> List[str]:
|
64
|
+
"""Method to get the requirements for the integration.
|
65
|
+
|
66
|
+
Args:
|
67
|
+
target_os: The target operating system to get the requirements for.
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
A list of requirements.
|
71
|
+
"""
|
72
|
+
from zenml.integrations.pandas import PandasIntegration
|
73
|
+
|
74
|
+
return cls.REQUIREMENTS + \
|
75
|
+
PandasIntegration.get_requirements(target_os=target_os)
|
61
76
|
|
62
77
|
@classmethod
|
63
78
|
def flavors(cls) -> List[Type[Flavor]]:
|
@@ -12,8 +12,8 @@
|
|
12
12
|
# or implied. See the License for the specific language governing
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Facets integration for ZenML."""
|
15
|
-
|
16
|
-
from zenml.integrations.constants import FACETS
|
15
|
+
from typing import Optional, List
|
16
|
+
from zenml.integrations.constants import FACETS, PANDAS
|
17
17
|
from zenml.integrations.integration import Integration
|
18
18
|
|
19
19
|
|
@@ -21,13 +21,29 @@ class FacetsIntegration(Integration):
|
|
21
21
|
"""Definition of Facets integration for ZenML."""
|
22
22
|
|
23
23
|
NAME = FACETS
|
24
|
-
REQUIREMENTS = ["facets-overview>=1.0.0"
|
24
|
+
REQUIREMENTS = ["facets-overview>=1.0.0"]
|
25
|
+
|
25
26
|
REQUIREMENTS_IGNORED_ON_UNINSTALL = ["pandas"]
|
26
27
|
|
27
|
-
@
|
28
|
-
def activate() -> None:
|
28
|
+
@classmethod
|
29
|
+
def activate(cls) -> None:
|
29
30
|
"""Activate the Facets integration."""
|
30
31
|
from zenml.integrations.facets import materializers # noqa
|
31
32
|
|
33
|
+
@classmethod
|
34
|
+
def get_requirements(cls, target_os: Optional[str] = None) -> List[str]:
|
35
|
+
"""Method to get the requirements for the integration.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
target_os: The target operating system to get the requirements for.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
A list of requirements.
|
42
|
+
"""
|
43
|
+
from zenml.integrations.pandas import PandasIntegration
|
44
|
+
|
45
|
+
return cls.REQUIREMENTS + \
|
46
|
+
PandasIntegration.get_requirements(target_os=target_os)
|
47
|
+
|
32
48
|
|
33
49
|
FacetsIntegration.check_installation()
|