mlrun 1.8.0rc42__py3-none-any.whl → 1.8.0rc44__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/common/schemas/model_monitoring/constants.py +1 -0
- mlrun/feature_store/__init__.py +2 -0
- mlrun/feature_store/api.py +0 -139
- mlrun/feature_store/feature_vector.py +91 -468
- mlrun/feature_store/feature_vector_utils.py +466 -0
- mlrun/feature_store/retrieval/base.py +1 -2
- mlrun/feature_store/retrieval/storey_merger.py +1 -1
- mlrun/model_monitoring/controller.py +3 -3
- mlrun/model_monitoring/db/tsdb/base.py +5 -6
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -1
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +94 -38
- mlrun/serving/states.py +40 -22
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/METADATA +1 -1
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/RECORD +19 -18
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/WHEEL +1 -1
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/LICENSE +0 -0
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/entry_points.txt +0 -0
- {mlrun-1.8.0rc42.dist-info → mlrun-1.8.0rc44.dist-info}/top_level.txt +0 -0
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
import math
|
|
15
|
-
from datetime import datetime, timedelta
|
|
15
|
+
from datetime import datetime, timedelta
|
|
16
16
|
from io import StringIO
|
|
17
17
|
from typing import Callable, Literal, Optional, Union
|
|
18
18
|
|
|
@@ -72,6 +72,15 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
72
72
|
self._frames_client: Optional[v3io_frames.client.ClientBase] = None
|
|
73
73
|
self._init_tables_path()
|
|
74
74
|
self._create_table = create_table
|
|
75
|
+
self._v3io_client = None
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def v3io_client(self):
|
|
79
|
+
if not self._v3io_client:
|
|
80
|
+
self._v3io_client = mlrun.utils.v3io_clients.get_v3io_client(
|
|
81
|
+
endpoint=mlrun.mlconf.v3io_api, access_key=self._v3io_access_key
|
|
82
|
+
)
|
|
83
|
+
return self._v3io_client
|
|
75
84
|
|
|
76
85
|
@property
|
|
77
86
|
def frames_client(self) -> v3io_frames.client.ClientBase:
|
|
@@ -147,6 +156,21 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
147
156
|
)
|
|
148
157
|
self.tables[mm_schemas.V3IOTSDBTables.PREDICTIONS] = monitoring_predictions_path
|
|
149
158
|
|
|
159
|
+
# initialize kv table
|
|
160
|
+
last_request_full_table_path = (
|
|
161
|
+
mlrun.mlconf.get_model_monitoring_file_target_path(
|
|
162
|
+
project=self.project,
|
|
163
|
+
kind=mm_schemas.FileTargetKind.LAST_REQUEST,
|
|
164
|
+
)
|
|
165
|
+
)
|
|
166
|
+
(
|
|
167
|
+
_,
|
|
168
|
+
_,
|
|
169
|
+
self.last_request_table,
|
|
170
|
+
) = mlrun.common.model_monitoring.helpers.parse_model_endpoint_store_prefix(
|
|
171
|
+
last_request_full_table_path
|
|
172
|
+
)
|
|
173
|
+
|
|
150
174
|
def create_tables(self) -> None:
|
|
151
175
|
"""
|
|
152
176
|
Create the tables using the TSDB connector. These are the tables that are stored in the V3IO TSDB:
|
|
@@ -252,6 +276,16 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
252
276
|
key=mm_schemas.EventFieldType.ENDPOINT_ID,
|
|
253
277
|
)
|
|
254
278
|
|
|
279
|
+
# Write last request timestamp to KV table
|
|
280
|
+
graph.add_step(
|
|
281
|
+
"storey.NoSqlTarget",
|
|
282
|
+
name="KVLastRequest",
|
|
283
|
+
after="tsdb_predictions",
|
|
284
|
+
table=f"v3io:///users/{self.last_request_table}",
|
|
285
|
+
columns=[EventFieldType.LAST_REQUEST_TIMESTAMP],
|
|
286
|
+
index_cols=[EventFieldType.ENDPOINT_ID],
|
|
287
|
+
)
|
|
288
|
+
|
|
255
289
|
# Emits the event in window size of events based on sample_window size (10 by default)
|
|
256
290
|
graph.add_step(
|
|
257
291
|
"storey.steps.SampleWindow",
|
|
@@ -458,12 +492,31 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
458
492
|
error=mlrun.errors.err_to_str(e),
|
|
459
493
|
project=self.project,
|
|
460
494
|
)
|
|
495
|
+
|
|
496
|
+
# Clean the last request records from the KV table
|
|
497
|
+
self._delete_last_request_records(endpoint_ids=endpoint_ids)
|
|
498
|
+
|
|
461
499
|
logger.debug(
|
|
462
500
|
"Deleted all model endpoint resources using the V3IO connector",
|
|
463
501
|
project=self.project,
|
|
464
502
|
number_of_endpoints_to_delete=len(endpoint_ids),
|
|
465
503
|
)
|
|
466
504
|
|
|
505
|
+
def _delete_last_request_records(self, endpoint_ids: list[str]):
|
|
506
|
+
for endpoint_id in endpoint_ids:
|
|
507
|
+
try:
|
|
508
|
+
self.v3io_client.kv.delete(
|
|
509
|
+
container=self.container,
|
|
510
|
+
table=self.last_request_table,
|
|
511
|
+
key=endpoint_id,
|
|
512
|
+
)
|
|
513
|
+
except Exception as e:
|
|
514
|
+
logger.warning(
|
|
515
|
+
f"Failed to delete last request record for endpoint '{endpoint_id}'",
|
|
516
|
+
error=mlrun.errors.err_to_str(e),
|
|
517
|
+
project=self.project,
|
|
518
|
+
)
|
|
519
|
+
|
|
467
520
|
def get_model_endpoint_real_time_metrics(
|
|
468
521
|
self, endpoint_id: str, metrics: list[str], start: str, end: str
|
|
469
522
|
) -> dict[str, list[tuple[str, float]]]:
|
|
@@ -826,41 +879,34 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
826
879
|
endpoint_ids: Union[str, list[str]],
|
|
827
880
|
start: Optional[datetime] = None,
|
|
828
881
|
end: Optional[datetime] = None,
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
start=start,
|
|
837
|
-
end=end,
|
|
838
|
-
filter_query=filter_query,
|
|
839
|
-
agg_funcs=["last"],
|
|
840
|
-
get_raw=get_raw,
|
|
841
|
-
)
|
|
882
|
+
) -> dict[str, float]:
|
|
883
|
+
if isinstance(endpoint_ids, str):
|
|
884
|
+
filter_expression = f"__name=='{endpoint_ids}'"
|
|
885
|
+
else:
|
|
886
|
+
filter_expression = " OR ".join(
|
|
887
|
+
[f"__name=='{endpoint_id}'" for endpoint_id in endpoint_ids]
|
|
888
|
+
)
|
|
842
889
|
|
|
843
|
-
|
|
844
|
-
|
|
890
|
+
# Get the last request timestamp for each endpoint from the KV table.
|
|
891
|
+
# The result of the query is a list of dictionaries,
|
|
892
|
+
# each dictionary contains the endpoint id and the last request timestamp.
|
|
845
893
|
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
lambda last_request: datetime.fromtimestamp(
|
|
859
|
-
last_request, tz=timezone.utc
|
|
860
|
-
)
|
|
894
|
+
try:
|
|
895
|
+
res = self.v3io_client.kv.new_cursor(
|
|
896
|
+
container=self.container,
|
|
897
|
+
table_path=self.last_request_table,
|
|
898
|
+
filter_expression=filter_expression,
|
|
899
|
+
).all()
|
|
900
|
+
except Exception as e:
|
|
901
|
+
logger.warning(
|
|
902
|
+
"Failed to get last request timestamp from V3IO KV table.",
|
|
903
|
+
err=mlrun.errors.err_to_str(e),
|
|
904
|
+
project=self.project,
|
|
905
|
+
table=self.last_request_table,
|
|
861
906
|
)
|
|
907
|
+
return {}
|
|
862
908
|
|
|
863
|
-
return
|
|
909
|
+
return {d["__name"]: d["last_request_timestamp"] for d in res}
|
|
864
910
|
|
|
865
911
|
def get_drift_status(
|
|
866
912
|
self,
|
|
@@ -1037,7 +1083,6 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
1037
1083
|
model_endpoint_objects_by_uid[uid] = model_endpoint_object
|
|
1038
1084
|
|
|
1039
1085
|
error_count_res = self.get_error_count(endpoint_ids=uids, get_raw=True)
|
|
1040
|
-
last_request_res = self.get_last_request(endpoint_ids=uids, get_raw=True)
|
|
1041
1086
|
avg_latency_res = self.get_avg_latency(endpoint_ids=uids, get_raw=True)
|
|
1042
1087
|
drift_status_res = self.get_drift_status(endpoint_ids=uids, get_raw=True)
|
|
1043
1088
|
|
|
@@ -1060,11 +1105,7 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
1060
1105
|
"count(error_count)",
|
|
1061
1106
|
error_count_res,
|
|
1062
1107
|
)
|
|
1063
|
-
|
|
1064
|
-
"last_request",
|
|
1065
|
-
"last(last_request_timestamp)",
|
|
1066
|
-
last_request_res,
|
|
1067
|
-
)
|
|
1108
|
+
|
|
1068
1109
|
add_metric(
|
|
1069
1110
|
"avg_latency",
|
|
1070
1111
|
"avg(latency)",
|
|
@@ -1075,4 +1116,19 @@ class V3IOTSDBConnector(TSDBConnector):
|
|
|
1075
1116
|
"max(result_status)",
|
|
1076
1117
|
drift_status_res,
|
|
1077
1118
|
)
|
|
1119
|
+
|
|
1120
|
+
self._enrich_mep_with_last_request(
|
|
1121
|
+
model_endpoint_objects_by_uid=model_endpoint_objects_by_uid
|
|
1122
|
+
)
|
|
1123
|
+
|
|
1078
1124
|
return list(model_endpoint_objects_by_uid.values())
|
|
1125
|
+
|
|
1126
|
+
def _enrich_mep_with_last_request(
|
|
1127
|
+
self,
|
|
1128
|
+
model_endpoint_objects_by_uid: dict[str, mlrun.common.schemas.ModelEndpoint],
|
|
1129
|
+
):
|
|
1130
|
+
last_request_dictionary = self.get_last_request(
|
|
1131
|
+
endpoint_ids=list(model_endpoint_objects_by_uid.keys())
|
|
1132
|
+
)
|
|
1133
|
+
for uid, mep in model_endpoint_objects_by_uid.items():
|
|
1134
|
+
mep.status.last_request = last_request_dictionary.get(uid)
|
mlrun/serving/states.py
CHANGED
|
@@ -959,7 +959,7 @@ class ModelRunner(storey.ParallelExecution):
|
|
|
959
959
|
return self.model_selector.select(event, models)
|
|
960
960
|
|
|
961
961
|
|
|
962
|
-
class ModelRunnerStep(TaskStep):
|
|
962
|
+
class ModelRunnerStep(TaskStep, StepToDict):
|
|
963
963
|
"""
|
|
964
964
|
Runs multiple Models on each event.
|
|
965
965
|
|
|
@@ -981,29 +981,41 @@ class ModelRunnerStep(TaskStep):
|
|
|
981
981
|
model_selector: Optional[Union[str, ModelSelector]] = None,
|
|
982
982
|
**kwargs,
|
|
983
983
|
):
|
|
984
|
-
self._models = []
|
|
985
984
|
super().__init__(
|
|
986
985
|
*args,
|
|
987
986
|
class_name="mlrun.serving.ModelRunner",
|
|
988
|
-
class_args=dict(
|
|
987
|
+
class_args=dict(model_selector=model_selector),
|
|
989
988
|
**kwargs,
|
|
990
989
|
)
|
|
991
990
|
|
|
992
|
-
def add_model(self, model: Model) -> None:
|
|
993
|
-
"""
|
|
994
|
-
|
|
991
|
+
def add_model(self, model: Union[str, Model], **model_parameters) -> None:
|
|
992
|
+
"""
|
|
993
|
+
Add a Model to this ModelRunner.
|
|
994
|
+
|
|
995
|
+
:param model: Model class name or object
|
|
996
|
+
:param model_parameters: Parameters for model instantiation
|
|
997
|
+
"""
|
|
998
|
+
models = self.class_args.get("models", [])
|
|
999
|
+
models.append((model, model_parameters))
|
|
1000
|
+
self.class_args["models"] = models
|
|
995
1001
|
|
|
996
1002
|
def init_object(self, context, namespace, mode="sync", reset=False, **extra_kwargs):
|
|
997
1003
|
model_selector = self.class_args.get("model_selector")
|
|
1004
|
+
models = self.class_args.get("models")
|
|
998
1005
|
if isinstance(model_selector, str):
|
|
999
1006
|
model_selector = get_class(model_selector, namespace)()
|
|
1007
|
+
model_objects = []
|
|
1008
|
+
for model, model_params in models:
|
|
1009
|
+
if not isinstance(model, Model):
|
|
1010
|
+
model = get_class(model, namespace)(**model_params)
|
|
1011
|
+
model_objects.append(model)
|
|
1000
1012
|
self._async_object = ModelRunner(
|
|
1001
|
-
self.class_args.get("runnables"),
|
|
1002
1013
|
model_selector=model_selector,
|
|
1014
|
+
runnables=model_objects,
|
|
1003
1015
|
)
|
|
1004
1016
|
|
|
1005
1017
|
|
|
1006
|
-
class QueueStep(BaseStep):
|
|
1018
|
+
class QueueStep(BaseStep, StepToDict):
|
|
1007
1019
|
"""queue step, implement an async queue or represent a stream"""
|
|
1008
1020
|
|
|
1009
1021
|
kind = "queue"
|
|
@@ -1799,21 +1811,13 @@ def params_to_step(
|
|
|
1799
1811
|
|
|
1800
1812
|
class_args = class_args or {}
|
|
1801
1813
|
|
|
1802
|
-
if
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
step = cls.from_dict(struct)
|
|
1808
|
-
step.function = function
|
|
1809
|
-
step.full_event = full_event or step.full_event
|
|
1810
|
-
step.input_path = input_path or step.input_path
|
|
1811
|
-
step.result_path = result_path or step.result_path
|
|
1812
|
-
if kind == StepKinds.task:
|
|
1813
|
-
step.model_endpoint_creation_strategy = model_endpoint_creation_strategy
|
|
1814
|
-
step.endpoint_type = endpoint_type
|
|
1814
|
+
if isinstance(class_name, QueueStep):
|
|
1815
|
+
if not name or class_name.name:
|
|
1816
|
+
raise MLRunInvalidArgumentError("queue name must be specified")
|
|
1817
|
+
|
|
1818
|
+
step = class_name
|
|
1815
1819
|
|
|
1816
|
-
elif class_name
|
|
1820
|
+
elif class_name in queue_class_names:
|
|
1817
1821
|
if "path" not in class_args:
|
|
1818
1822
|
raise MLRunInvalidArgumentError(
|
|
1819
1823
|
"path=<stream path or None> must be specified for queues"
|
|
@@ -1826,6 +1830,20 @@ def params_to_step(
|
|
|
1826
1830
|
class_args["full_event"] = full_event
|
|
1827
1831
|
step = QueueStep(name, **class_args)
|
|
1828
1832
|
|
|
1833
|
+
elif class_name and hasattr(class_name, "to_dict"):
|
|
1834
|
+
struct = class_name.to_dict()
|
|
1835
|
+
kind = struct.get("kind", StepKinds.task)
|
|
1836
|
+
name = name or struct.get("name", struct.get("class_name"))
|
|
1837
|
+
cls = classes_map.get(kind, RootFlowStep)
|
|
1838
|
+
step = cls.from_dict(struct)
|
|
1839
|
+
step.function = function
|
|
1840
|
+
step.full_event = full_event or step.full_event
|
|
1841
|
+
step.input_path = input_path or step.input_path
|
|
1842
|
+
step.result_path = result_path or step.result_path
|
|
1843
|
+
if kind == StepKinds.task:
|
|
1844
|
+
step.model_endpoint_creation_strategy = model_endpoint_creation_strategy
|
|
1845
|
+
step.endpoint_type = endpoint_type
|
|
1846
|
+
|
|
1829
1847
|
elif class_name and class_name.startswith("*"):
|
|
1830
1848
|
routes = class_args.get("routes", None)
|
|
1831
1849
|
class_name = class_name[1:]
|
mlrun/utils/version/version.json
CHANGED
|
@@ -73,7 +73,7 @@ mlrun/common/schemas/serving.py,sha256=81ZxlDHP1fm9VPmXZGkjZj2n6cVRmqEN478hsmvv5
|
|
|
73
73
|
mlrun/common/schemas/tag.py,sha256=HRZi5QZ4vVGaCr2AMk9eJgcNiAIXmH4YDc8a4fvF770,893
|
|
74
74
|
mlrun/common/schemas/workflow.py,sha256=6u9niXfXpV-_c2rZL97gFIdAnOfM5WK-OCbrM5Kk34s,2108
|
|
75
75
|
mlrun/common/schemas/model_monitoring/__init__.py,sha256=SxHG-GIdcTEuFxpKzkUdT9zKaU5Xqz9qF1uCwXvZ2z8,1709
|
|
76
|
-
mlrun/common/schemas/model_monitoring/constants.py,sha256=
|
|
76
|
+
mlrun/common/schemas/model_monitoring/constants.py,sha256=BWGNxOUoXMcR2epGck_UId1C33bbmxhLwgQYktIrPxE,12462
|
|
77
77
|
mlrun/common/schemas/model_monitoring/grafana.py,sha256=THQlLfPBevBksta8p5OaIsBaJtsNSXexLvHrDxOaVns,2095
|
|
78
78
|
mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=O0i-pvzcXJVgf9E_tNcudDTa1xLaJchzPGfZZ8MNdD4,11482
|
|
79
79
|
mlrun/data_types/__init__.py,sha256=unRo9GGwCmj0hBKBRsXJ2P4BzpQaddlQTvIrVQaKluI,984
|
|
@@ -112,20 +112,21 @@ mlrun/db/base.py,sha256=U77W97LMeVGRmXHH_gafZE95TiFLcI27HJVkAmLTPaQ,30788
|
|
|
112
112
|
mlrun/db/factory.py,sha256=yP2vVmveUE7LYTCHbS6lQIxP9rW--zdISWuPd_I3d_4,2111
|
|
113
113
|
mlrun/db/httpdb.py,sha256=O1PCDOfax3YdwAlYKj-nALcBVTBM9EHWQyhQwNlJS44,231559
|
|
114
114
|
mlrun/db/nopdb.py,sha256=kjvoaWWc4OmQ7AdQKomtRzviJy1_dK3jdMCJNkic34o,27223
|
|
115
|
-
mlrun/feature_store/__init__.py,sha256=
|
|
116
|
-
mlrun/feature_store/api.py,sha256=
|
|
115
|
+
mlrun/feature_store/__init__.py,sha256=SlI845bWt6xX34SXunHHqhmFAR9-5v2ak8N-qpcAPGo,1328
|
|
116
|
+
mlrun/feature_store/api.py,sha256=qKj5Tk6prTab6XWatWhBuPRVp0eJEctoxRMN2wz48vA,32168
|
|
117
117
|
mlrun/feature_store/common.py,sha256=Z7USI-d1fo0iwBMsqMBtJflJfyuiV3BLoDXQPSAoBAs,12826
|
|
118
118
|
mlrun/feature_store/feature_set.py,sha256=lakkuKYAvYDJKDTE0xJa5n1nEipMPwpLki-J3CMk0mQ,56221
|
|
119
|
-
mlrun/feature_store/feature_vector.py,sha256=
|
|
119
|
+
mlrun/feature_store/feature_vector.py,sha256=DY7wUx3ifqWqjzLliCnZcosbMFsIY0WDeF4ToDQcXd8,31068
|
|
120
|
+
mlrun/feature_store/feature_vector_utils.py,sha256=1EIzCG5dtZu-lbvVP68yv2u8NkWo-aSin-uH5iLMByM,17189
|
|
120
121
|
mlrun/feature_store/ingestion.py,sha256=kT3Hbz1PBjsJd-GPBm2ap0sg9-fiXxaSXoEIo-dOXpU,11361
|
|
121
122
|
mlrun/feature_store/steps.py,sha256=IXvxKxTAxkeeZQmbHp7CkqmkfBYGnMaP8OBv-7moj2M,29327
|
|
122
123
|
mlrun/feature_store/retrieval/__init__.py,sha256=bwA4copPpLQi8fyoUAYtOyrlw0-6f3-Knct8GbJSvRg,1282
|
|
123
|
-
mlrun/feature_store/retrieval/base.py,sha256=
|
|
124
|
+
mlrun/feature_store/retrieval/base.py,sha256=ehopCTJA75mv8YQph5JEzWpErl6EvVXvU393SnHcxSU,30434
|
|
124
125
|
mlrun/feature_store/retrieval/dask_merger.py,sha256=t60xciYp6StUQLEyFyI4JK5NpWkdBy2MGCs6beimaWU,5575
|
|
125
126
|
mlrun/feature_store/retrieval/job.py,sha256=_EltjdbAuQgBUTNzGdlz58Ite1QqFBCnX61Kr1VdW04,8631
|
|
126
127
|
mlrun/feature_store/retrieval/local_merger.py,sha256=jM-8ta44PeNUc1cKMPs-TxrO9t8pXbwu_Tw8MZrLxUY,4513
|
|
127
128
|
mlrun/feature_store/retrieval/spark_merger.py,sha256=XTMK40Y0bUli1Z9KwtYmMSQ8a4WOHEHzIq9uzk1mfc4,10548
|
|
128
|
-
mlrun/feature_store/retrieval/storey_merger.py,sha256=
|
|
129
|
+
mlrun/feature_store/retrieval/storey_merger.py,sha256=gzqK1K2xtgFmreZDL5Y6U6MNunOIdS75bhzGmP38wRE,6320
|
|
129
130
|
mlrun/frameworks/__init__.py,sha256=f-iaBYrQ3Qtu_Jh482ZosSZppI0M_JeeXuDhoLcZTBk,641
|
|
130
131
|
mlrun/frameworks/parallel_coordinates.py,sha256=UuZ0b0ACsaaH0rDya_0YMOWwaH6zhEyDIssOwEgqOAo,11588
|
|
131
132
|
mlrun/frameworks/_common/__init__.py,sha256=1ovfHxNW8V9ERVVZx8lPFVGBtsXHaHli7pZPR-Ixn8g,860
|
|
@@ -218,7 +219,7 @@ mlrun/launcher/local.py,sha256=775HY-8S9LFUX5ubGXrLO0N1lVh8bn-DHFmNYuNqQPA,11451
|
|
|
218
219
|
mlrun/launcher/remote.py,sha256=rLJW4UAnUT5iUb4BsGBOAV3K4R29a0X4lFtRkVKlyYU,7709
|
|
219
220
|
mlrun/model_monitoring/__init__.py,sha256=ELy7njEtZnz09Dc6PGZSFFEGtnwI15bJNWM3Pj4_YIs,753
|
|
220
221
|
mlrun/model_monitoring/api.py,sha256=nkNlBq_X12tGgs4rbVutzq-ce9P49zAyg_hvffwmz7I,27544
|
|
221
|
-
mlrun/model_monitoring/controller.py,sha256=
|
|
222
|
+
mlrun/model_monitoring/controller.py,sha256=kRKoI47YMAhL8YdqD5D7n8fX4vqcX4uWDl6gi5WVnqA,31698
|
|
222
223
|
mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
|
|
223
224
|
mlrun/model_monitoring/helpers.py,sha256=Q4vcc7x41lCJdFQIE8UFPY0WIQ8a-4tSGhziMA4ib4w,22003
|
|
224
225
|
mlrun/model_monitoring/stream_processing.py,sha256=4M0H4txMlsC2Q5iKTPp992KWoNPAJjPHj9rqWhXbl8w,33321
|
|
@@ -236,15 +237,15 @@ mlrun/model_monitoring/db/__init__.py,sha256=r47xPGZpIfMuv8J3PQCZTSqVPMhUta4sSJC
|
|
|
236
237
|
mlrun/model_monitoring/db/_schedules.py,sha256=AKyCJBAt0opNE3K3pg2TjCoD_afk1LKw5TY88rLQ2VA,6097
|
|
237
238
|
mlrun/model_monitoring/db/_stats.py,sha256=VVMWLMqG3Us3ozBkLaokJF22Ewv8WKmVE1-OvS_g9vA,6943
|
|
238
239
|
mlrun/model_monitoring/db/tsdb/__init__.py,sha256=4S86V_Ot_skE16SLkw0WwsaAUB0ECH6SoJdp-TIu6s8,4645
|
|
239
|
-
mlrun/model_monitoring/db/tsdb/base.py,sha256=
|
|
240
|
+
mlrun/model_monitoring/db/tsdb/base.py,sha256=55lZfKmAWPW_Zi8DJhGib6euYhRhNxEpj528_rfh9Ww,26894
|
|
240
241
|
mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
|
|
241
242
|
mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
|
|
242
243
|
mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=EslhaR65jfeNdD5Ibk-3Hb4e5r5qYPfHb9rTChX3sG0,12689
|
|
243
244
|
mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Uadj0UvAmln2MxDWod-kAzau1uNlqZh981rPhbUH_5M,2857
|
|
244
|
-
mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=
|
|
245
|
+
mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=gDK6nNbAwTprs2UAI1r7r6loZB40I_8iQ2JvedvAs78,37765
|
|
245
246
|
mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
|
|
246
247
|
mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=_-zo9relCDtjGgievxAcAP9gVN9nDWs8BzGtFwTjb9M,6284
|
|
247
|
-
mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=
|
|
248
|
+
mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=4jpHjG_xV6RePyrw2Xg_Y1netMorMDeZHPtU_2YZlog,44719
|
|
248
249
|
mlrun/model_monitoring/metrics/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
|
|
249
250
|
mlrun/model_monitoring/metrics/histogram_distance.py,sha256=E9_WIl2vd6qNvoHVHoFcnuQk3ekbFWOdi8aU7sHrfk4,4724
|
|
250
251
|
mlrun/package/__init__.py,sha256=v7VDyK9kDOOuDvFo4oiGV2fx-vM1KL7fdN9pGLakhUQ,7008
|
|
@@ -305,7 +306,7 @@ mlrun/serving/remote.py,sha256=gxJkj_J3j-sZcVUbUzbAmJafP6t6y4NVFsu0kWmYngA,18818
|
|
|
305
306
|
mlrun/serving/routers.py,sha256=SY6AsaiSnh8ssXq8hQE2z9MYapOxFOFJBx9QomiZMO8,53915
|
|
306
307
|
mlrun/serving/server.py,sha256=KiNhW0nTV5STZPzR6kEAUFVzCCAX8qv0g9AoCopARrM,23429
|
|
307
308
|
mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
|
|
308
|
-
mlrun/serving/states.py,sha256=
|
|
309
|
+
mlrun/serving/states.py,sha256=Kst2N7R5SaTKYMYB8re9wTlhQwEDgkG61-4JtROKlNI,72803
|
|
309
310
|
mlrun/serving/utils.py,sha256=k2EIYDWHUGkE-IBI6T0UNT32fw-KySsccIJM_LObI00,4171
|
|
310
311
|
mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
|
|
311
312
|
mlrun/serving/v2_serving.py,sha256=nMxaFcc7vzjIYDqZMRGkMcvm2VxwnTCKocoYLByQdbw,23121
|
|
@@ -339,11 +340,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
|
|
|
339
340
|
mlrun/utils/notifications/notification/slack.py,sha256=eQvmctTh6wIG5xVOesLLV9S1-UUCu5UEQ9JIJOor3ts,7183
|
|
340
341
|
mlrun/utils/notifications/notification/webhook.py,sha256=NeyIMSBojjjTJaUHmPbxMByp34GxYkl1-16NqzU27fU,4943
|
|
341
342
|
mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
|
|
342
|
-
mlrun/utils/version/version.json,sha256=
|
|
343
|
+
mlrun/utils/version/version.json,sha256=ciygJ1gAo0RxZORLqRbG9wRR1xO-sfHP3MdbVhPBs0Y,89
|
|
343
344
|
mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
|
|
344
|
-
mlrun-1.8.
|
|
345
|
-
mlrun-1.8.
|
|
346
|
-
mlrun-1.8.
|
|
347
|
-
mlrun-1.8.
|
|
348
|
-
mlrun-1.8.
|
|
349
|
-
mlrun-1.8.
|
|
345
|
+
mlrun-1.8.0rc44.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
346
|
+
mlrun-1.8.0rc44.dist-info/METADATA,sha256=P7-B2qIlhAydIA_24hVz9_SpUYvtyOwCCtm5R7YKoWY,25986
|
|
347
|
+
mlrun-1.8.0rc44.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
|
|
348
|
+
mlrun-1.8.0rc44.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
349
|
+
mlrun-1.8.0rc44.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
350
|
+
mlrun-1.8.0rc44.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|