zenml-nightly 0.68.1.dev20241106__py3-none-any.whl → 0.68.1.dev20241108__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.
- zenml/VERSION +1 -1
- zenml/artifacts/external_artifact.py +2 -1
- zenml/artifacts/utils.py +133 -78
- zenml/cli/base.py +4 -4
- zenml/cli/model.py +1 -6
- zenml/cli/stack.py +1 -0
- zenml/client.py +21 -73
- zenml/constants.py +1 -0
- zenml/enums.py +12 -4
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +1 -1
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +1 -1
- zenml/integrations/evidently/__init__.py +1 -1
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +1 -1
- zenml/integrations/tensorboard/visualizers/tensorboard_visualizer.py +60 -54
- zenml/integrations/vllm/services/vllm_deployment.py +16 -7
- zenml/metadata/lazy_load.py +20 -7
- zenml/model/model.py +1 -2
- zenml/models/__init__.py +0 -12
- zenml/models/v2/core/artifact_version.py +19 -7
- zenml/models/v2/core/model_version.py +3 -5
- zenml/models/v2/core/pipeline_run.py +3 -5
- zenml/models/v2/core/run_metadata.py +2 -217
- zenml/models/v2/core/step_run.py +40 -24
- zenml/orchestrators/input_utils.py +44 -19
- zenml/orchestrators/step_launcher.py +2 -2
- zenml/orchestrators/step_run_utils.py +19 -15
- zenml/orchestrators/step_runner.py +21 -13
- zenml/steps/base_step.py +1 -1
- zenml/steps/entrypoint_function_utils.py +3 -5
- zenml/steps/step_context.py +3 -2
- zenml/steps/utils.py +8 -2
- zenml/zen_server/rbac/endpoint_utils.py +43 -1
- zenml/zen_server/rbac/utils.py +0 -2
- zenml/zen_server/routers/artifact_version_endpoints.py +27 -1
- zenml/zen_server/routers/workspaces_endpoints.py +3 -4
- zenml/zen_server/zen_server_api.py +0 -2
- zenml/zen_stores/migrations/versions/1cb6477f72d6_move_artifact_save_type.py +99 -0
- zenml/zen_stores/migrations/versions/b557b2871693_update_step_run_input_types.py +33 -0
- zenml/zen_stores/rest_zen_store.py +55 -54
- zenml/zen_stores/schemas/artifact_schemas.py +8 -1
- zenml/zen_stores/schemas/model_schemas.py +2 -2
- zenml/zen_stores/schemas/pipeline_run_schemas.py +1 -1
- zenml/zen_stores/schemas/run_metadata_schemas.py +1 -48
- zenml/zen_stores/schemas/step_run_schemas.py +18 -10
- zenml/zen_stores/sql_zen_store.py +68 -98
- zenml/zen_stores/zen_store_interface.py +15 -42
- {zenml_nightly-0.68.1.dev20241106.dist-info → zenml_nightly-0.68.1.dev20241108.dist-info}/METADATA +1 -1
- {zenml_nightly-0.68.1.dev20241106.dist-info → zenml_nightly-0.68.1.dev20241108.dist-info}/RECORD +51 -50
- zenml/zen_server/routers/run_metadata_endpoints.py +0 -96
- {zenml_nightly-0.68.1.dev20241106.dist-info → zenml_nightly-0.68.1.dev20241108.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.68.1.dev20241106.dist-info → zenml_nightly-0.68.1.dev20241108.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.68.1.dev20241106.dist-info → zenml_nightly-0.68.1.dev20241108.dist-info}/entry_points.txt +0 -0
@@ -86,6 +86,7 @@ from zenml.config.global_config import GlobalConfiguration
|
|
86
86
|
from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
|
87
87
|
from zenml.config.secrets_store_config import SecretsStoreConfiguration
|
88
88
|
from zenml.config.server_config import ServerConfiguration
|
89
|
+
from zenml.config.step_configurations import StepConfiguration, StepSpec
|
89
90
|
from zenml.config.store_config import StoreConfiguration
|
90
91
|
from zenml.constants import (
|
91
92
|
DEFAULT_PASSWORD,
|
@@ -118,7 +119,6 @@ from zenml.enums import (
|
|
118
119
|
StackComponentType,
|
119
120
|
StackDeploymentProvider,
|
120
121
|
StepRunInputArtifactType,
|
121
|
-
StepRunOutputArtifactType,
|
122
122
|
StoreType,
|
123
123
|
TaggableResourceTypes,
|
124
124
|
)
|
@@ -216,9 +216,7 @@ from zenml.models import (
|
|
216
216
|
PipelineRunResponse,
|
217
217
|
PipelineRunUpdate,
|
218
218
|
PipelineUpdate,
|
219
|
-
RunMetadataFilter,
|
220
219
|
RunMetadataRequest,
|
221
|
-
RunMetadataResponse,
|
222
220
|
RunTemplateFilter,
|
223
221
|
RunTemplateRequest,
|
224
222
|
RunTemplateResponse,
|
@@ -2915,6 +2913,22 @@ class SqlZenStore(BaseZenStore):
|
|
2915
2913
|
include_metadata=True, include_resources=True
|
2916
2914
|
)
|
2917
2915
|
|
2916
|
+
def batch_create_artifact_versions(
|
2917
|
+
self, artifact_versions: List[ArtifactVersionRequest]
|
2918
|
+
) -> List[ArtifactVersionResponse]:
|
2919
|
+
"""Creates a batch of artifact versions.
|
2920
|
+
|
2921
|
+
Args:
|
2922
|
+
artifact_versions: The artifact versions to create.
|
2923
|
+
|
2924
|
+
Returns:
|
2925
|
+
The created artifact versions.
|
2926
|
+
"""
|
2927
|
+
return [
|
2928
|
+
self.create_artifact_version(artifact_version)
|
2929
|
+
for artifact_version in artifact_versions
|
2930
|
+
]
|
2931
|
+
|
2918
2932
|
def get_artifact_version(
|
2919
2933
|
self, artifact_version_id: UUID, hydrate: bool = True
|
2920
2934
|
) -> ArtifactVersionResponse:
|
@@ -5465,9 +5479,7 @@ class SqlZenStore(BaseZenStore):
|
|
5465
5479
|
|
5466
5480
|
# ----------------------------- Run Metadata -----------------------------
|
5467
5481
|
|
5468
|
-
def create_run_metadata(
|
5469
|
-
self, run_metadata: RunMetadataRequest
|
5470
|
-
) -> List[RunMetadataResponse]:
|
5482
|
+
def create_run_metadata(self, run_metadata: RunMetadataRequest) -> None:
|
5471
5483
|
"""Creates run metadata.
|
5472
5484
|
|
5473
5485
|
Args:
|
@@ -5476,7 +5488,6 @@ class SqlZenStore(BaseZenStore):
|
|
5476
5488
|
Returns:
|
5477
5489
|
The created run metadata.
|
5478
5490
|
"""
|
5479
|
-
return_value: List[RunMetadataResponse] = []
|
5480
5491
|
with Session(self.engine) as session:
|
5481
5492
|
for key, value in run_metadata.values.items():
|
5482
5493
|
type_ = run_metadata.types[key]
|
@@ -5492,70 +5503,7 @@ class SqlZenStore(BaseZenStore):
|
|
5492
5503
|
)
|
5493
5504
|
session.add(run_metadata_schema)
|
5494
5505
|
session.commit()
|
5495
|
-
|
5496
|
-
run_metadata_schema.to_model(
|
5497
|
-
include_metadata=True, include_resources=True
|
5498
|
-
)
|
5499
|
-
)
|
5500
|
-
return return_value
|
5501
|
-
|
5502
|
-
def get_run_metadata(
|
5503
|
-
self, run_metadata_id: UUID, hydrate: bool = True
|
5504
|
-
) -> RunMetadataResponse:
|
5505
|
-
"""Gets run metadata with the given ID.
|
5506
|
-
|
5507
|
-
Args:
|
5508
|
-
run_metadata_id: The ID of the run metadata to get.
|
5509
|
-
hydrate: Flag deciding whether to hydrate the output model(s)
|
5510
|
-
by including metadata fields in the response.
|
5511
|
-
|
5512
|
-
Returns:
|
5513
|
-
The run metadata.
|
5514
|
-
|
5515
|
-
Raises:
|
5516
|
-
KeyError: if the run metadata doesn't exist.
|
5517
|
-
"""
|
5518
|
-
with Session(self.engine) as session:
|
5519
|
-
run_metadata = session.exec(
|
5520
|
-
select(RunMetadataSchema).where(
|
5521
|
-
RunMetadataSchema.id == run_metadata_id
|
5522
|
-
)
|
5523
|
-
).first()
|
5524
|
-
if run_metadata is None:
|
5525
|
-
raise KeyError(
|
5526
|
-
f"Unable to get run metadata with ID "
|
5527
|
-
f"{run_metadata_id}: "
|
5528
|
-
f"No run metadata with this ID found."
|
5529
|
-
)
|
5530
|
-
return run_metadata.to_model(
|
5531
|
-
include_metadata=hydrate, include_resources=True
|
5532
|
-
)
|
5533
|
-
|
5534
|
-
def list_run_metadata(
|
5535
|
-
self,
|
5536
|
-
run_metadata_filter_model: RunMetadataFilter,
|
5537
|
-
hydrate: bool = False,
|
5538
|
-
) -> Page[RunMetadataResponse]:
|
5539
|
-
"""List run metadata.
|
5540
|
-
|
5541
|
-
Args:
|
5542
|
-
run_metadata_filter_model: All filter parameters including
|
5543
|
-
pagination params.
|
5544
|
-
hydrate: Flag deciding whether to hydrate the output model(s)
|
5545
|
-
by including metadata fields in the response.
|
5546
|
-
|
5547
|
-
Returns:
|
5548
|
-
The run metadata.
|
5549
|
-
"""
|
5550
|
-
with Session(self.engine) as session:
|
5551
|
-
query = select(RunMetadataSchema)
|
5552
|
-
return self.filter_and_paginate(
|
5553
|
-
session=session,
|
5554
|
-
query=query,
|
5555
|
-
table=RunMetadataSchema,
|
5556
|
-
filter_model=run_metadata_filter_model,
|
5557
|
-
hydrate=hydrate,
|
5558
|
-
)
|
5506
|
+
return None
|
5559
5507
|
|
5560
5508
|
# ----------------------------- Schedules -----------------------------
|
5561
5509
|
|
@@ -8173,25 +8121,35 @@ class SqlZenStore(BaseZenStore):
|
|
8173
8121
|
session=session,
|
8174
8122
|
)
|
8175
8123
|
|
8124
|
+
session.commit()
|
8125
|
+
session.refresh(step_schema)
|
8126
|
+
|
8127
|
+
step_model = step_schema.to_model(include_metadata=True)
|
8128
|
+
|
8176
8129
|
# Save input artifact IDs into the database.
|
8177
8130
|
for input_name, artifact_version_id in step_run.inputs.items():
|
8131
|
+
input_type = self._get_step_run_input_type(
|
8132
|
+
input_name=input_name,
|
8133
|
+
step_config=step_model.config,
|
8134
|
+
step_spec=step_model.spec,
|
8135
|
+
)
|
8178
8136
|
self._set_run_step_input_artifact(
|
8179
8137
|
run_step_id=step_schema.id,
|
8180
8138
|
artifact_version_id=artifact_version_id,
|
8181
8139
|
name=input_name,
|
8182
|
-
input_type=
|
8140
|
+
input_type=input_type,
|
8183
8141
|
session=session,
|
8184
8142
|
)
|
8185
8143
|
|
8186
8144
|
# Save output artifact IDs into the database.
|
8187
|
-
for output_name,
|
8188
|
-
|
8189
|
-
|
8190
|
-
|
8191
|
-
|
8192
|
-
|
8193
|
-
|
8194
|
-
|
8145
|
+
for output_name, artifact_version_ids in step_run.outputs.items():
|
8146
|
+
for artifact_version_id in artifact_version_ids:
|
8147
|
+
self._set_run_step_output_artifact(
|
8148
|
+
step_run_id=step_schema.id,
|
8149
|
+
artifact_version_id=artifact_version_id,
|
8150
|
+
name=output_name,
|
8151
|
+
session=session,
|
8152
|
+
)
|
8195
8153
|
|
8196
8154
|
if step_run.status != ExecutionStatus.RUNNING:
|
8197
8155
|
self._update_pipeline_run_status(
|
@@ -8199,6 +8157,7 @@ class SqlZenStore(BaseZenStore):
|
|
8199
8157
|
)
|
8200
8158
|
|
8201
8159
|
session.commit()
|
8160
|
+
session.refresh(step_schema)
|
8202
8161
|
|
8203
8162
|
return step_schema.to_model(
|
8204
8163
|
include_metadata=True, include_resources=True
|
@@ -8291,26 +8250,12 @@ class SqlZenStore(BaseZenStore):
|
|
8291
8250
|
existing_step_run.update(step_run_update)
|
8292
8251
|
session.add(existing_step_run)
|
8293
8252
|
|
8294
|
-
# Update the
|
8253
|
+
# Update the artifacts.
|
8295
8254
|
for name, artifact_version_id in step_run_update.outputs.items():
|
8296
8255
|
self._set_run_step_output_artifact(
|
8297
8256
|
step_run_id=step_run_id,
|
8298
8257
|
artifact_version_id=artifact_version_id,
|
8299
8258
|
name=name,
|
8300
|
-
output_type=StepRunOutputArtifactType.DEFAULT,
|
8301
|
-
session=session,
|
8302
|
-
)
|
8303
|
-
|
8304
|
-
# Update saved artifacts
|
8305
|
-
for (
|
8306
|
-
artifact_name,
|
8307
|
-
artifact_version_id,
|
8308
|
-
) in step_run_update.saved_artifact_versions.items():
|
8309
|
-
self._set_run_step_output_artifact(
|
8310
|
-
step_run_id=step_run_id,
|
8311
|
-
artifact_version_id=artifact_version_id,
|
8312
|
-
name=artifact_name,
|
8313
|
-
output_type=StepRunOutputArtifactType.MANUAL,
|
8314
8259
|
session=session,
|
8315
8260
|
)
|
8316
8261
|
|
@@ -8339,6 +8284,34 @@ class SqlZenStore(BaseZenStore):
|
|
8339
8284
|
include_metadata=True, include_resources=True
|
8340
8285
|
)
|
8341
8286
|
|
8287
|
+
def _get_step_run_input_type(
|
8288
|
+
self,
|
8289
|
+
input_name: str,
|
8290
|
+
step_config: StepConfiguration,
|
8291
|
+
step_spec: StepSpec,
|
8292
|
+
) -> StepRunInputArtifactType:
|
8293
|
+
"""Get the input type of an artifact.
|
8294
|
+
|
8295
|
+
Args:
|
8296
|
+
input_name: The name of the input artifact.
|
8297
|
+
step_config: The step config.
|
8298
|
+
step_spec: The step spec.
|
8299
|
+
|
8300
|
+
Returns:
|
8301
|
+
The input type of the artifact.
|
8302
|
+
"""
|
8303
|
+
if input_name in step_spec.inputs:
|
8304
|
+
return StepRunInputArtifactType.STEP_OUTPUT
|
8305
|
+
if input_name in step_config.external_input_artifacts:
|
8306
|
+
return StepRunInputArtifactType.EXTERNAL
|
8307
|
+
elif (
|
8308
|
+
input_name in step_config.model_artifacts_or_metadata
|
8309
|
+
or input_name in step_config.client_lazy_loaders
|
8310
|
+
):
|
8311
|
+
return StepRunInputArtifactType.LAZY_LOADED
|
8312
|
+
else:
|
8313
|
+
return StepRunInputArtifactType.MANUAL
|
8314
|
+
|
8342
8315
|
@staticmethod
|
8343
8316
|
def _set_run_step_parent_step(
|
8344
8317
|
child_id: UUID, parent_id: UUID, session: Session
|
@@ -8457,7 +8430,6 @@ class SqlZenStore(BaseZenStore):
|
|
8457
8430
|
step_run_id: UUID,
|
8458
8431
|
artifact_version_id: UUID,
|
8459
8432
|
name: str,
|
8460
|
-
output_type: StepRunOutputArtifactType,
|
8461
8433
|
session: Session,
|
8462
8434
|
) -> None:
|
8463
8435
|
"""Sets an artifact as an output of a step run.
|
@@ -8466,7 +8438,6 @@ class SqlZenStore(BaseZenStore):
|
|
8466
8438
|
step_run_id: The ID of the step run.
|
8467
8439
|
artifact_version_id: The ID of the artifact version.
|
8468
8440
|
name: The name of the output in the step run.
|
8469
|
-
output_type: In which way the artifact was saved by the step.
|
8470
8441
|
session: The database session to use.
|
8471
8442
|
|
8472
8443
|
Raises:
|
@@ -8510,7 +8481,6 @@ class SqlZenStore(BaseZenStore):
|
|
8510
8481
|
step_id=step_run_id,
|
8511
8482
|
artifact_id=artifact_version_id,
|
8512
8483
|
name=name,
|
8513
|
-
type=output_type.value,
|
8514
8484
|
)
|
8515
8485
|
session.add(assignment)
|
8516
8486
|
|
@@ -90,9 +90,7 @@ from zenml.models import (
|
|
90
90
|
PipelineRunResponse,
|
91
91
|
PipelineRunUpdate,
|
92
92
|
PipelineUpdate,
|
93
|
-
RunMetadataFilter,
|
94
93
|
RunMetadataRequest,
|
95
|
-
RunMetadataResponse,
|
96
94
|
RunTemplateFilter,
|
97
95
|
RunTemplateRequest,
|
98
96
|
RunTemplateResponse,
|
@@ -663,6 +661,19 @@ class ZenStoreInterface(ABC):
|
|
663
661
|
The created artifact version.
|
664
662
|
"""
|
665
663
|
|
664
|
+
@abstractmethod
|
665
|
+
def batch_create_artifact_versions(
|
666
|
+
self, artifact_versions: List[ArtifactVersionRequest]
|
667
|
+
) -> List[ArtifactVersionResponse]:
|
668
|
+
"""Creates a batch of artifact versions.
|
669
|
+
|
670
|
+
Args:
|
671
|
+
artifact_versions: The artifact versions to create.
|
672
|
+
|
673
|
+
Returns:
|
674
|
+
The created artifact versions.
|
675
|
+
"""
|
676
|
+
|
666
677
|
@abstractmethod
|
667
678
|
def get_artifact_version(
|
668
679
|
self, artifact_version_id: UUID, hydrate: bool = True
|
@@ -1620,52 +1631,14 @@ class ZenStoreInterface(ABC):
|
|
1620
1631
|
# -------------------- Run metadata --------------------
|
1621
1632
|
|
1622
1633
|
@abstractmethod
|
1623
|
-
def create_run_metadata(
|
1624
|
-
self, run_metadata: RunMetadataRequest
|
1625
|
-
) -> List[RunMetadataResponse]:
|
1634
|
+
def create_run_metadata(self, run_metadata: RunMetadataRequest) -> None:
|
1626
1635
|
"""Creates run metadata.
|
1627
1636
|
|
1628
1637
|
Args:
|
1629
1638
|
run_metadata: The run metadata to create.
|
1630
1639
|
|
1631
1640
|
Returns:
|
1632
|
-
|
1633
|
-
"""
|
1634
|
-
|
1635
|
-
@abstractmethod
|
1636
|
-
def get_run_metadata(
|
1637
|
-
self, run_metadata_id: UUID, hydrate: bool = True
|
1638
|
-
) -> RunMetadataResponse:
|
1639
|
-
"""Get run metadata by its unique ID.
|
1640
|
-
|
1641
|
-
Args:
|
1642
|
-
run_metadata_id: The ID of the run metadata to get.
|
1643
|
-
hydrate: Flag deciding whether to hydrate the output model(s)
|
1644
|
-
by including metadata fields in the response.
|
1645
|
-
|
1646
|
-
Returns:
|
1647
|
-
The run metadata with the given ID.
|
1648
|
-
|
1649
|
-
Raises:
|
1650
|
-
KeyError: if the run metadata doesn't exist.
|
1651
|
-
"""
|
1652
|
-
|
1653
|
-
@abstractmethod
|
1654
|
-
def list_run_metadata(
|
1655
|
-
self,
|
1656
|
-
run_metadata_filter_model: RunMetadataFilter,
|
1657
|
-
hydrate: bool = False,
|
1658
|
-
) -> Page[RunMetadataResponse]:
|
1659
|
-
"""List run metadata.
|
1660
|
-
|
1661
|
-
Args:
|
1662
|
-
run_metadata_filter_model: All filter parameters including
|
1663
|
-
pagination params.
|
1664
|
-
hydrate: Flag deciding whether to hydrate the output model(s)
|
1665
|
-
by including metadata fields in the response.
|
1666
|
-
|
1667
|
-
Returns:
|
1668
|
-
The run metadata.
|
1641
|
+
None
|
1669
1642
|
"""
|
1670
1643
|
|
1671
1644
|
# -------------------- Schedules --------------------
|