mlrun 1.10.0rc15__py3-none-any.whl → 1.10.0rc17__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/artifacts/llm_prompt.py +6 -0
- mlrun/common/constants.py +3 -0
- mlrun/common/schemas/__init__.py +1 -0
- mlrun/common/schemas/model_monitoring/__init__.py +1 -0
- mlrun/common/schemas/model_monitoring/constants.py +19 -0
- mlrun/common/schemas/serving.py +3 -0
- mlrun/common/schemas/workflow.py +3 -0
- mlrun/config.py +1 -5
- mlrun/db/base.py +7 -0
- mlrun/db/httpdb.py +26 -0
- mlrun/db/nopdb.py +5 -0
- mlrun/launcher/local.py +13 -0
- mlrun/model_monitoring/controller.py +175 -121
- mlrun/model_monitoring/stream_processing.py +29 -2
- mlrun/projects/pipelines.py +44 -24
- mlrun/projects/project.py +7 -3
- mlrun/runtimes/utils.py +0 -2
- mlrun/serving/server.py +125 -38
- mlrun/serving/states.py +119 -62
- mlrun/serving/system_steps.py +100 -64
- mlrun/utils/helpers.py +46 -0
- mlrun/utils/version/version.json +2 -2
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/METADATA +1 -1
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/RECORD +28 -28
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/WHEEL +0 -0
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/entry_points.txt +0 -0
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/licenses/LICENSE +0 -0
- {mlrun-1.10.0rc15.dist-info → mlrun-1.10.0rc17.dist-info}/top_level.txt +0 -0
mlrun/serving/system_steps.py
CHANGED
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import random
|
|
16
|
-
from copy import deepcopy
|
|
17
16
|
from datetime import timedelta
|
|
18
17
|
from typing import Any, Optional, Union
|
|
19
18
|
|
|
19
|
+
import numpy as np
|
|
20
20
|
import storey
|
|
21
21
|
|
|
22
22
|
import mlrun
|
|
@@ -24,7 +24,7 @@ import mlrun.artifacts
|
|
|
24
24
|
import mlrun.common.schemas.model_monitoring as mm_schemas
|
|
25
25
|
import mlrun.serving
|
|
26
26
|
from mlrun.common.schemas import MonitoringData
|
|
27
|
-
from mlrun.utils import logger
|
|
27
|
+
from mlrun.utils import get_data_from_path, logger
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class MonitoringPreProcessor(storey.MapClass):
|
|
@@ -45,24 +45,13 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
45
45
|
result_path = model_monitoring_data.get(MonitoringData.RESULT_PATH)
|
|
46
46
|
input_path = model_monitoring_data.get(MonitoringData.INPUT_PATH)
|
|
47
47
|
|
|
48
|
-
result =
|
|
49
|
-
result_path, event.body.get(model, event.body)
|
|
50
|
-
)
|
|
48
|
+
result = get_data_from_path(result_path, event.body.get(model, event.body))
|
|
51
49
|
output_schema = model_monitoring_data.get(MonitoringData.OUTPUTS)
|
|
52
50
|
input_schema = model_monitoring_data.get(MonitoringData.INPUTS)
|
|
53
51
|
logger.debug("output schema retrieved", output_schema=output_schema)
|
|
54
52
|
if isinstance(result, dict):
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
outputs = self.transpose_by_key(result, output_schema)
|
|
58
|
-
elif len(result) == 1:
|
|
59
|
-
outputs = (
|
|
60
|
-
result[output_schema[0]]
|
|
61
|
-
if output_schema
|
|
62
|
-
else list(result.values())[0]
|
|
63
|
-
)
|
|
64
|
-
else:
|
|
65
|
-
outputs = []
|
|
53
|
+
# transpose by key the outputs:
|
|
54
|
+
outputs = self.transpose_by_key(result, output_schema)
|
|
66
55
|
if not output_schema:
|
|
67
56
|
logger.warn(
|
|
68
57
|
"Output schema was not provided using Project:log_model or by ModelRunnerStep:add_model order "
|
|
@@ -72,16 +61,14 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
72
61
|
outputs = result
|
|
73
62
|
|
|
74
63
|
event_inputs = event._metadata.get("inputs", {})
|
|
75
|
-
event_inputs =
|
|
64
|
+
event_inputs = get_data_from_path(input_path, event_inputs)
|
|
76
65
|
if isinstance(event_inputs, dict):
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if input_schema
|
|
84
|
-
else list(result.values())[0]
|
|
66
|
+
# transpose by key the inputs:
|
|
67
|
+
inputs = self.transpose_by_key(event_inputs, input_schema)
|
|
68
|
+
if not input_schema:
|
|
69
|
+
logger.warn(
|
|
70
|
+
"Input schema was not provided using by ModelRunnerStep:add_model, order "
|
|
71
|
+
"may not preserved"
|
|
85
72
|
)
|
|
86
73
|
else:
|
|
87
74
|
inputs = event_inputs
|
|
@@ -104,6 +91,11 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
104
91
|
output_len=len(outputs),
|
|
105
92
|
schema_len=len(output_schema),
|
|
106
93
|
)
|
|
94
|
+
if len(inputs) != len(outputs):
|
|
95
|
+
logger.warn(
|
|
96
|
+
"outputs and inputs are not in the same length check 'input_path' and "
|
|
97
|
+
"'output_path' was specified if needed"
|
|
98
|
+
)
|
|
107
99
|
request = {"inputs": inputs, "id": getattr(event, "id", None)}
|
|
108
100
|
resp = {"outputs": outputs}
|
|
109
101
|
|
|
@@ -111,41 +103,77 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
111
103
|
|
|
112
104
|
@staticmethod
|
|
113
105
|
def transpose_by_key(
|
|
114
|
-
|
|
115
|
-
) -> list[list[
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if not schema
|
|
119
|
-
else [data_to_transpose[key] for key in schema]
|
|
120
|
-
)
|
|
121
|
-
if values and not isinstance(values[0], list):
|
|
122
|
-
values = [values]
|
|
123
|
-
transposed = (
|
|
124
|
-
list(map(list, zip(*values)))
|
|
125
|
-
if all(isinstance(v, list) for v in values) and len(values) > 1
|
|
126
|
-
else values
|
|
127
|
-
)
|
|
128
|
-
return transposed
|
|
106
|
+
data: dict, schema: Optional[Union[str, list[str]]] = None
|
|
107
|
+
) -> Union[list[Any], list[list[Any]]]:
|
|
108
|
+
"""
|
|
109
|
+
Transpose values from a dictionary by keys.
|
|
129
110
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
111
|
+
Given a dictionary and an optional schema (a key or list of keys), this function:
|
|
112
|
+
- Extracts the values for the specified keys (or all keys if no schema is provided).
|
|
113
|
+
- Ensures the data is represented as a list of rows, then transposes it (i.e., switches rows to columns).
|
|
114
|
+
- Handles edge cases:
|
|
115
|
+
* If a single scalar or single-element list is provided, returns a flat list.
|
|
116
|
+
* If a single key is provided (as a string or a list with one element), handles it properly.
|
|
117
|
+
* If only one row with len of one remains after transposition, unwraps it to avoid nested list-of-one.
|
|
118
|
+
|
|
119
|
+
Example::
|
|
120
|
+
|
|
121
|
+
transpose_by_key({"a": 1})
|
|
122
|
+
# returns: [1]
|
|
123
|
+
|
|
124
|
+
transpose_by_key({"a": [1, 2]})
|
|
125
|
+
# returns: [1 ,2]
|
|
126
|
+
|
|
127
|
+
transpose_by_key({"a": [1, 2], "b": [3, 4]})
|
|
128
|
+
# returns: [[1, 3], [2, 4]]
|
|
129
|
+
|
|
130
|
+
:param data: Dictionary with values that are either scalars or lists.
|
|
131
|
+
:param schema: Optional key or list of keys to extract. If not provided, all keys are used.
|
|
132
|
+
Can be a string (single key) or a list of strings.
|
|
133
|
+
|
|
134
|
+
:return: Transposed values:
|
|
135
|
+
* If result is a single column or row, returns a flat list.
|
|
136
|
+
* If result is a matrix, returns a list of lists.
|
|
137
|
+
|
|
138
|
+
:raises ValueError: If the values include a mix of scalars and lists, or if the list lengths do not match.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
# Normalize schema to list
|
|
142
|
+
if not schema:
|
|
143
|
+
keys = list(data.keys())
|
|
144
|
+
elif isinstance(schema, str):
|
|
145
|
+
keys = [schema]
|
|
142
146
|
else:
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
keys = schema
|
|
148
|
+
|
|
149
|
+
values = [data[key] for key in keys if key in data]
|
|
150
|
+
if len(values) != len(keys):
|
|
151
|
+
raise mlrun.MLRunInvalidArgumentError(
|
|
152
|
+
f"Schema keys {keys} do not match the data keys {list(data.keys())}."
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
# Detect if all are scalars ie: int,float,str
|
|
156
|
+
all_scalars = all(not isinstance(v, (list, tuple, np.ndarray)) for v in values)
|
|
157
|
+
all_lists = all(isinstance(v, (list, tuple, np.ndarray)) for v in values)
|
|
158
|
+
|
|
159
|
+
if not (all_scalars or all_lists):
|
|
160
|
+
raise ValueError(
|
|
161
|
+
"All values must be either scalars or lists of equal length."
|
|
145
162
|
)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
163
|
+
|
|
164
|
+
if all_scalars:
|
|
165
|
+
transposed = np.array([values], dtype=object)
|
|
166
|
+
elif all_lists and len(keys) > 1:
|
|
167
|
+
arrays = [np.array(v, dtype=object) for v in values]
|
|
168
|
+
mat = np.stack(arrays, axis=0)
|
|
169
|
+
transposed = mat.T
|
|
170
|
+
else:
|
|
171
|
+
return values[0]
|
|
172
|
+
|
|
173
|
+
if transposed.shape[1] == 1 and transposed.shape[0] == 1:
|
|
174
|
+
# Transform [[0]] -> [0]:
|
|
175
|
+
return transposed[:, 0].tolist()
|
|
176
|
+
return transposed.tolist()
|
|
149
177
|
|
|
150
178
|
def do(self, event):
|
|
151
179
|
monitoring_event_list = []
|
|
@@ -168,6 +196,12 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
168
196
|
request, resp = self.reconstruct_request_resp_fields(
|
|
169
197
|
event, model, monitoring_data[model]
|
|
170
198
|
)
|
|
199
|
+
if hasattr(event, "_original_timestamp"):
|
|
200
|
+
when = event._original_timestamp
|
|
201
|
+
else:
|
|
202
|
+
when = event._metadata.get(model, {}).get(
|
|
203
|
+
mm_schemas.StreamProcessingEvent.WHEN
|
|
204
|
+
)
|
|
171
205
|
monitoring_event_list.append(
|
|
172
206
|
{
|
|
173
207
|
mm_schemas.StreamProcessingEvent.MODEL: model,
|
|
@@ -177,9 +211,7 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
177
211
|
mm_schemas.StreamProcessingEvent.MICROSEC: event._metadata.get(
|
|
178
212
|
model, {}
|
|
179
213
|
).get(mm_schemas.StreamProcessingEvent.MICROSEC),
|
|
180
|
-
mm_schemas.StreamProcessingEvent.WHEN:
|
|
181
|
-
model, {}
|
|
182
|
-
).get(mm_schemas.StreamProcessingEvent.WHEN),
|
|
214
|
+
mm_schemas.StreamProcessingEvent.WHEN: when,
|
|
183
215
|
mm_schemas.StreamProcessingEvent.ENDPOINT_ID: monitoring_data[
|
|
184
216
|
model
|
|
185
217
|
].get(
|
|
@@ -212,6 +244,10 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
212
244
|
request, resp = self.reconstruct_request_resp_fields(
|
|
213
245
|
event, model, monitoring_data[model]
|
|
214
246
|
)
|
|
247
|
+
if hasattr(event, "_original_timestamp"):
|
|
248
|
+
when = event._original_timestamp
|
|
249
|
+
else:
|
|
250
|
+
when = event._metadata.get(mm_schemas.StreamProcessingEvent.WHEN)
|
|
215
251
|
monitoring_event_list.append(
|
|
216
252
|
{
|
|
217
253
|
mm_schemas.StreamProcessingEvent.MODEL: model,
|
|
@@ -221,9 +257,7 @@ class MonitoringPreProcessor(storey.MapClass):
|
|
|
221
257
|
mm_schemas.StreamProcessingEvent.MICROSEC: event._metadata.get(
|
|
222
258
|
mm_schemas.StreamProcessingEvent.MICROSEC
|
|
223
259
|
),
|
|
224
|
-
mm_schemas.StreamProcessingEvent.WHEN:
|
|
225
|
-
mm_schemas.StreamProcessingEvent.WHEN
|
|
226
|
-
),
|
|
260
|
+
mm_schemas.StreamProcessingEvent.WHEN: when,
|
|
227
261
|
mm_schemas.StreamProcessingEvent.ENDPOINT_ID: monitoring_data[
|
|
228
262
|
model
|
|
229
263
|
].get(mlrun.common.schemas.MonitoringData.MODEL_ENDPOINT_UID),
|
|
@@ -337,7 +371,9 @@ class SamplingStep(storey.MapClass):
|
|
|
337
371
|
event=event,
|
|
338
372
|
sampling_percentage=self.sampling_percentage,
|
|
339
373
|
)
|
|
340
|
-
if self.sampling_percentage != 100
|
|
374
|
+
if self.sampling_percentage != 100 and not event.get(
|
|
375
|
+
mm_schemas.StreamProcessingEvent.ERROR
|
|
376
|
+
):
|
|
341
377
|
request = event[mm_schemas.StreamProcessingEvent.REQUEST]
|
|
342
378
|
num_of_inputs = len(request["inputs"])
|
|
343
379
|
sampled_requests_indices = self._pick_random_requests(
|
mlrun/utils/helpers.py
CHANGED
|
@@ -29,6 +29,7 @@ import traceback
|
|
|
29
29
|
import typing
|
|
30
30
|
import uuid
|
|
31
31
|
import warnings
|
|
32
|
+
from copy import deepcopy
|
|
32
33
|
from datetime import datetime, timedelta, timezone
|
|
33
34
|
from importlib import import_module, reload
|
|
34
35
|
from os import path
|
|
@@ -786,6 +787,22 @@ def generate_artifact_uri(
|
|
|
786
787
|
return artifact_uri
|
|
787
788
|
|
|
788
789
|
|
|
790
|
+
def remove_tag_from_artifact_uri(uri: str) -> Optional[str]:
|
|
791
|
+
"""
|
|
792
|
+
Remove the `:<tag>` part from a URI with pattern:
|
|
793
|
+
[store://][<project>/]<key>[#<iter>][:<tag>][@<tree>][^<uid>]
|
|
794
|
+
|
|
795
|
+
Returns the URI without the tag section.
|
|
796
|
+
|
|
797
|
+
Examples:
|
|
798
|
+
"store://proj/key:latest" => "store://proj/key"
|
|
799
|
+
"key#1:dev@tree^uid" => "key#1@tree^uid"
|
|
800
|
+
"store://key:tag" => "store://key"
|
|
801
|
+
"store://models/remote-model-project/my_model#0@tree" => unchanged (no tag)
|
|
802
|
+
"""
|
|
803
|
+
return re.sub(r"(?<=/[^/:]\+):[^@^:\s]+(?=(@|\^|$))", "", uri)
|
|
804
|
+
|
|
805
|
+
|
|
789
806
|
def extend_hub_uri_if_needed(uri) -> tuple[str, bool]:
|
|
790
807
|
"""
|
|
791
808
|
Retrieve the full uri of the item's yaml in the hub.
|
|
@@ -2376,3 +2393,32 @@ def encode_user_code(
|
|
|
2376
2393
|
"Consider using `with_source_archive` to add user code as a remote source to the function."
|
|
2377
2394
|
)
|
|
2378
2395
|
return encoded
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
def split_path(path: str) -> typing.Union[str, list[str], None]:
|
|
2399
|
+
if path is not None:
|
|
2400
|
+
parsed_path = path.split(".")
|
|
2401
|
+
if len(parsed_path) == 1:
|
|
2402
|
+
parsed_path = parsed_path[0]
|
|
2403
|
+
return parsed_path
|
|
2404
|
+
return path
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
def get_data_from_path(
|
|
2408
|
+
path: typing.Union[str, list[str], None], data: dict
|
|
2409
|
+
) -> dict[str, Any]:
|
|
2410
|
+
if isinstance(path, str):
|
|
2411
|
+
output_data = data.get(path)
|
|
2412
|
+
elif isinstance(path, list):
|
|
2413
|
+
output_data = deepcopy(data)
|
|
2414
|
+
for key in path:
|
|
2415
|
+
output_data = output_data.get(key, {})
|
|
2416
|
+
elif path is None:
|
|
2417
|
+
output_data = data
|
|
2418
|
+
else:
|
|
2419
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
2420
|
+
"Expected path be of type str or list of str or None"
|
|
2421
|
+
)
|
|
2422
|
+
if isinstance(output_data, (int, float)):
|
|
2423
|
+
output_data = [output_data]
|
|
2424
|
+
return output_data
|
mlrun/utils/version/version.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
mlrun/__init__.py,sha256=Y_AFhZV1hEx4vfiO-cyjup0aLGcp6R0SeL75GqLFQrc,7514
|
|
2
2
|
mlrun/__main__.py,sha256=wQNaxW7QsqFBtWffnPkw-497fnpsrQzUnscBQQAP_UM,48364
|
|
3
|
-
mlrun/config.py,sha256=
|
|
3
|
+
mlrun/config.py,sha256=c3F899B20Xe_wpO7cg9G5jEM7iMxfK92LaNxPKnQTyg,72306
|
|
4
4
|
mlrun/errors.py,sha256=bAk0t_qmCxQSPNK0TugOAfA5R6f0G6OYvEvXUWSJ_5U,9062
|
|
5
5
|
mlrun/execution.py,sha256=dJ4PFwg5AlDHbCL2Q9dVDjWA_i64UTq2qBiF8kTU9tw,56922
|
|
6
6
|
mlrun/features.py,sha256=jMEXo6NB36A6iaxNEJWzdtYwUmglYD90OIKTIEeWhE8,15841
|
|
@@ -18,12 +18,12 @@ mlrun/artifacts/base.py,sha256=6x_2KPMNOciiNNUsiKgJ-b6ejxAHm_Ro22xODLoTc44,28559
|
|
|
18
18
|
mlrun/artifacts/dataset.py,sha256=bhb5Kfbs8P28yjnpN76th5lLEUl5nAqD4VqVzHEVPrM,16421
|
|
19
19
|
mlrun/artifacts/document.py,sha256=p5HsWdmIIJ0NahS7y3EEQN2tfHtUrUmUG-8BEEyi_Jc,17373
|
|
20
20
|
mlrun/artifacts/helpers.py,sha256=ejTEC9vkI2w5FHn5Gopw3VEIxuni0bazWUnR6BBWZfU,1662
|
|
21
|
-
mlrun/artifacts/llm_prompt.py,sha256=
|
|
21
|
+
mlrun/artifacts/llm_prompt.py,sha256=mwImD34RAXp2lC5YEUfjD_iwuQr705ZjOHbDtMh4JVI,9555
|
|
22
22
|
mlrun/artifacts/manager.py,sha256=_cDNCS7wwmFIsucJ2uOgHxZQECmIGb8Wye64b6oLgKU,16642
|
|
23
23
|
mlrun/artifacts/model.py,sha256=8EVaD70SOkTohQIWqkDk0MEwskdofxs3wJTgspa2sho,25615
|
|
24
24
|
mlrun/artifacts/plots.py,sha256=wmaxVXiAPSCyn3M7pIlcBu9pP3O8lrq0Ewx6iHRDF9s,4238
|
|
25
25
|
mlrun/common/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
26
|
-
mlrun/common/constants.py,sha256=
|
|
26
|
+
mlrun/common/constants.py,sha256=BDxV8kAAf8D2W-gsa7IP8HJe5da-sPwVUfiodQ1O7kI,4127
|
|
27
27
|
mlrun/common/helpers.py,sha256=DIdqs_eN3gO5bZ8iFobIvx8cEiOxYxhFIyut6-O69T0,1385
|
|
28
28
|
mlrun/common/secrets.py,sha256=8g9xtIw-9DGcwiZRT62a5ozSQM-aYo8yK5Ghey9WM0g,5179
|
|
29
29
|
mlrun/common/types.py,sha256=1gxThbmC0Vd0U1ffIkEwz4T4S7JOgHt70rvw8TCO21c,1073
|
|
@@ -41,7 +41,7 @@ mlrun/common/formatters/run.py,sha256=LlqhhVY4dAp5y17k_sWBtHaJogdNdtJWF0iO9sX-bU
|
|
|
41
41
|
mlrun/common/model_monitoring/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
42
42
|
mlrun/common/model_monitoring/helpers.py,sha256=AkuHz4u318MEP4ebxmNWlNXh6HiNLrI5oF7QvJiJkYc,2707
|
|
43
43
|
mlrun/common/runtimes/constants.py,sha256=CGMHE2gdsNHXNsa-u3eL0o8sQmDs6PN5FLpMlCDClns,12218
|
|
44
|
-
mlrun/common/schemas/__init__.py,sha256=
|
|
44
|
+
mlrun/common/schemas/__init__.py,sha256=HbnF4nd6jIGbej9Qj6WYjajIr44f3vYNpgWyeLk7N6I,5486
|
|
45
45
|
mlrun/common/schemas/alert.py,sha256=u6INAHBhQIfm-mMsGqDJo1_JDN6gOuWZa-8fOU-aOUE,10182
|
|
46
46
|
mlrun/common/schemas/api_gateway.py,sha256=bgC3vXbyb1SVwsSZkLXtEoQLCe_QDKpIhAVX3X_HWW4,7126
|
|
47
47
|
mlrun/common/schemas/artifact.py,sha256=JojMRRa4n0Rge2olGOpUyp348hkTGsMEnvUBRSoo4oE,4310
|
|
@@ -71,11 +71,11 @@ mlrun/common/schemas/runs.py,sha256=yKY29ByTS4SruWQyPpDNFGulMrcT9Ms-3lnwBUDp3us,
|
|
|
71
71
|
mlrun/common/schemas/runtime_resource.py,sha256=TybJmCHJXmm1z3s5J1dd89TeFE6lG5t7vjcrf1R9YfE,1568
|
|
72
72
|
mlrun/common/schemas/schedule.py,sha256=L7z9Lp06-xmFmdp0q5PypCU_DCl6zZIyQTVoJa01gfM,4291
|
|
73
73
|
mlrun/common/schemas/secret.py,sha256=Td2UAeWHSAdA4nIP3rQv_PIVKVqcBnCnK6xjr528tS8,1486
|
|
74
|
-
mlrun/common/schemas/serving.py,sha256
|
|
74
|
+
mlrun/common/schemas/serving.py,sha256=4ek9JZDagkdeXyfkX6P6xp4deUNSf_kqXUaXcKSuv-g,1391
|
|
75
75
|
mlrun/common/schemas/tag.py,sha256=1wqEiAujsElojWb3qmuyfcaLFjXSNAAQdafkDx7fkn0,891
|
|
76
|
-
mlrun/common/schemas/workflow.py,sha256=
|
|
77
|
-
mlrun/common/schemas/model_monitoring/__init__.py,sha256=
|
|
78
|
-
mlrun/common/schemas/model_monitoring/constants.py,sha256=
|
|
76
|
+
mlrun/common/schemas/workflow.py,sha256=Y-FHJnxs5c86yetuOAPdEJPkne__tLPCxjSXSb4lrjo,2541
|
|
77
|
+
mlrun/common/schemas/model_monitoring/__init__.py,sha256=FqFiFIDcylquQdY0XTBamB5kMzMrMFEpVYM_ecsVfLg,1925
|
|
78
|
+
mlrun/common/schemas/model_monitoring/constants.py,sha256=spujh8a2GOb7pm8LksAQwndxPWSsjeyRub3ZVICdgNI,13685
|
|
79
79
|
mlrun/common/schemas/model_monitoring/functions.py,sha256=GpfSGp05D87wEKemECD3USL368pvnAM2WfS-nef5qOg,2210
|
|
80
80
|
mlrun/common/schemas/model_monitoring/grafana.py,sha256=THQlLfPBevBksta8p5OaIsBaJtsNSXexLvHrDxOaVns,2095
|
|
81
81
|
mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=aCrVqgoJsUEwvDJ84YFabDSy78CHcVBV3b0RdWj4JUw,13250
|
|
@@ -115,10 +115,10 @@ mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev
|
|
|
115
115
|
mlrun/datastore/wasbfs/fs.py,sha256=ge8NK__5vTcFT-krI155_8RDUywQw4SIRX6BWATXy9Q,6299
|
|
116
116
|
mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
|
|
117
117
|
mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
|
|
118
|
-
mlrun/db/base.py,sha256=
|
|
118
|
+
mlrun/db/base.py,sha256=QUncUfRYep_2Bsui7y-DduAEm8qdgIlWIYmrns-S7HA,32110
|
|
119
119
|
mlrun/db/factory.py,sha256=yP2vVmveUE7LYTCHbS6lQIxP9rW--zdISWuPd_I3d_4,2111
|
|
120
|
-
mlrun/db/httpdb.py,sha256=
|
|
121
|
-
mlrun/db/nopdb.py,sha256=
|
|
120
|
+
mlrun/db/httpdb.py,sha256=oSzc4zigDgu9S2Vs7Lkz_NY1Oc78OGyHN-xeV19nVtk,239397
|
|
121
|
+
mlrun/db/nopdb.py,sha256=kRWKEEI9LUskI3mp2ofTdAWVLov-99-nSMdaqhi3XT8,28194
|
|
122
122
|
mlrun/feature_store/__init__.py,sha256=SlI845bWt6xX34SXunHHqhmFAR9-5v2ak8N-qpcAPGo,1328
|
|
123
123
|
mlrun/feature_store/api.py,sha256=qKj5Tk6prTab6XWatWhBuPRVp0eJEctoxRMN2wz48vA,32168
|
|
124
124
|
mlrun/feature_store/common.py,sha256=JlQA7XWkg9fLuw7cXFmWpUneQqM3NBhwv7DU_xlenWI,12819
|
|
@@ -222,14 +222,14 @@ mlrun/launcher/__init__.py,sha256=JL8qkT1lLr1YvW6iP0hmwDTaSR2RfrMDx0-1gWRhTOE,57
|
|
|
222
222
|
mlrun/launcher/base.py,sha256=6T17geeplFgYL2Suu4xo5crN_s9JETtr1m0ael8dIYk,17225
|
|
223
223
|
mlrun/launcher/client.py,sha256=cl40ZdF2fU1QbUKdl4Xnucb1u2h-8_dn095qIUyxbuM,6402
|
|
224
224
|
mlrun/launcher/factory.py,sha256=RW7mfzEFi8fR0M-4W1JQg1iq3_muUU6OTqT_3l4Ubrk,2338
|
|
225
|
-
mlrun/launcher/local.py,sha256=
|
|
225
|
+
mlrun/launcher/local.py,sha256=3gv-IQYoIChSmRaZ0vLUh0Tu26oLMCx9GbBYh4fWygQ,12161
|
|
226
226
|
mlrun/launcher/remote.py,sha256=zFXE52Cq_7EkC8lfNKT0ceIbye0CfFiundF7O1YU4Xw,7810
|
|
227
227
|
mlrun/model_monitoring/__init__.py,sha256=qDQnncjya9XPTlfvGyfWsZWiXc-glGZrrNja-5QmCZk,782
|
|
228
228
|
mlrun/model_monitoring/api.py,sha256=lAsUp-gzqw8D1cpHVGA2_nPMYn5R4jdxk9UaGOiQ8fE,25945
|
|
229
|
-
mlrun/model_monitoring/controller.py,sha256=
|
|
229
|
+
mlrun/model_monitoring/controller.py,sha256=FVckATzREAzldj68D1KxcnKSdilgKUDRdqhRUf9XpWU,39592
|
|
230
230
|
mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
|
|
231
231
|
mlrun/model_monitoring/helpers.py,sha256=0xhIYKzhaBrgyjLiA_ekCZsXzi3GBXpLyG40Bhj-PTY,23596
|
|
232
|
-
mlrun/model_monitoring/stream_processing.py,sha256=
|
|
232
|
+
mlrun/model_monitoring/stream_processing.py,sha256=Mzn9Pelcblw8UzOFLGKb9oXOX0tkP2aoPcFbjtfHhcA,34247
|
|
233
233
|
mlrun/model_monitoring/writer.py,sha256=rGRFzSOkqZWvD3Y6sVk2H1Gepfnkzkp9ce00PsApTLo,8288
|
|
234
234
|
mlrun/model_monitoring/applications/__init__.py,sha256=MaH_n4GiqqQvSkntM5yQ7_FCANtM_IfgK-IJTdo4G_E,757
|
|
235
235
|
mlrun/model_monitoring/applications/_application_steps.py,sha256=t9LDIqQUGE10cyjyhlg0QqN1yVx0apD1HpERYLJfm8U,7409
|
|
@@ -276,8 +276,8 @@ mlrun/platforms/__init__.py,sha256=ZuyeHCHHUxYEoZRmaJqzFSfwhaTyUdBZXMeVp75ql1w,3
|
|
|
276
276
|
mlrun/platforms/iguazio.py,sha256=6VBTq8eQ3mzT96tzjYhAtcMQ2VjF4x8LpIPW5DAcX2Q,13749
|
|
277
277
|
mlrun/projects/__init__.py,sha256=hdCOA6_fp8X4qGGGT7Bj7sPbkM1PayWuaVZL0DkpuZw,1240
|
|
278
278
|
mlrun/projects/operations.py,sha256=Rc__P5ucNAY2G-lHc2LrnZs15PUbNFt8-NqNNT2Bjpk,20623
|
|
279
|
-
mlrun/projects/pipelines.py,sha256=
|
|
280
|
-
mlrun/projects/project.py,sha256=
|
|
279
|
+
mlrun/projects/pipelines.py,sha256=nGDzBABEOqoe9sWbax4SfF8CVLgrvK0NLWBadzEthVE,52219
|
|
280
|
+
mlrun/projects/project.py,sha256=a75Sj1lYzWNggTXIKxerSwy52YqNciGvrT2k-ddRmkQ,254149
|
|
281
281
|
mlrun/runtimes/__init__.py,sha256=8cqrYKy1a0_87XG7V_p96untQ4t8RocadM4LVEEN1JM,9029
|
|
282
282
|
mlrun/runtimes/base.py,sha256=FVEooeQMpwxIK2iW1R0FNbC5P1sZ_efKtJcsdNSYNmc,38266
|
|
283
283
|
mlrun/runtimes/daskjob.py,sha256=kR5sDQtXtXY_VGn5Y3mapjEEB5P6Lj30pSrPe1DqsAg,20077
|
|
@@ -289,7 +289,7 @@ mlrun/runtimes/local.py,sha256=R72VdrXnFdAhLsKJiWPOcfsi4jS-W5E1FnkT2Xllt8M,22150
|
|
|
289
289
|
mlrun/runtimes/mounts.py,sha256=2dkoktm3TXHe4XHmRhvC0UfvWzq2vy_13MeaW7wgyPo,18735
|
|
290
290
|
mlrun/runtimes/pod.py,sha256=AlA8B8OhyhZyP-C8Gvik_RxoVZsGSXgA7kZado82AQo,52253
|
|
291
291
|
mlrun/runtimes/remotesparkjob.py,sha256=BalAea66GleaKeoYTw6ZL1Qr4wf1yRxfgk1-Fkc9Pqg,7864
|
|
292
|
-
mlrun/runtimes/utils.py,sha256=
|
|
292
|
+
mlrun/runtimes/utils.py,sha256=ofHEOPiMVpQmgxnDhzpHoXBIS97q7QVHiN-UxVSMZkQ,16158
|
|
293
293
|
mlrun/runtimes/databricks_job/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
|
|
294
294
|
mlrun/runtimes/databricks_job/databricks_cancel_task.py,sha256=ufjcLKA5E6FSDF5CXm5l8uP_mUSFppwr5krLHln1kAU,2243
|
|
295
295
|
mlrun/runtimes/databricks_job/databricks_runtime.py,sha256=ceX0umkNMHvxuXZic4QulWOfJyhPKHVo3T-oPhKTO8Y,12874
|
|
@@ -311,10 +311,10 @@ mlrun/serving/__init__.py,sha256=nriJAcVn5aatwU03T7SsE6ngJEGTxr3wIGt4WuvCCzY,139
|
|
|
311
311
|
mlrun/serving/merger.py,sha256=pfOQoozUyObCTpqXAMk94PmhZefn4bBrKufO3MKnkAc,6193
|
|
312
312
|
mlrun/serving/remote.py,sha256=Igha2FipK3-6rV_PZ1K464kTbiTu8rhc6SMm-HiEJ6o,18817
|
|
313
313
|
mlrun/serving/routers.py,sha256=SmBOlHn7rT2gWTa-W8f16UB0UthgIFc4D1cPOZAA9ss,54003
|
|
314
|
-
mlrun/serving/server.py,sha256=
|
|
314
|
+
mlrun/serving/server.py,sha256=_P_SR4_7YKqruVzzDHgSPHWlNLGPG5-ksSUwuGhnmjg,38851
|
|
315
315
|
mlrun/serving/serving_wrapper.py,sha256=UL9hhWCfMPcTJO_XrkvNaFvck1U1E7oS8trTZyak0cA,835
|
|
316
|
-
mlrun/serving/states.py,sha256=
|
|
317
|
-
mlrun/serving/system_steps.py,sha256=
|
|
316
|
+
mlrun/serving/states.py,sha256=nrwQcWC0q6A6xFSvTWvaDmtSVgv8Fva9TxCuBHGwZHs,124062
|
|
317
|
+
mlrun/serving/system_steps.py,sha256=tCxkJ54peOzRTMaqvHQCbcwx0ITqZkSpGXbtpRUEfzU,18463
|
|
318
318
|
mlrun/serving/utils.py,sha256=Zbfqm8TKNcTE8zRBezVBzpvR2WKeKeIRN7otNIaiYEc,4170
|
|
319
319
|
mlrun/serving/v1_serving.py,sha256=c6J_MtpE-Tqu00-6r4eJOCO6rUasHDal9W2eBIcrl50,11853
|
|
320
320
|
mlrun/serving/v2_serving.py,sha256=257LVOvWxV0KjeY0-Kxro6YgKmPu2QzNne2IORlXi5E,25434
|
|
@@ -328,7 +328,7 @@ mlrun/utils/async_http.py,sha256=8Olx8TNNeXB07nEGwlqhEgFgnFAD71vBU_bqaA9JW-w,122
|
|
|
328
328
|
mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,3450
|
|
329
329
|
mlrun/utils/clones.py,sha256=qbAGyEbSvlewn3Tw_DpQZP9z6MGzFhSaZfI1CblX8Fg,7515
|
|
330
330
|
mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
|
|
331
|
-
mlrun/utils/helpers.py,sha256=
|
|
331
|
+
mlrun/utils/helpers.py,sha256=ympa9GWzF_NMNemKSas29s8I0-2seHGhfErFT1b-6tY,82419
|
|
332
332
|
mlrun/utils/http.py,sha256=5ZU2VpokaUM_DT3HBSqTm8xjUqTPjZN5fKkSIvKlTl0,8704
|
|
333
333
|
mlrun/utils/logger.py,sha256=RG0m1rx6gfkJ-2C1r_p41MMpPiaDYqaYM2lYHDlNZEU,14767
|
|
334
334
|
mlrun/utils/regex.py,sha256=FcRwWD8x9X3HLhCCU2F0AVKTFah784Pr7ZAe3a02jw8,5199
|
|
@@ -347,11 +347,11 @@ mlrun/utils/notifications/notification/mail.py,sha256=ZyJ3eqd8simxffQmXzqd3bgbAq
|
|
|
347
347
|
mlrun/utils/notifications/notification/slack.py,sha256=kfhogR5keR7Zjh0VCjJNK3NR5_yXT7Cv-x9GdOUW4Z8,7294
|
|
348
348
|
mlrun/utils/notifications/notification/webhook.py,sha256=zxh8CAlbPnTazsk6r05X5TKwqUZVOH5KBU2fJbzQlG4,5330
|
|
349
349
|
mlrun/utils/version/__init__.py,sha256=YnzE6tlf24uOQ8y7Z7l96QLAI6-QEii7-77g8ynmzy0,613
|
|
350
|
-
mlrun/utils/version/version.json,sha256=
|
|
350
|
+
mlrun/utils/version/version.json,sha256=V37lX2OyNEzNPMQsoXG-KqHjDgxsQv-dFqRr2AHbFCk,90
|
|
351
351
|
mlrun/utils/version/version.py,sha256=M2hVhRrgkN3SxacZHs3ZqaOsqAA7B6a22ne324IQ1HE,1877
|
|
352
|
-
mlrun-1.10.
|
|
353
|
-
mlrun-1.10.
|
|
354
|
-
mlrun-1.10.
|
|
355
|
-
mlrun-1.10.
|
|
356
|
-
mlrun-1.10.
|
|
357
|
-
mlrun-1.10.
|
|
352
|
+
mlrun-1.10.0rc17.dist-info/licenses/LICENSE,sha256=zTiv1CxWNkOk1q8eJS1G_8oD4gWpWLwWxj_Agcsi8Os,11337
|
|
353
|
+
mlrun-1.10.0rc17.dist-info/METADATA,sha256=D6HN7BHzSm7-exb9kSE5N2h4m_dPOSsQc-PoM_5avj4,26195
|
|
354
|
+
mlrun-1.10.0rc17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
355
|
+
mlrun-1.10.0rc17.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
|
|
356
|
+
mlrun-1.10.0rc17.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
|
|
357
|
+
mlrun-1.10.0rc17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|