mlrun 1.6.4rc8__py3-none-any.whl → 1.7.0__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.
Potentially problematic release.
This version of mlrun might be problematic. Click here for more details.
- mlrun/__init__.py +11 -1
- mlrun/__main__.py +40 -122
- mlrun/alerts/__init__.py +15 -0
- mlrun/alerts/alert.py +248 -0
- mlrun/api/schemas/__init__.py +5 -4
- mlrun/artifacts/__init__.py +8 -3
- mlrun/artifacts/base.py +47 -257
- mlrun/artifacts/dataset.py +11 -192
- mlrun/artifacts/manager.py +79 -47
- mlrun/artifacts/model.py +31 -159
- mlrun/artifacts/plots.py +23 -380
- mlrun/common/constants.py +74 -1
- mlrun/common/db/sql_session.py +5 -5
- mlrun/common/formatters/__init__.py +21 -0
- mlrun/common/formatters/artifact.py +45 -0
- mlrun/common/formatters/base.py +113 -0
- mlrun/common/formatters/feature_set.py +33 -0
- mlrun/common/formatters/function.py +46 -0
- mlrun/common/formatters/pipeline.py +53 -0
- mlrun/common/formatters/project.py +51 -0
- mlrun/common/formatters/run.py +29 -0
- mlrun/common/helpers.py +12 -3
- mlrun/common/model_monitoring/helpers.py +9 -5
- mlrun/{runtimes → common/runtimes}/constants.py +37 -9
- mlrun/common/schemas/__init__.py +31 -5
- mlrun/common/schemas/alert.py +202 -0
- mlrun/common/schemas/api_gateway.py +196 -0
- mlrun/common/schemas/artifact.py +25 -4
- mlrun/common/schemas/auth.py +16 -5
- mlrun/common/schemas/background_task.py +1 -1
- mlrun/common/schemas/client_spec.py +4 -2
- mlrun/common/schemas/common.py +7 -4
- mlrun/common/schemas/constants.py +3 -0
- mlrun/common/schemas/feature_store.py +74 -44
- mlrun/common/schemas/frontend_spec.py +15 -7
- mlrun/common/schemas/function.py +12 -1
- mlrun/common/schemas/hub.py +11 -18
- mlrun/common/schemas/memory_reports.py +2 -2
- mlrun/common/schemas/model_monitoring/__init__.py +20 -4
- mlrun/common/schemas/model_monitoring/constants.py +123 -42
- mlrun/common/schemas/model_monitoring/grafana.py +13 -9
- mlrun/common/schemas/model_monitoring/model_endpoints.py +101 -54
- mlrun/common/schemas/notification.py +71 -14
- mlrun/common/schemas/object.py +2 -2
- mlrun/{model_monitoring/controller_handler.py → common/schemas/pagination.py} +9 -12
- mlrun/common/schemas/pipeline.py +8 -1
- mlrun/common/schemas/project.py +69 -18
- mlrun/common/schemas/runs.py +7 -1
- mlrun/common/schemas/runtime_resource.py +8 -12
- mlrun/common/schemas/schedule.py +4 -4
- mlrun/common/schemas/tag.py +1 -2
- mlrun/common/schemas/workflow.py +12 -4
- mlrun/common/types.py +14 -1
- mlrun/config.py +154 -69
- mlrun/data_types/data_types.py +6 -1
- mlrun/data_types/spark.py +2 -2
- mlrun/data_types/to_pandas.py +67 -37
- mlrun/datastore/__init__.py +6 -8
- mlrun/datastore/alibaba_oss.py +131 -0
- mlrun/datastore/azure_blob.py +143 -42
- mlrun/datastore/base.py +102 -58
- mlrun/datastore/datastore.py +34 -13
- mlrun/datastore/datastore_profile.py +146 -20
- mlrun/datastore/dbfs_store.py +3 -7
- mlrun/datastore/filestore.py +1 -4
- mlrun/datastore/google_cloud_storage.py +97 -33
- mlrun/datastore/hdfs.py +56 -0
- mlrun/datastore/inmem.py +6 -3
- mlrun/datastore/redis.py +7 -2
- mlrun/datastore/s3.py +34 -12
- mlrun/datastore/snowflake_utils.py +45 -0
- mlrun/datastore/sources.py +303 -111
- mlrun/datastore/spark_utils.py +31 -2
- mlrun/datastore/store_resources.py +9 -7
- mlrun/datastore/storeytargets.py +151 -0
- mlrun/datastore/targets.py +453 -176
- mlrun/datastore/utils.py +72 -58
- mlrun/datastore/v3io.py +6 -1
- mlrun/db/base.py +274 -41
- mlrun/db/factory.py +1 -1
- mlrun/db/httpdb.py +893 -225
- mlrun/db/nopdb.py +291 -33
- mlrun/errors.py +36 -6
- mlrun/execution.py +115 -42
- mlrun/feature_store/__init__.py +0 -2
- mlrun/feature_store/api.py +65 -73
- mlrun/feature_store/common.py +7 -12
- mlrun/feature_store/feature_set.py +76 -55
- mlrun/feature_store/feature_vector.py +39 -31
- mlrun/feature_store/ingestion.py +7 -6
- mlrun/feature_store/retrieval/base.py +16 -11
- mlrun/feature_store/retrieval/dask_merger.py +2 -0
- mlrun/feature_store/retrieval/job.py +13 -4
- mlrun/feature_store/retrieval/local_merger.py +2 -0
- mlrun/feature_store/retrieval/spark_merger.py +24 -32
- mlrun/feature_store/steps.py +45 -34
- mlrun/features.py +11 -21
- mlrun/frameworks/_common/artifacts_library.py +9 -9
- mlrun/frameworks/_common/mlrun_interface.py +5 -5
- mlrun/frameworks/_common/model_handler.py +48 -48
- mlrun/frameworks/_common/plan.py +5 -6
- mlrun/frameworks/_common/producer.py +3 -4
- mlrun/frameworks/_common/utils.py +5 -5
- mlrun/frameworks/_dl_common/loggers/logger.py +6 -7
- mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +9 -9
- mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +23 -47
- mlrun/frameworks/_ml_common/artifacts_library.py +1 -2
- mlrun/frameworks/_ml_common/loggers/logger.py +3 -4
- mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +4 -5
- mlrun/frameworks/_ml_common/model_handler.py +24 -24
- mlrun/frameworks/_ml_common/pkl_model_server.py +2 -2
- mlrun/frameworks/_ml_common/plan.py +2 -2
- mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
- mlrun/frameworks/_ml_common/utils.py +4 -4
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +9 -9
- mlrun/frameworks/huggingface/model_server.py +4 -4
- mlrun/frameworks/lgbm/__init__.py +33 -33
- mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
- mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -5
- mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -5
- mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -3
- mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +6 -6
- mlrun/frameworks/lgbm/model_handler.py +10 -10
- mlrun/frameworks/lgbm/model_server.py +6 -6
- mlrun/frameworks/lgbm/utils.py +5 -5
- mlrun/frameworks/onnx/dataset.py +8 -8
- mlrun/frameworks/onnx/mlrun_interface.py +3 -3
- mlrun/frameworks/onnx/model_handler.py +6 -6
- mlrun/frameworks/onnx/model_server.py +7 -7
- mlrun/frameworks/parallel_coordinates.py +6 -6
- mlrun/frameworks/pytorch/__init__.py +18 -18
- mlrun/frameworks/pytorch/callbacks/callback.py +4 -5
- mlrun/frameworks/pytorch/callbacks/logging_callback.py +17 -17
- mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +23 -29
- mlrun/frameworks/pytorch/callbacks_handler.py +38 -38
- mlrun/frameworks/pytorch/mlrun_interface.py +20 -20
- mlrun/frameworks/pytorch/model_handler.py +17 -17
- mlrun/frameworks/pytorch/model_server.py +7 -7
- mlrun/frameworks/sklearn/__init__.py +13 -13
- mlrun/frameworks/sklearn/estimator.py +4 -4
- mlrun/frameworks/sklearn/metrics_library.py +14 -14
- mlrun/frameworks/sklearn/mlrun_interface.py +16 -9
- mlrun/frameworks/sklearn/model_handler.py +2 -2
- mlrun/frameworks/tf_keras/__init__.py +10 -7
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +15 -15
- mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +19 -23
- mlrun/frameworks/tf_keras/mlrun_interface.py +9 -11
- mlrun/frameworks/tf_keras/model_handler.py +14 -14
- mlrun/frameworks/tf_keras/model_server.py +6 -6
- mlrun/frameworks/xgboost/__init__.py +13 -13
- mlrun/frameworks/xgboost/model_handler.py +6 -6
- mlrun/k8s_utils.py +61 -17
- mlrun/launcher/__init__.py +1 -1
- mlrun/launcher/base.py +16 -15
- mlrun/launcher/client.py +13 -11
- mlrun/launcher/factory.py +1 -1
- mlrun/launcher/local.py +23 -13
- mlrun/launcher/remote.py +17 -10
- mlrun/lists.py +7 -6
- mlrun/model.py +478 -103
- mlrun/model_monitoring/__init__.py +1 -1
- mlrun/model_monitoring/api.py +163 -371
- mlrun/{runtimes/mpijob/v1alpha1.py → model_monitoring/applications/__init__.py} +9 -15
- mlrun/model_monitoring/applications/_application_steps.py +188 -0
- mlrun/model_monitoring/applications/base.py +108 -0
- mlrun/model_monitoring/applications/context.py +341 -0
- mlrun/model_monitoring/{evidently_application.py → applications/evidently_base.py} +27 -22
- mlrun/model_monitoring/applications/histogram_data_drift.py +354 -0
- mlrun/model_monitoring/applications/results.py +99 -0
- mlrun/model_monitoring/controller.py +131 -278
- mlrun/model_monitoring/db/__init__.py +18 -0
- mlrun/model_monitoring/db/stores/__init__.py +136 -0
- mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
- mlrun/model_monitoring/db/stores/base/store.py +213 -0
- mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +71 -0
- mlrun/model_monitoring/db/stores/sqldb/models/base.py +190 -0
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +103 -0
- mlrun/model_monitoring/{stores/models/mysql.py → db/stores/sqldb/models/sqlite.py} +19 -13
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py +659 -0
- mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +726 -0
- mlrun/model_monitoring/db/tsdb/__init__.py +105 -0
- mlrun/model_monitoring/db/tsdb/base.py +448 -0
- mlrun/model_monitoring/db/tsdb/helpers.py +30 -0
- mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +279 -0
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +507 -0
- mlrun/model_monitoring/db/tsdb/v3io/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +158 -0
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +849 -0
- mlrun/model_monitoring/features_drift_table.py +134 -106
- mlrun/model_monitoring/helpers.py +199 -55
- mlrun/model_monitoring/metrics/__init__.py +13 -0
- mlrun/model_monitoring/metrics/histogram_distance.py +127 -0
- mlrun/model_monitoring/model_endpoint.py +3 -2
- mlrun/model_monitoring/stream_processing.py +134 -398
- mlrun/model_monitoring/tracking_policy.py +9 -2
- mlrun/model_monitoring/writer.py +161 -125
- mlrun/package/__init__.py +6 -6
- mlrun/package/context_handler.py +5 -5
- mlrun/package/packager.py +7 -7
- mlrun/package/packagers/default_packager.py +8 -8
- mlrun/package/packagers/numpy_packagers.py +15 -15
- mlrun/package/packagers/pandas_packagers.py +5 -5
- mlrun/package/packagers/python_standard_library_packagers.py +10 -10
- mlrun/package/packagers_manager.py +19 -23
- mlrun/package/utils/_formatter.py +6 -6
- mlrun/package/utils/_pickler.py +2 -2
- mlrun/package/utils/_supported_format.py +4 -4
- mlrun/package/utils/log_hint_utils.py +2 -2
- mlrun/package/utils/type_hint_utils.py +4 -9
- mlrun/platforms/__init__.py +11 -10
- mlrun/platforms/iguazio.py +24 -203
- mlrun/projects/operations.py +52 -25
- mlrun/projects/pipelines.py +191 -197
- mlrun/projects/project.py +1227 -400
- mlrun/render.py +16 -19
- mlrun/run.py +209 -184
- mlrun/runtimes/__init__.py +83 -15
- mlrun/runtimes/base.py +51 -35
- mlrun/runtimes/daskjob.py +17 -10
- mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
- mlrun/runtimes/databricks_job/databricks_runtime.py +8 -7
- mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
- mlrun/runtimes/funcdoc.py +1 -29
- mlrun/runtimes/function_reference.py +1 -1
- mlrun/runtimes/kubejob.py +34 -128
- mlrun/runtimes/local.py +40 -11
- mlrun/runtimes/mpijob/__init__.py +0 -20
- mlrun/runtimes/mpijob/abstract.py +9 -10
- mlrun/runtimes/mpijob/v1.py +1 -1
- mlrun/{model_monitoring/stores/models/sqlite.py → runtimes/nuclio/__init__.py} +7 -9
- mlrun/runtimes/nuclio/api_gateway.py +769 -0
- mlrun/runtimes/nuclio/application/__init__.py +15 -0
- mlrun/runtimes/nuclio/application/application.py +758 -0
- mlrun/runtimes/nuclio/application/reverse_proxy.go +95 -0
- mlrun/runtimes/{function.py → nuclio/function.py} +200 -83
- mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
- mlrun/runtimes/{serving.py → nuclio/serving.py} +65 -68
- mlrun/runtimes/pod.py +281 -101
- mlrun/runtimes/remotesparkjob.py +12 -9
- mlrun/runtimes/sparkjob/spark3job.py +67 -51
- mlrun/runtimes/utils.py +41 -75
- mlrun/secrets.py +9 -5
- mlrun/serving/__init__.py +8 -1
- mlrun/serving/remote.py +2 -7
- mlrun/serving/routers.py +85 -69
- mlrun/serving/server.py +69 -44
- mlrun/serving/states.py +209 -36
- mlrun/serving/utils.py +22 -14
- mlrun/serving/v1_serving.py +6 -7
- mlrun/serving/v2_serving.py +133 -54
- mlrun/track/tracker.py +2 -1
- mlrun/track/tracker_manager.py +3 -3
- mlrun/track/trackers/mlflow_tracker.py +6 -2
- mlrun/utils/async_http.py +6 -8
- mlrun/utils/azure_vault.py +1 -1
- mlrun/utils/clones.py +1 -2
- mlrun/utils/condition_evaluator.py +3 -3
- mlrun/utils/db.py +21 -3
- mlrun/utils/helpers.py +405 -225
- mlrun/utils/http.py +3 -6
- mlrun/utils/logger.py +112 -16
- mlrun/utils/notifications/notification/__init__.py +17 -13
- mlrun/utils/notifications/notification/base.py +50 -2
- mlrun/utils/notifications/notification/console.py +2 -0
- mlrun/utils/notifications/notification/git.py +24 -1
- mlrun/utils/notifications/notification/ipython.py +3 -1
- mlrun/utils/notifications/notification/slack.py +96 -21
- mlrun/utils/notifications/notification/webhook.py +59 -2
- mlrun/utils/notifications/notification_pusher.py +149 -30
- mlrun/utils/regex.py +9 -0
- mlrun/utils/retryer.py +208 -0
- mlrun/utils/singleton.py +1 -1
- mlrun/utils/v3io_clients.py +4 -6
- mlrun/utils/version/version.json +2 -2
- mlrun/utils/version/version.py +2 -6
- mlrun-1.7.0.dist-info/METADATA +378 -0
- mlrun-1.7.0.dist-info/RECORD +351 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/WHEEL +1 -1
- mlrun/feature_store/retrieval/conversion.py +0 -273
- mlrun/kfpops.py +0 -868
- mlrun/model_monitoring/application.py +0 -310
- mlrun/model_monitoring/batch.py +0 -1095
- mlrun/model_monitoring/prometheus.py +0 -219
- mlrun/model_monitoring/stores/__init__.py +0 -111
- mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -576
- mlrun/model_monitoring/stores/model_endpoint_store.py +0 -147
- mlrun/model_monitoring/stores/models/__init__.py +0 -27
- mlrun/model_monitoring/stores/models/base.py +0 -84
- mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -384
- mlrun/platforms/other.py +0 -306
- mlrun-1.6.4rc8.dist-info/METADATA +0 -272
- mlrun-1.6.4rc8.dist-info/RECORD +0 -314
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
#
|
|
15
|
-
from typing import
|
|
15
|
+
from typing import Optional
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
import pydantic
|
|
18
18
|
|
|
19
19
|
from .auth import AuthorizationResourceTypes, Credentials
|
|
20
20
|
from .object import (
|
|
@@ -27,32 +27,42 @@ from .object import (
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
class
|
|
30
|
+
class FeatureStoreBaseModel(pydantic.BaseModel):
|
|
31
|
+
"""
|
|
32
|
+
Intermediate base class, in order to override pydantic's configuration, as per
|
|
33
|
+
https://docs.pydantic.dev/1.10/usage/model_config/#change-behaviour-globally
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
class Config:
|
|
37
|
+
copy_on_model_validation = "none"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class Feature(FeatureStoreBaseModel):
|
|
31
41
|
name: str
|
|
32
42
|
value_type: str
|
|
33
43
|
labels: Optional[dict] = {}
|
|
34
44
|
|
|
35
45
|
class Config:
|
|
36
|
-
extra = Extra.allow
|
|
46
|
+
extra = pydantic.Extra.allow
|
|
37
47
|
|
|
38
48
|
|
|
39
|
-
class Entity(
|
|
49
|
+
class Entity(FeatureStoreBaseModel):
|
|
40
50
|
name: str
|
|
41
51
|
value_type: str
|
|
42
52
|
labels: Optional[dict] = {}
|
|
43
53
|
|
|
44
54
|
class Config:
|
|
45
|
-
extra = Extra.allow
|
|
55
|
+
extra = pydantic.Extra.allow
|
|
46
56
|
|
|
47
57
|
|
|
48
58
|
class FeatureSetSpec(ObjectSpec):
|
|
49
|
-
entities:
|
|
50
|
-
features:
|
|
51
|
-
engine: Optional[str] = Field(default="storey")
|
|
59
|
+
entities: list[Entity] = []
|
|
60
|
+
features: list[Feature] = []
|
|
61
|
+
engine: Optional[str] = pydantic.Field(default="storey")
|
|
52
62
|
|
|
53
63
|
|
|
54
|
-
class FeatureSet(
|
|
55
|
-
kind: ObjectKind = Field(ObjectKind.feature_set, const=True)
|
|
64
|
+
class FeatureSet(FeatureStoreBaseModel):
|
|
65
|
+
kind: ObjectKind = pydantic.Field(ObjectKind.feature_set, const=True)
|
|
56
66
|
metadata: ObjectMetadata
|
|
57
67
|
spec: FeatureSetSpec
|
|
58
68
|
status: ObjectStatus
|
|
@@ -62,70 +72,90 @@ class FeatureSet(BaseModel):
|
|
|
62
72
|
return AuthorizationResourceTypes.feature_set
|
|
63
73
|
|
|
64
74
|
|
|
65
|
-
class EntityRecord(
|
|
75
|
+
class EntityRecord(FeatureStoreBaseModel):
|
|
66
76
|
name: str
|
|
67
77
|
value_type: str
|
|
68
|
-
labels:
|
|
78
|
+
labels: list[LabelRecord]
|
|
69
79
|
|
|
70
80
|
class Config:
|
|
71
81
|
orm_mode = True
|
|
72
82
|
|
|
73
83
|
|
|
74
|
-
class FeatureRecord(
|
|
84
|
+
class FeatureRecord(FeatureStoreBaseModel):
|
|
75
85
|
name: str
|
|
76
86
|
value_type: str
|
|
77
|
-
labels:
|
|
87
|
+
labels: list[LabelRecord]
|
|
78
88
|
|
|
79
89
|
class Config:
|
|
80
90
|
orm_mode = True
|
|
81
91
|
|
|
82
92
|
|
|
83
93
|
class FeatureSetRecord(ObjectRecord):
|
|
84
|
-
entities:
|
|
85
|
-
features:
|
|
94
|
+
entities: list[EntityRecord]
|
|
95
|
+
features: list[FeatureRecord]
|
|
86
96
|
|
|
87
97
|
class Config:
|
|
88
98
|
orm_mode = True
|
|
89
99
|
|
|
90
100
|
|
|
91
|
-
class FeatureSetsOutput(
|
|
92
|
-
feature_sets:
|
|
101
|
+
class FeatureSetsOutput(FeatureStoreBaseModel):
|
|
102
|
+
feature_sets: list[FeatureSet]
|
|
93
103
|
|
|
94
104
|
|
|
95
|
-
class FeatureSetsTagsOutput(
|
|
96
|
-
tags:
|
|
105
|
+
class FeatureSetsTagsOutput(FeatureStoreBaseModel):
|
|
106
|
+
tags: list[str] = []
|
|
97
107
|
|
|
98
108
|
|
|
99
|
-
class FeatureSetDigestSpec(
|
|
100
|
-
entities:
|
|
101
|
-
features:
|
|
109
|
+
class FeatureSetDigestSpec(FeatureStoreBaseModel):
|
|
110
|
+
entities: list[Entity]
|
|
111
|
+
features: list[Feature]
|
|
102
112
|
|
|
103
113
|
|
|
104
|
-
class FeatureSetDigestOutput(
|
|
114
|
+
class FeatureSetDigestOutput(FeatureStoreBaseModel):
|
|
105
115
|
metadata: ObjectMetadata
|
|
106
116
|
spec: FeatureSetDigestSpec
|
|
107
117
|
|
|
108
118
|
|
|
109
|
-
class
|
|
119
|
+
class FeatureSetDigestSpecV2(FeatureStoreBaseModel):
|
|
120
|
+
entities: list[Entity]
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class FeatureSetDigestOutputV2(FeatureStoreBaseModel):
|
|
124
|
+
feature_set_index: int
|
|
125
|
+
metadata: ObjectMetadata
|
|
126
|
+
spec: FeatureSetDigestSpecV2
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class FeatureListOutput(FeatureStoreBaseModel):
|
|
110
130
|
feature: Feature
|
|
111
131
|
feature_set_digest: FeatureSetDigestOutput
|
|
112
132
|
|
|
113
133
|
|
|
114
|
-
class FeaturesOutput(
|
|
115
|
-
features:
|
|
134
|
+
class FeaturesOutput(FeatureStoreBaseModel):
|
|
135
|
+
features: list[FeatureListOutput]
|
|
136
|
+
|
|
116
137
|
|
|
138
|
+
class FeaturesOutputV2(FeatureStoreBaseModel):
|
|
139
|
+
features: list[Feature]
|
|
140
|
+
feature_set_digests: list[FeatureSetDigestOutputV2]
|
|
117
141
|
|
|
118
|
-
|
|
142
|
+
|
|
143
|
+
class EntityListOutput(FeatureStoreBaseModel):
|
|
119
144
|
entity: Entity
|
|
120
145
|
feature_set_digest: FeatureSetDigestOutput
|
|
121
146
|
|
|
122
147
|
|
|
123
|
-
class
|
|
124
|
-
entities:
|
|
148
|
+
class EntitiesOutputV2(FeatureStoreBaseModel):
|
|
149
|
+
entities: list[Entity]
|
|
150
|
+
feature_set_digests: list[FeatureSetDigestOutputV2]
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class EntitiesOutput(FeatureStoreBaseModel):
|
|
154
|
+
entities: list[EntityListOutput]
|
|
125
155
|
|
|
126
156
|
|
|
127
|
-
class FeatureVector(
|
|
128
|
-
kind: ObjectKind = Field(ObjectKind.feature_vector, const=True)
|
|
157
|
+
class FeatureVector(FeatureStoreBaseModel):
|
|
158
|
+
kind: ObjectKind = pydantic.Field(ObjectKind.feature_vector, const=True)
|
|
129
159
|
metadata: ObjectMetadata
|
|
130
160
|
spec: ObjectSpec
|
|
131
161
|
status: ObjectStatus
|
|
@@ -139,39 +169,39 @@ class FeatureVectorRecord(ObjectRecord):
|
|
|
139
169
|
pass
|
|
140
170
|
|
|
141
171
|
|
|
142
|
-
class FeatureVectorsOutput(
|
|
143
|
-
feature_vectors:
|
|
172
|
+
class FeatureVectorsOutput(FeatureStoreBaseModel):
|
|
173
|
+
feature_vectors: list[FeatureVector]
|
|
144
174
|
|
|
145
175
|
|
|
146
|
-
class FeatureVectorsTagsOutput(
|
|
147
|
-
tags:
|
|
176
|
+
class FeatureVectorsTagsOutput(FeatureStoreBaseModel):
|
|
177
|
+
tags: list[str] = []
|
|
148
178
|
|
|
149
179
|
|
|
150
|
-
class DataSource(
|
|
180
|
+
class DataSource(FeatureStoreBaseModel):
|
|
151
181
|
kind: str
|
|
152
182
|
name: str
|
|
153
183
|
path: str
|
|
154
184
|
|
|
155
185
|
class Config:
|
|
156
|
-
extra = Extra.allow
|
|
186
|
+
extra = pydantic.Extra.allow
|
|
157
187
|
|
|
158
188
|
|
|
159
|
-
class DataTarget(
|
|
189
|
+
class DataTarget(FeatureStoreBaseModel):
|
|
160
190
|
kind: str
|
|
161
191
|
name: str
|
|
162
192
|
path: Optional[str]
|
|
163
193
|
|
|
164
194
|
class Config:
|
|
165
|
-
extra = Extra.allow
|
|
195
|
+
extra = pydantic.Extra.allow
|
|
166
196
|
|
|
167
197
|
|
|
168
|
-
class FeatureSetIngestInput(
|
|
198
|
+
class FeatureSetIngestInput(FeatureStoreBaseModel):
|
|
169
199
|
source: Optional[DataSource]
|
|
170
|
-
targets: Optional[
|
|
200
|
+
targets: Optional[list[DataTarget]]
|
|
171
201
|
infer_options: Optional[int]
|
|
172
202
|
credentials: Credentials = Credentials()
|
|
173
203
|
|
|
174
204
|
|
|
175
|
-
class FeatureSetIngestOutput(
|
|
205
|
+
class FeatureSetIngestOutput(FeatureStoreBaseModel):
|
|
176
206
|
feature_set: FeatureSet
|
|
177
207
|
run_object: dict
|
|
@@ -50,23 +50,31 @@ class FeatureFlags(pydantic.BaseModel):
|
|
|
50
50
|
preemption_nodes: PreemptionNodesFeatureFlag
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
class ArtifactLimits(pydantic.BaseModel):
|
|
54
|
+
max_chunk_size: int
|
|
55
|
+
max_preview_size: int
|
|
56
|
+
max_download_size: int
|
|
57
|
+
|
|
58
|
+
|
|
53
59
|
class FrontendSpec(pydantic.BaseModel):
|
|
54
60
|
jobs_dashboard_url: typing.Optional[str]
|
|
55
61
|
model_monitoring_dashboard_url: typing.Optional[str]
|
|
56
|
-
abortable_function_kinds:
|
|
62
|
+
abortable_function_kinds: list[str] = []
|
|
57
63
|
feature_flags: FeatureFlags
|
|
58
64
|
default_function_priority_class_name: typing.Optional[str]
|
|
59
|
-
valid_function_priority_class_names:
|
|
60
|
-
default_function_image_by_kind:
|
|
65
|
+
valid_function_priority_class_names: list[str] = []
|
|
66
|
+
default_function_image_by_kind: dict[str, str] = {}
|
|
61
67
|
function_deployment_target_image_template: typing.Optional[str]
|
|
62
68
|
function_deployment_target_image_name_prefix_template: str
|
|
63
|
-
function_deployment_target_image_registries_to_enforce_prefix:
|
|
69
|
+
function_deployment_target_image_registries_to_enforce_prefix: list[str] = []
|
|
64
70
|
function_deployment_mlrun_requirement: typing.Optional[str]
|
|
65
71
|
auto_mount_type: typing.Optional[str]
|
|
66
|
-
auto_mount_params:
|
|
72
|
+
auto_mount_params: dict[str, str] = {}
|
|
67
73
|
default_artifact_path: str
|
|
68
74
|
default_function_pod_resources: Resources = Resources()
|
|
69
75
|
default_function_preemption_mode: str
|
|
70
|
-
feature_store_data_prefixes: typing.Optional[
|
|
71
|
-
allowed_artifact_path_prefixes_list:
|
|
76
|
+
feature_store_data_prefixes: typing.Optional[dict[str, str]]
|
|
77
|
+
allowed_artifact_path_prefixes_list: list[str]
|
|
72
78
|
ce: typing.Optional[dict]
|
|
79
|
+
internal_labels: list[str] = []
|
|
80
|
+
artifact_limits: ArtifactLimits
|
mlrun/common/schemas/function.py
CHANGED
|
@@ -45,6 +45,9 @@ class FunctionState:
|
|
|
45
45
|
# same goes for the build which is not coming from the pod, but is used and we can't just omit it for BC reasons
|
|
46
46
|
build = "build"
|
|
47
47
|
|
|
48
|
+
# for pipeline steps
|
|
49
|
+
skipped = "skipped"
|
|
50
|
+
|
|
48
51
|
@classmethod
|
|
49
52
|
def get_function_state_from_pod_state(cls, pod_state: str):
|
|
50
53
|
if pod_state == "succeeded":
|
|
@@ -60,6 +63,7 @@ class FunctionState:
|
|
|
60
63
|
return [
|
|
61
64
|
cls.ready,
|
|
62
65
|
cls.error,
|
|
66
|
+
cls.skipped,
|
|
63
67
|
]
|
|
64
68
|
|
|
65
69
|
|
|
@@ -106,7 +110,7 @@ class ServiceAccount(pydantic.BaseModel):
|
|
|
106
110
|
|
|
107
111
|
|
|
108
112
|
class StateThresholds(pydantic.BaseModel):
|
|
109
|
-
default: typing.Optional[
|
|
113
|
+
default: typing.Optional[dict[str, str]]
|
|
110
114
|
|
|
111
115
|
|
|
112
116
|
class FunctionSpec(pydantic.BaseModel):
|
|
@@ -115,6 +119,13 @@ class FunctionSpec(pydantic.BaseModel):
|
|
|
115
119
|
service_account: typing.Optional[ServiceAccount]
|
|
116
120
|
state_thresholds: typing.Optional[StateThresholds]
|
|
117
121
|
|
|
122
|
+
class Config:
|
|
123
|
+
extra = pydantic.Extra.allow
|
|
124
|
+
|
|
118
125
|
|
|
119
126
|
class Function(pydantic.BaseModel):
|
|
120
127
|
spec: typing.Optional[FunctionSpec]
|
|
128
|
+
application: typing.Optional[dict[str, typing.Any]]
|
|
129
|
+
|
|
130
|
+
class Config:
|
|
131
|
+
extra = pydantic.Extra.allow
|
mlrun/common/schemas/hub.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
#
|
|
15
15
|
from datetime import datetime, timezone
|
|
16
|
-
from typing import
|
|
16
|
+
from typing import Optional
|
|
17
17
|
|
|
18
18
|
from pydantic import BaseModel, Extra, Field
|
|
19
19
|
|
|
@@ -56,36 +56,29 @@ class HubSource(BaseModel):
|
|
|
56
56
|
status: Optional[ObjectStatus] = ObjectStatus(state="created")
|
|
57
57
|
|
|
58
58
|
def get_full_uri(self, relative_path):
|
|
59
|
-
return "{
|
|
60
|
-
base=self.spec.path,
|
|
61
|
-
object_type=self.spec.object_type,
|
|
62
|
-
channel=self.spec.channel,
|
|
63
|
-
relative_path=relative_path,
|
|
64
|
-
)
|
|
59
|
+
return f"{self.spec.path}/{self.spec.object_type}/{self.spec.channel}/{relative_path}"
|
|
65
60
|
|
|
66
61
|
def get_catalog_uri(self):
|
|
67
|
-
return self.get_full_uri(mlrun.
|
|
62
|
+
return self.get_full_uri(mlrun.mlconf.hub.catalog_filename)
|
|
68
63
|
|
|
69
64
|
@classmethod
|
|
70
65
|
def generate_default_source(cls):
|
|
71
|
-
if not mlrun.
|
|
66
|
+
if not mlrun.mlconf.hub.default_source.create:
|
|
72
67
|
return None
|
|
73
68
|
|
|
74
69
|
now = datetime.now(timezone.utc)
|
|
75
70
|
hub_metadata = HubObjectMetadata(
|
|
76
|
-
name=mlrun.
|
|
77
|
-
description=mlrun.
|
|
71
|
+
name=mlrun.mlconf.hub.default_source.name,
|
|
72
|
+
description=mlrun.mlconf.hub.default_source.description,
|
|
78
73
|
created=now,
|
|
79
74
|
updated=now,
|
|
80
75
|
)
|
|
81
76
|
return cls(
|
|
82
77
|
metadata=hub_metadata,
|
|
83
78
|
spec=HubSourceSpec(
|
|
84
|
-
path=mlrun.
|
|
85
|
-
channel=mlrun.
|
|
86
|
-
object_type=HubSourceType(
|
|
87
|
-
mlrun.config.config.hub.default_source.object_type
|
|
88
|
-
),
|
|
79
|
+
path=mlrun.mlconf.hub.default_source.url,
|
|
80
|
+
channel=mlrun.mlconf.hub.default_source.channel,
|
|
81
|
+
object_type=HubSourceType(mlrun.mlconf.hub.default_source.object_type),
|
|
89
82
|
),
|
|
90
83
|
status=ObjectStatus(state="created"),
|
|
91
84
|
)
|
|
@@ -120,7 +113,7 @@ class HubItemMetadata(HubObjectMetadata):
|
|
|
120
113
|
|
|
121
114
|
class HubItemSpec(ObjectSpec):
|
|
122
115
|
item_uri: str
|
|
123
|
-
assets:
|
|
116
|
+
assets: dict[str, str] = {}
|
|
124
117
|
|
|
125
118
|
|
|
126
119
|
class HubItem(BaseModel):
|
|
@@ -133,4 +126,4 @@ class HubItem(BaseModel):
|
|
|
133
126
|
class HubCatalog(BaseModel):
|
|
134
127
|
kind: ObjectKind = Field(ObjectKind.hub_catalog, const=True)
|
|
135
128
|
channel: str
|
|
136
|
-
catalog:
|
|
129
|
+
catalog: list[HubItem]
|
|
@@ -19,7 +19,7 @@ import pydantic
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class MostCommonObjectTypesReport(pydantic.BaseModel):
|
|
22
|
-
object_types:
|
|
22
|
+
object_types: list[tuple[str, int]]
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class ObjectTypeReport(pydantic.BaseModel):
|
|
@@ -27,4 +27,4 @@ class ObjectTypeReport(pydantic.BaseModel):
|
|
|
27
27
|
sample_size: int
|
|
28
28
|
start_index: typing.Optional[int]
|
|
29
29
|
max_depth: int
|
|
30
|
-
object_report:
|
|
30
|
+
object_report: list[dict[str, typing.Any]]
|
|
@@ -11,10 +11,9 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
#
|
|
15
|
-
# flake8: noqa - this is until we take care of the F401 violations with respect to __all__ & sphinx
|
|
16
14
|
|
|
17
15
|
from .constants import (
|
|
16
|
+
V3IO_MODEL_MONITORING_DB,
|
|
18
17
|
ControllerPolicy,
|
|
19
18
|
DriftStatus,
|
|
20
19
|
EndpointType,
|
|
@@ -25,17 +24,30 @@ from .constants import (
|
|
|
25
24
|
FeatureSetFeatures,
|
|
26
25
|
FileTargetKind,
|
|
27
26
|
FunctionURI,
|
|
27
|
+
MetricData,
|
|
28
|
+
ModelEndpointMonitoringMetricType,
|
|
28
29
|
ModelEndpointTarget,
|
|
30
|
+
ModelEndpointTargetSchemas,
|
|
29
31
|
ModelMonitoringMode,
|
|
30
32
|
ModelMonitoringStoreKinds,
|
|
31
33
|
MonitoringFunctionNames,
|
|
34
|
+
PredictionsQueryConstants,
|
|
32
35
|
ProjectSecretKeys,
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
ResultData,
|
|
37
|
+
ResultKindApp,
|
|
38
|
+
ResultStatusApp,
|
|
39
|
+
SchedulingKeys,
|
|
40
|
+
SpecialApps,
|
|
41
|
+
TDEngineSuperTables,
|
|
42
|
+
TSDBTarget,
|
|
43
|
+
V3IOTSDBTables,
|
|
35
44
|
VersionedModel,
|
|
45
|
+
WriterEvent,
|
|
46
|
+
WriterEventKind,
|
|
36
47
|
)
|
|
37
48
|
from .grafana import (
|
|
38
49
|
GrafanaColumn,
|
|
50
|
+
GrafanaColumnType,
|
|
39
51
|
GrafanaDataPoint,
|
|
40
52
|
GrafanaNumberColumn,
|
|
41
53
|
GrafanaStringColumn,
|
|
@@ -48,6 +60,10 @@ from .model_endpoints import (
|
|
|
48
60
|
ModelEndpoint,
|
|
49
61
|
ModelEndpointList,
|
|
50
62
|
ModelEndpointMetadata,
|
|
63
|
+
ModelEndpointMonitoringMetric,
|
|
64
|
+
ModelEndpointMonitoringMetricNoData,
|
|
65
|
+
ModelEndpointMonitoringMetricValues,
|
|
66
|
+
ModelEndpointMonitoringResultValues,
|
|
51
67
|
ModelEndpointSpec,
|
|
52
68
|
ModelEndpointStatus,
|
|
53
69
|
)
|