zenml-nightly 0.61.0.dev20240712__py3-none-any.whl → 0.62.0.dev20240727__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.
Files changed (161) hide show
  1. README.md +2 -2
  2. RELEASE_NOTES.md +40 -0
  3. zenml/VERSION +1 -1
  4. zenml/__init__.py +2 -0
  5. zenml/cli/stack.py +114 -248
  6. zenml/cli/stack_components.py +5 -3
  7. zenml/config/pipeline_spec.py +2 -2
  8. zenml/config/step_configurations.py +3 -3
  9. zenml/constants.py +3 -0
  10. zenml/enums.py +16 -0
  11. zenml/integrations/__init__.py +1 -0
  12. zenml/integrations/azure/__init__.py +2 -2
  13. zenml/integrations/constants.py +1 -0
  14. zenml/integrations/databricks/__init__.py +52 -0
  15. zenml/integrations/databricks/flavors/__init__.py +30 -0
  16. zenml/integrations/databricks/flavors/databricks_model_deployer_flavor.py +118 -0
  17. zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +147 -0
  18. zenml/integrations/databricks/model_deployers/__init__.py +20 -0
  19. zenml/integrations/databricks/model_deployers/databricks_model_deployer.py +249 -0
  20. zenml/integrations/databricks/orchestrators/__init__.py +20 -0
  21. zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +497 -0
  22. zenml/integrations/databricks/orchestrators/databricks_orchestrator_entrypoint_config.py +97 -0
  23. zenml/integrations/databricks/services/__init__.py +19 -0
  24. zenml/integrations/databricks/services/databricks_deployment.py +407 -0
  25. zenml/integrations/databricks/utils/__init__.py +14 -0
  26. zenml/integrations/databricks/utils/databricks_utils.py +87 -0
  27. zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +44 -28
  28. zenml/integrations/great_expectations/data_validators/ge_data_validator.py +12 -8
  29. zenml/integrations/huggingface/materializers/huggingface_datasets_materializer.py +88 -3
  30. zenml/integrations/huggingface/steps/accelerate_runner.py +1 -7
  31. zenml/integrations/kubernetes/__init__.py +3 -2
  32. zenml/integrations/kubernetes/flavors/__init__.py +8 -0
  33. zenml/integrations/kubernetes/flavors/kubernetes_step_operator_flavor.py +166 -0
  34. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +1 -13
  35. zenml/integrations/kubernetes/orchestrators/manifest_utils.py +22 -4
  36. zenml/integrations/kubernetes/pod_settings.py +4 -0
  37. zenml/integrations/kubernetes/step_operators/__init__.py +22 -0
  38. zenml/integrations/kubernetes/step_operators/kubernetes_step_operator.py +235 -0
  39. zenml/integrations/lightgbm/__init__.py +1 -0
  40. zenml/integrations/mlflow/__init__.py +1 -1
  41. zenml/integrations/mlflow/model_registries/mlflow_model_registry.py +6 -2
  42. zenml/integrations/mlflow/services/mlflow_deployment.py +1 -1
  43. zenml/integrations/skypilot_azure/__init__.py +1 -3
  44. zenml/integrations/skypilot_lambda/__init__.py +1 -1
  45. zenml/logging/step_logging.py +34 -35
  46. zenml/materializers/built_in_materializer.py +1 -1
  47. zenml/materializers/cloudpickle_materializer.py +1 -1
  48. zenml/model/model.py +1 -1
  49. zenml/models/v2/core/code_repository.py +2 -2
  50. zenml/models/v2/core/component.py +29 -0
  51. zenml/models/v2/core/server_settings.py +0 -20
  52. zenml/models/v2/misc/full_stack.py +32 -0
  53. zenml/models/v2/misc/stack_deployment.py +5 -0
  54. zenml/new/pipelines/run_utils.py +1 -1
  55. zenml/orchestrators/__init__.py +4 -0
  56. zenml/orchestrators/step_launcher.py +1 -0
  57. zenml/orchestrators/wheeled_orchestrator.py +147 -0
  58. zenml/service_connectors/service_connector_utils.py +408 -0
  59. zenml/stack_deployments/azure_stack_deployment.py +179 -0
  60. zenml/stack_deployments/gcp_stack_deployment.py +13 -4
  61. zenml/stack_deployments/stack_deployment.py +10 -0
  62. zenml/stack_deployments/utils.py +4 -0
  63. zenml/steps/base_step.py +7 -5
  64. zenml/utils/function_utils.py +1 -1
  65. zenml/utils/pipeline_docker_image_builder.py +8 -0
  66. zenml/utils/source_utils.py +4 -1
  67. zenml/zen_server/dashboard/assets/{404-DpJaNHKF.js → 404-B_YdvmwS.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{@reactflow-DJfzkHO1.js → @reactflow-l_1hUr1S.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{AwarenessChannel-BYDLT2xC.js → AwarenessChannel-CFg5iX4Z.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{CodeSnippet-BkOuRmyq.js → CodeSnippet-Dvkx_82E.js} +1 -1
  71. zenml/zen_server/dashboard/assets/CollapsibleCard-opiuBHHc.js +1 -0
  72. zenml/zen_server/dashboard/assets/{Commands-ZvWR1BRs.js → Commands-DoN1xrEq.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{CopyButton-DVwLkafa.js → CopyButton-Cr7xYEPb.js} +1 -1
  74. zenml/zen_server/dashboard/assets/{CsvVizualization-C2IiqX4I.js → CsvVizualization-Ck-nZ43m.js} +3 -3
  75. zenml/zen_server/dashboard/assets/{Error-CqX0VqW_.js → Error-kLtljEOM.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{ExecutionStatus-BoLUXR9t.js → ExecutionStatus-DguLLgTK.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{Helpbox-LFydyVwh.js → Helpbox-BXUMP21n.js} +1 -1
  78. zenml/zen_server/dashboard/assets/{Infobox-DnENC0sh.js → Infobox-DSt0O-dm.js} +1 -1
  79. zenml/zen_server/dashboard/assets/{InlineAvatar-CbJtYr0t.js → InlineAvatar-xsrsIGE-.js} +1 -1
  80. zenml/zen_server/dashboard/assets/Pagination-C6X-mifw.js +1 -0
  81. zenml/zen_server/dashboard/assets/{SetPassword-BYBdbQDo.js → SetPassword-BXGTWiwj.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{SuccessStep-Nx743hll.js → SuccessStep-DZC60t0x.js} +1 -1
  83. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DF9gSzE0.js → UpdatePasswordSchemas-DGvwFWO1.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{chevron-right-double-BiEMg7rd.js → chevron-right-double-CZBOf6JM.js} +1 -1
  85. zenml/zen_server/dashboard/assets/cloud-only-C_yFCAkP.js +1 -0
  86. zenml/zen_server/dashboard/assets/index-BczVOqUf.js +55 -0
  87. zenml/zen_server/dashboard/assets/index-EpMIKgrI.css +1 -0
  88. zenml/zen_server/dashboard/assets/{login-mutation-BUnVASxp.js → login-mutation-CrHrndTI.js} +1 -1
  89. zenml/zen_server/dashboard/assets/logs-D8k8BVFf.js +1 -0
  90. zenml/zen_server/dashboard/assets/{not-found-B4VnX8gK.js → not-found-DYa4pC-C.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{package-CsUhPmou.js → package-B3fWP-Dh.js} +1 -1
  92. zenml/zen_server/dashboard/assets/page-1h_sD1jz.js +1 -0
  93. zenml/zen_server/dashboard/assets/{page-Sxn82W-5.js → page-1iL8aMqs.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{page-DMOYZppS.js → page-2grKx_MY.js} +1 -1
  95. zenml/zen_server/dashboard/assets/page-5NCOHOsy.js +1 -0
  96. zenml/zen_server/dashboard/assets/{page-JyfeDUfu.js → page-8a4UMKXZ.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{page-Bx6o0ARS.js → page-B6h3iaHJ.js} +1 -1
  98. zenml/zen_server/dashboard/assets/page-BDns21Iz.js +1 -0
  99. zenml/zen_server/dashboard/assets/{page-3efNCDeb.js → page-BhgCDInH.js} +2 -2
  100. zenml/zen_server/dashboard/assets/{page-DKlIdAe5.js → page-Bi-wtWiO.js} +2 -2
  101. zenml/zen_server/dashboard/assets/{page-7zTHbhhI.js → page-BkeAAYwp.js} +1 -1
  102. zenml/zen_server/dashboard/assets/{page-CRTJ0UuR.js → page-BkuQDIf-.js} +1 -1
  103. zenml/zen_server/dashboard/assets/page-BnaevhnB.js +1 -0
  104. zenml/zen_server/dashboard/assets/{page-BEs6jK71.js → page-Bq0YxkLV.js} +1 -1
  105. zenml/zen_server/dashboard/assets/page-Bs2F4eoD.js +2 -0
  106. zenml/zen_server/dashboard/assets/{page-CUZIGO-3.js → page-C6-UGEbH.js} +1 -1
  107. zenml/zen_server/dashboard/assets/{page-Xu8JEjSU.js → page-CCNRIt_f.js} +1 -1
  108. zenml/zen_server/dashboard/assets/{page-DvCvroOM.js → page-CHNxpz3n.js} +1 -1
  109. zenml/zen_server/dashboard/assets/{page-BpSqIf4B.js → page-DgorQFqi.js} +1 -1
  110. zenml/zen_server/dashboard/assets/page-K8ebxVIs.js +1 -0
  111. zenml/zen_server/dashboard/assets/{page-Cx67M0QT.js → page-MFQyIJd3.js} +1 -1
  112. zenml/zen_server/dashboard/assets/page-TgCF0P_U.js +1 -0
  113. zenml/zen_server/dashboard/assets/page-ZnCEe-eK.js +9 -0
  114. zenml/zen_server/dashboard/assets/{page-Dc_7KMQE.js → page-uA5prJGY.js} +1 -1
  115. zenml/zen_server/dashboard/assets/persist-D7HJNBWx.js +1 -0
  116. zenml/zen_server/dashboard/assets/plus-C8WOyCzt.js +1 -0
  117. zenml/zen_server/dashboard/assets/stack-detail-query-Cficsl6d.js +1 -0
  118. zenml/zen_server/dashboard/assets/update-server-settings-mutation-7d8xi1tS.js +1 -0
  119. zenml/zen_server/dashboard/assets/{url-DuQMeqYA.js → url-D7mAQGUM.js} +1 -1
  120. zenml/zen_server/dashboard/index.html +4 -4
  121. zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
  122. zenml/zen_server/dashboard_legacy/index.html +1 -1
  123. zenml/zen_server/dashboard_legacy/{precache-manifest.c8c57fb0d2132b1d3c2119e776b7dfb3.js → precache-manifest.12246c7548e71e2c4438e496360de80c.js} +4 -4
  124. zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
  125. zenml/zen_server/dashboard_legacy/static/js/main.3b27024b.chunk.js +2 -0
  126. zenml/zen_server/dashboard_legacy/static/js/{main.382439a7.chunk.js.map → main.3b27024b.chunk.js.map} +1 -1
  127. zenml/zen_server/deploy/helm/Chart.yaml +1 -1
  128. zenml/zen_server/deploy/helm/README.md +2 -2
  129. zenml/zen_server/rbac/utils.py +10 -2
  130. zenml/zen_server/routers/devices_endpoints.py +4 -1
  131. zenml/zen_server/routers/server_endpoints.py +29 -2
  132. zenml/zen_server/routers/service_connectors_endpoints.py +57 -0
  133. zenml/zen_server/routers/steps_endpoints.py +2 -1
  134. zenml/zen_stores/migrations/versions/0.62.0_release.py +23 -0
  135. zenml/zen_stores/migrations/versions/b4fca5241eea_migrate_onboarding_state.py +167 -0
  136. zenml/zen_stores/rest_zen_store.py +4 -0
  137. zenml/zen_stores/schemas/component_schemas.py +14 -0
  138. zenml/zen_stores/schemas/server_settings_schemas.py +23 -11
  139. zenml/zen_stores/sql_zen_store.py +151 -1
  140. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240727.dist-info}/METADATA +5 -5
  141. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240727.dist-info}/RECORD +144 -121
  142. zenml/zen_server/dashboard/assets/Pagination-DEbVUupy.js +0 -1
  143. zenml/zen_server/dashboard/assets/chevron-down-D_ZlKMqH.js +0 -1
  144. zenml/zen_server/dashboard/assets/cloud-only-DVbIeckv.js +0 -1
  145. zenml/zen_server/dashboard/assets/index-C_CrU4vI.js +0 -1
  146. zenml/zen_server/dashboard/assets/index-DK1ynKjA.js +0 -55
  147. zenml/zen_server/dashboard/assets/index-inApY3KQ.css +0 -1
  148. zenml/zen_server/dashboard/assets/page-C43QGHTt.js +0 -9
  149. zenml/zen_server/dashboard/assets/page-CR0OG7ss.js +0 -1
  150. zenml/zen_server/dashboard/assets/page-CaopxiU1.js +0 -1
  151. zenml/zen_server/dashboard/assets/page-D7Z399xy.js +0 -1
  152. zenml/zen_server/dashboard/assets/page-D93kd7Xj.js +0 -1
  153. zenml/zen_server/dashboard/assets/page-DMsSn3dv.js +0 -2
  154. zenml/zen_server/dashboard/assets/page-Hus2pr9T.js +0 -1
  155. zenml/zen_server/dashboard/assets/page-TKXERe16.js +0 -1
  156. zenml/zen_server/dashboard/assets/plus-DOeLmm7C.js +0 -1
  157. zenml/zen_server/dashboard/assets/update-server-settings-mutation-CR8e3Sir.js +0 -1
  158. zenml/zen_server/dashboard_legacy/static/js/main.382439a7.chunk.js +0 -2
  159. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240727.dist-info}/LICENSE +0 -0
  160. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240727.dist-info}/WHEEL +0 -0
  161. {zenml_nightly-0.61.0.dev20240712.dist-info → zenml_nightly-0.62.0.dev20240727.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,249 @@
1
+ # Copyright (c) ZenML GmbH 2024. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Implementation of the Databricks Model Deployer."""
15
+
16
+ from typing import ClassVar, Dict, Optional, Tuple, Type, cast
17
+ from uuid import UUID
18
+
19
+ from zenml.analytics.enums import AnalyticsEvent
20
+ from zenml.analytics.utils import track_handler
21
+ from zenml.client import Client
22
+ from zenml.integrations.databricks import DATABRICKS_SERVICE_ARTIFACT
23
+ from zenml.integrations.databricks.flavors.databricks_model_deployer_flavor import (
24
+ DatabricksModelDeployerConfig,
25
+ DatabricksModelDeployerFlavor,
26
+ )
27
+ from zenml.integrations.databricks.services.databricks_deployment import (
28
+ DatabricksDeploymentConfig,
29
+ DatabricksDeploymentService,
30
+ )
31
+ from zenml.logger import get_logger
32
+ from zenml.model_deployers import BaseModelDeployer
33
+ from zenml.model_deployers.base_model_deployer import (
34
+ DEFAULT_DEPLOYMENT_START_STOP_TIMEOUT,
35
+ BaseModelDeployerFlavor,
36
+ )
37
+ from zenml.services import BaseService, ServiceConfig
38
+ from zenml.stack.stack import Stack
39
+ from zenml.stack.stack_validator import StackValidator
40
+
41
+ logger = get_logger(__name__)
42
+
43
+
44
+ class DatabricksModelDeployer(BaseModelDeployer):
45
+ """Databricks endpoint model deployer."""
46
+
47
+ NAME: ClassVar[str] = "Databricks"
48
+ FLAVOR: ClassVar[Type[BaseModelDeployerFlavor]] = (
49
+ DatabricksModelDeployerFlavor
50
+ )
51
+
52
+ @property
53
+ def config(self) -> DatabricksModelDeployerConfig:
54
+ """Config class for the Databricks Model deployer settings class.
55
+
56
+ Returns:
57
+ The configuration.
58
+ """
59
+ return cast(DatabricksModelDeployerConfig, self._config)
60
+
61
+ @property
62
+ def validator(self) -> Optional[StackValidator]:
63
+ """Validates the stack.
64
+
65
+ Returns:
66
+ A validator that checks that the stack contains a remote artifact
67
+ store.
68
+ """
69
+
70
+ def _validate_if_secret_or_token_is_present(
71
+ stack: "Stack",
72
+ ) -> Tuple[bool, str]:
73
+ """Check if client id and client secret or secret name is present in the stack.
74
+
75
+ Args:
76
+ stack: The stack to validate.
77
+
78
+ Returns:
79
+ A tuple with a boolean indicating whether the stack is valid
80
+ and a message describing the validation result.
81
+ """
82
+ return bool(
83
+ (self.config.client_id and self.config.client_secret)
84
+ or self.config.secret_name
85
+ ), (
86
+ "The Databricks model deployer requires either a secret name"
87
+ " or a client id and client secret to be present in the stack."
88
+ )
89
+
90
+ return StackValidator(
91
+ custom_validation_function=_validate_if_secret_or_token_is_present,
92
+ )
93
+
94
+ def _create_new_service(
95
+ self, id: UUID, timeout: int, config: DatabricksDeploymentConfig
96
+ ) -> DatabricksDeploymentService:
97
+ """Creates a new DatabricksDeploymentService.
98
+
99
+ Args:
100
+ id: the UUID of the model to be deployed with Databricks model deployer.
101
+ timeout: the timeout in seconds to wait for the Databricks inference endpoint
102
+ to be provisioned and successfully started or updated.
103
+ config: the configuration of the model to be deployed with Databricks model deployer.
104
+
105
+ Returns:
106
+ The DatabricksDeploymentConfig object that can be used to interact
107
+ with the Databricks inference endpoint.
108
+ """
109
+ # create a new service for the new model
110
+ service = DatabricksDeploymentService(uuid=id, config=config)
111
+ logger.info(
112
+ f"Creating an artifact {DATABRICKS_SERVICE_ARTIFACT} with service instance attached as metadata."
113
+ " If there's an active pipeline and/or model this artifact will be associated with it."
114
+ )
115
+ service.start(timeout=timeout)
116
+ return service
117
+
118
+ def _clean_up_existing_service(
119
+ self,
120
+ timeout: int,
121
+ force: bool,
122
+ existing_service: DatabricksDeploymentService,
123
+ ) -> None:
124
+ """Stop existing services.
125
+
126
+ Args:
127
+ timeout: the timeout in seconds to wait for the Databricks
128
+ deployment to be stopped.
129
+ force: if True, force the service to stop
130
+ existing_service: Existing Databricks deployment service
131
+ """
132
+ # stop the older service
133
+ existing_service.stop(timeout=timeout, force=force)
134
+
135
+ def perform_deploy_model(
136
+ self,
137
+ id: UUID,
138
+ config: ServiceConfig,
139
+ timeout: int = DEFAULT_DEPLOYMENT_START_STOP_TIMEOUT,
140
+ ) -> BaseService:
141
+ """Create a new Databricks deployment service or update an existing one.
142
+
143
+ This should serve the supplied model and deployment configuration.
144
+
145
+ Args:
146
+ id: the UUID of the model to be deployed with Databricks.
147
+ config: the configuration of the model to be deployed with Databricks.
148
+ timeout: the timeout in seconds to wait for the Databricks endpoint
149
+ to be provisioned and successfully started or updated. If set
150
+ to 0, the method will return immediately after the Databricks
151
+ server is provisioned, without waiting for it to fully start.
152
+
153
+ Returns:
154
+ The ZenML Databricks deployment service object that can be used to
155
+ interact with the remote Databricks inference endpoint server.
156
+ """
157
+ with track_handler(AnalyticsEvent.MODEL_DEPLOYED) as analytics_handler:
158
+ config = cast(DatabricksDeploymentConfig, config)
159
+ # create a new DatabricksDeploymentService instance
160
+ service = self._create_new_service(
161
+ id=id, timeout=timeout, config=config
162
+ )
163
+ logger.info(
164
+ f"Creating a new Databricks inference endpoint service: {service}"
165
+ )
166
+ # Add telemetry with metadata that gets the stack metadata and
167
+ # differentiates between pure model and custom code deployments
168
+ stack = Client().active_stack
169
+ stack_metadata = {
170
+ component_type.value: component.flavor
171
+ for component_type, component in stack.components.items()
172
+ }
173
+ analytics_handler.metadata = {
174
+ "store_type": Client().zen_store.type.value,
175
+ **stack_metadata,
176
+ }
177
+
178
+ return service
179
+
180
+ def perform_stop_model(
181
+ self,
182
+ service: BaseService,
183
+ timeout: int = DEFAULT_DEPLOYMENT_START_STOP_TIMEOUT,
184
+ force: bool = False,
185
+ ) -> BaseService:
186
+ """Method to stop a model server.
187
+
188
+ Args:
189
+ service: The service to stop.
190
+ timeout: Timeout in seconds to wait for the service to stop.
191
+ force: If True, force the service to stop.
192
+
193
+ Returns:
194
+ The stopped service.
195
+ """
196
+ service.stop(timeout=timeout, force=force)
197
+ return service
198
+
199
+ def perform_start_model(
200
+ self,
201
+ service: BaseService,
202
+ timeout: int = DEFAULT_DEPLOYMENT_START_STOP_TIMEOUT,
203
+ ) -> BaseService:
204
+ """Method to start a model server.
205
+
206
+ Args:
207
+ service: The service to start.
208
+ timeout: Timeout in seconds to wait for the service to start.
209
+
210
+ Returns:
211
+ The started service.
212
+ """
213
+ service.start(timeout=timeout)
214
+ return service
215
+
216
+ def perform_delete_model(
217
+ self,
218
+ service: BaseService,
219
+ timeout: int = DEFAULT_DEPLOYMENT_START_STOP_TIMEOUT,
220
+ force: bool = False,
221
+ ) -> None:
222
+ """Method to delete all configuration of a model server.
223
+
224
+ Args:
225
+ service: The service to delete.
226
+ timeout: Timeout in seconds to wait for the service to stop.
227
+ force: If True, force the service to stop.
228
+ """
229
+ service = cast(DatabricksDeploymentService, service)
230
+ self._clean_up_existing_service(
231
+ existing_service=service, timeout=timeout, force=force
232
+ )
233
+
234
+ @staticmethod
235
+ def get_model_server_info( # type: ignore[override]
236
+ service_instance: "DatabricksDeploymentService",
237
+ ) -> Dict[str, Optional[str]]:
238
+ """Return implementation specific information that might be relevant to the user.
239
+
240
+ Args:
241
+ service_instance: Instance of a DatabricksDeploymentService
242
+
243
+ Returns:
244
+ Model server information.
245
+ """
246
+ return {
247
+ "PREDICTION_URL": service_instance.get_prediction_url(),
248
+ "HEALTH_CHECK_URL": service_instance.get_healthcheck_url(),
249
+ }
@@ -0,0 +1,20 @@
1
+ # Copyright (c) ZenML GmbH 2024. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at:
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12
+ # or implied. See the License for the specific language governing
13
+ # permissions and limitations under the License.
14
+ """Initialization of the Databricks ZenML orchestrator."""
15
+
16
+ from zenml.integrations.databricks.orchestrators.databricks_orchestrator import ( # noqa
17
+ DatabricksOrchestrator,
18
+ )
19
+
20
+ __all__ = ["DatabricksOrchestrator"]