mlrun 1.6.0rc35__py3-none-any.whl → 1.7.0rc2__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/__main__.py +3 -3
- mlrun/api/schemas/__init__.py +1 -1
- mlrun/artifacts/base.py +11 -6
- mlrun/artifacts/dataset.py +2 -2
- mlrun/artifacts/model.py +30 -24
- mlrun/artifacts/plots.py +2 -2
- mlrun/common/db/sql_session.py +5 -3
- mlrun/common/helpers.py +1 -2
- mlrun/common/schemas/artifact.py +3 -3
- mlrun/common/schemas/auth.py +3 -3
- mlrun/common/schemas/background_task.py +1 -1
- mlrun/common/schemas/client_spec.py +1 -1
- mlrun/common/schemas/feature_store.py +16 -16
- mlrun/common/schemas/frontend_spec.py +7 -7
- mlrun/common/schemas/function.py +1 -1
- mlrun/common/schemas/hub.py +4 -9
- mlrun/common/schemas/memory_reports.py +2 -2
- mlrun/common/schemas/model_monitoring/grafana.py +4 -4
- mlrun/common/schemas/model_monitoring/model_endpoints.py +14 -15
- mlrun/common/schemas/notification.py +4 -4
- mlrun/common/schemas/object.py +2 -2
- mlrun/common/schemas/pipeline.py +1 -1
- mlrun/common/schemas/project.py +3 -3
- mlrun/common/schemas/runtime_resource.py +8 -12
- mlrun/common/schemas/schedule.py +3 -3
- mlrun/common/schemas/tag.py +1 -2
- mlrun/common/schemas/workflow.py +2 -2
- mlrun/config.py +8 -4
- mlrun/data_types/to_pandas.py +1 -3
- mlrun/datastore/base.py +0 -28
- mlrun/datastore/datastore_profile.py +9 -9
- mlrun/datastore/filestore.py +0 -1
- mlrun/datastore/google_cloud_storage.py +1 -1
- mlrun/datastore/sources.py +7 -11
- mlrun/datastore/spark_utils.py +1 -2
- mlrun/datastore/targets.py +31 -31
- mlrun/datastore/utils.py +4 -6
- mlrun/datastore/v3io.py +70 -46
- mlrun/db/base.py +22 -23
- mlrun/db/httpdb.py +34 -34
- mlrun/db/nopdb.py +19 -19
- mlrun/errors.py +1 -1
- mlrun/execution.py +4 -4
- mlrun/feature_store/api.py +20 -21
- mlrun/feature_store/common.py +1 -1
- mlrun/feature_store/feature_set.py +28 -32
- mlrun/feature_store/feature_vector.py +24 -27
- mlrun/feature_store/retrieval/base.py +7 -7
- mlrun/feature_store/retrieval/conversion.py +2 -4
- mlrun/feature_store/steps.py +7 -15
- mlrun/features.py +5 -7
- 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 +2 -3
- 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 +16 -35
- 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 +1 -1
- 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 +7 -7
- mlrun/frameworks/huggingface/model_server.py +4 -4
- mlrun/frameworks/lgbm/__init__.py +32 -32
- 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 +9 -9
- 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 +2 -2
- mlrun/frameworks/pytorch/__init__.py +16 -16
- 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 +12 -12
- mlrun/frameworks/sklearn/estimator.py +4 -4
- mlrun/frameworks/sklearn/metrics_library.py +14 -14
- mlrun/frameworks/sklearn/mlrun_interface.py +3 -6
- mlrun/frameworks/sklearn/model_handler.py +2 -2
- mlrun/frameworks/tf_keras/__init__.py +5 -5
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +14 -14
- 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 +7 -9
- mlrun/frameworks/tf_keras/model_handler.py +14 -14
- mlrun/frameworks/tf_keras/model_server.py +6 -6
- mlrun/frameworks/xgboost/__init__.py +12 -12
- mlrun/frameworks/xgboost/model_handler.py +6 -6
- mlrun/k8s_utils.py +4 -5
- mlrun/kfpops.py +2 -2
- mlrun/launcher/base.py +10 -10
- mlrun/launcher/local.py +8 -8
- mlrun/launcher/remote.py +7 -7
- mlrun/lists.py +3 -4
- mlrun/model.py +205 -55
- mlrun/model_monitoring/api.py +21 -24
- mlrun/model_monitoring/application.py +4 -4
- mlrun/model_monitoring/batch.py +17 -17
- mlrun/model_monitoring/controller.py +2 -1
- mlrun/model_monitoring/features_drift_table.py +44 -31
- mlrun/model_monitoring/prometheus.py +1 -4
- mlrun/model_monitoring/stores/kv_model_endpoint_store.py +11 -13
- mlrun/model_monitoring/stores/model_endpoint_store.py +9 -11
- mlrun/model_monitoring/stores/models/__init__.py +2 -2
- mlrun/model_monitoring/stores/sql_model_endpoint_store.py +11 -13
- mlrun/model_monitoring/stream_processing.py +16 -34
- mlrun/model_monitoring/tracking_policy.py +2 -1
- 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 +6 -6
- 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 +18 -23
- mlrun/package/utils/_formatter.py +4 -4
- 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/other.py +1 -2
- mlrun/projects/operations.py +5 -5
- mlrun/projects/pipelines.py +9 -9
- mlrun/projects/project.py +58 -46
- mlrun/render.py +1 -1
- mlrun/run.py +9 -9
- mlrun/runtimes/__init__.py +7 -4
- mlrun/runtimes/base.py +20 -23
- mlrun/runtimes/constants.py +5 -5
- mlrun/runtimes/daskjob.py +8 -8
- mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
- mlrun/runtimes/databricks_job/databricks_runtime.py +7 -7
- mlrun/runtimes/function_reference.py +1 -1
- mlrun/runtimes/local.py +1 -1
- mlrun/runtimes/mpijob/abstract.py +1 -2
- mlrun/runtimes/nuclio/__init__.py +20 -0
- mlrun/runtimes/{function.py → nuclio/function.py} +15 -16
- mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
- mlrun/runtimes/{serving.py → nuclio/serving.py} +13 -12
- mlrun/runtimes/pod.py +95 -48
- mlrun/runtimes/remotesparkjob.py +1 -1
- mlrun/runtimes/sparkjob/spark3job.py +50 -33
- mlrun/runtimes/utils.py +1 -2
- mlrun/secrets.py +3 -3
- mlrun/serving/remote.py +0 -4
- mlrun/serving/routers.py +6 -6
- mlrun/serving/server.py +4 -4
- mlrun/serving/states.py +29 -0
- mlrun/serving/utils.py +3 -3
- mlrun/serving/v1_serving.py +6 -7
- mlrun/serving/v2_serving.py +50 -8
- mlrun/track/tracker_manager.py +3 -3
- mlrun/track/trackers/mlflow_tracker.py +1 -2
- mlrun/utils/async_http.py +5 -7
- mlrun/utils/azure_vault.py +1 -1
- mlrun/utils/clones.py +1 -2
- mlrun/utils/condition_evaluator.py +3 -3
- mlrun/utils/db.py +3 -3
- mlrun/utils/helpers.py +37 -119
- mlrun/utils/http.py +1 -4
- mlrun/utils/logger.py +49 -14
- mlrun/utils/notifications/notification/__init__.py +3 -3
- mlrun/utils/notifications/notification/base.py +2 -2
- mlrun/utils/notifications/notification/ipython.py +1 -1
- mlrun/utils/notifications/notification_pusher.py +8 -14
- mlrun/utils/retryer.py +207 -0
- mlrun/utils/singleton.py +1 -1
- mlrun/utils/v3io_clients.py +2 -3
- mlrun/utils/version/version.json +2 -2
- mlrun/utils/version/version.py +2 -6
- {mlrun-1.6.0rc35.dist-info → mlrun-1.7.0rc2.dist-info}/METADATA +9 -9
- mlrun-1.7.0rc2.dist-info/RECORD +315 -0
- mlrun-1.6.0rc35.dist-info/RECORD +0 -313
- {mlrun-1.6.0rc35.dist-info → mlrun-1.7.0rc2.dist-info}/LICENSE +0 -0
- {mlrun-1.6.0rc35.dist-info → mlrun-1.7.0rc2.dist-info}/WHEEL +0 -0
- {mlrun-1.6.0rc35.dist-info → mlrun-1.7.0rc2.dist-info}/entry_points.txt +0 -0
- {mlrun-1.6.0rc35.dist-info → mlrun-1.7.0rc2.dist-info}/top_level.txt +0 -0
mlrun/utils/retryer.py
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Copyright 2023 Iguazio
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import asyncio
|
|
16
|
+
import time
|
|
17
|
+
|
|
18
|
+
import mlrun.errors
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def create_linear_backoff(base=2, coefficient=2, stop_value=120):
|
|
22
|
+
"""
|
|
23
|
+
Create a generator of linear backoff. Check out usage example in test_helpers.py
|
|
24
|
+
"""
|
|
25
|
+
x = 0
|
|
26
|
+
comparison = min if coefficient >= 0 else max
|
|
27
|
+
|
|
28
|
+
while True:
|
|
29
|
+
next_value = comparison(base + x * coefficient, stop_value)
|
|
30
|
+
yield next_value
|
|
31
|
+
x += 1
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def create_step_backoff(steps=None):
|
|
35
|
+
"""
|
|
36
|
+
Create a generator of steps backoff.
|
|
37
|
+
Example: steps = [[2, 5], [20, 10], [120, None]] will produce a generator in which the first 5
|
|
38
|
+
values will be 2, the next 10 values will be 20 and the rest will be 120.
|
|
39
|
+
:param steps: a list of lists [step_value, number_of_iteration_in_this_step]
|
|
40
|
+
"""
|
|
41
|
+
steps = steps if steps is not None else [[2, 10], [10, 10], [120, None]]
|
|
42
|
+
steps = iter(steps)
|
|
43
|
+
|
|
44
|
+
# Get first step
|
|
45
|
+
step = next(steps)
|
|
46
|
+
while True:
|
|
47
|
+
current_step_value, current_step_remain = step
|
|
48
|
+
if current_step_remain == 0:
|
|
49
|
+
# No more in this step, moving on
|
|
50
|
+
step = next(steps)
|
|
51
|
+
elif current_step_remain is None:
|
|
52
|
+
# We are in the last step, staying here forever
|
|
53
|
+
yield current_step_value
|
|
54
|
+
elif current_step_remain > 0:
|
|
55
|
+
# Still more remains in this step, just reduce the remaining number
|
|
56
|
+
step[1] -= 1
|
|
57
|
+
yield current_step_value
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def create_exponential_backoff(base=2, max_value=120, scale_factor=1):
|
|
61
|
+
"""
|
|
62
|
+
Create a generator of exponential backoff. Check out usage example in test_helpers.py
|
|
63
|
+
:param base: exponent base
|
|
64
|
+
:param max_value: max limit on the result
|
|
65
|
+
:param scale_factor: factor to be used as linear scaling coefficient
|
|
66
|
+
"""
|
|
67
|
+
exponent = 1
|
|
68
|
+
while True:
|
|
69
|
+
# This "complex" implementation (unlike the one in linear backoff) is to avoid exponent growing too fast and
|
|
70
|
+
# risking going behind max_int
|
|
71
|
+
next_value = scale_factor * (base**exponent)
|
|
72
|
+
if next_value < max_value:
|
|
73
|
+
exponent += 1
|
|
74
|
+
yield next_value
|
|
75
|
+
else:
|
|
76
|
+
yield max_value
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class Retryer:
|
|
80
|
+
def __init__(self, backoff, timeout, logger, verbose, function, *args, **kwargs):
|
|
81
|
+
"""
|
|
82
|
+
Initialize function retryer with given *args and **kwargs.
|
|
83
|
+
Tries to run it until success or timeout reached (timeout is optional)
|
|
84
|
+
:param backoff: can either be a:
|
|
85
|
+
- number (int / float) that will be used as interval.
|
|
86
|
+
- generator of waiting intervals. (support next())
|
|
87
|
+
:param timeout: pass None if timeout is not wanted, number of seconds if it is
|
|
88
|
+
:param logger: a logger so we can log the failures
|
|
89
|
+
:param verbose: whether to log the failure on each retry
|
|
90
|
+
:param _function: function to run
|
|
91
|
+
:param args: functions args
|
|
92
|
+
:param kwargs: functions kwargs
|
|
93
|
+
"""
|
|
94
|
+
self.backoff = backoff
|
|
95
|
+
self.timeout = timeout
|
|
96
|
+
self.logger = logger
|
|
97
|
+
self.verbose = verbose
|
|
98
|
+
self.function = function
|
|
99
|
+
self.args = args
|
|
100
|
+
self.kwargs = kwargs
|
|
101
|
+
self.start_time = None
|
|
102
|
+
self.last_exception = None
|
|
103
|
+
self.first_interval = None
|
|
104
|
+
|
|
105
|
+
def run(self):
|
|
106
|
+
self._prepare()
|
|
107
|
+
while not self._timeout_exceeded():
|
|
108
|
+
next_interval = self.first_interval or next(self.backoff)
|
|
109
|
+
result, exc, retry = self._perform_call(next_interval)
|
|
110
|
+
if retry:
|
|
111
|
+
time.sleep(next_interval)
|
|
112
|
+
elif not exc:
|
|
113
|
+
return result
|
|
114
|
+
else:
|
|
115
|
+
break
|
|
116
|
+
|
|
117
|
+
self._raise_last_exception()
|
|
118
|
+
|
|
119
|
+
def _prepare(self):
|
|
120
|
+
self.start_time = time.time()
|
|
121
|
+
self.last_exception = None
|
|
122
|
+
|
|
123
|
+
# Check if backoff is just a simple interval
|
|
124
|
+
if isinstance(self.backoff, int) or isinstance(self.backoff, float):
|
|
125
|
+
self.backoff = create_linear_backoff(base=self.backoff, coefficient=0)
|
|
126
|
+
|
|
127
|
+
self.first_interval = next(self.backoff)
|
|
128
|
+
if self.timeout and self.timeout <= self.first_interval:
|
|
129
|
+
self.logger.warning(
|
|
130
|
+
f"Timeout ({self.timeout}) must be higher than backoff ({self.first_interval})."
|
|
131
|
+
f" Set timeout to be higher than backoff."
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
def _perform_call(self, next_interval):
|
|
135
|
+
try:
|
|
136
|
+
result = self.function(*self.args, **self.kwargs)
|
|
137
|
+
return result, None, False
|
|
138
|
+
except mlrun.errors.MLRunFatalFailureError as exc:
|
|
139
|
+
raise exc.original_exception
|
|
140
|
+
except Exception as exc:
|
|
141
|
+
return (
|
|
142
|
+
None,
|
|
143
|
+
self.last_exception,
|
|
144
|
+
self._assert_failure_timeout(next_interval, exc),
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
def _assert_failure_timeout(self, next_interval, exc):
|
|
148
|
+
self.last_exception = exc
|
|
149
|
+
|
|
150
|
+
# If next interval is within allowed time period - wait on interval, abort otherwise
|
|
151
|
+
if not self._timeout_exceeded(next_interval):
|
|
152
|
+
if self.logger is not None and self.verbose:
|
|
153
|
+
self.logger.debug(
|
|
154
|
+
f"Operation not yet successful, Retrying in {next_interval} seconds."
|
|
155
|
+
f" exc: {mlrun.errors.err_to_str(exc)}"
|
|
156
|
+
)
|
|
157
|
+
return True
|
|
158
|
+
else:
|
|
159
|
+
return False
|
|
160
|
+
|
|
161
|
+
def _raise_last_exception(self):
|
|
162
|
+
if self.logger is not None:
|
|
163
|
+
self.logger.warning(
|
|
164
|
+
f"Operation did not complete on time. last exception: {self.last_exception}"
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
raise mlrun.errors.MLRunRetryExhaustedError(
|
|
168
|
+
f"Failed to execute command by the given deadline."
|
|
169
|
+
f" last_exception: {self.last_exception},"
|
|
170
|
+
f" function_name: {self.function.__name__},"
|
|
171
|
+
f" timeout: {self.timeout}"
|
|
172
|
+
) from self.last_exception
|
|
173
|
+
|
|
174
|
+
def _timeout_exceeded(self, next_interval=None):
|
|
175
|
+
now = time.time()
|
|
176
|
+
if next_interval:
|
|
177
|
+
now = now + next_interval
|
|
178
|
+
return self.timeout is not None and now >= self.start_time + self.timeout
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
class AsyncRetryer(Retryer):
|
|
182
|
+
async def run(self):
|
|
183
|
+
self._prepare()
|
|
184
|
+
while not self._timeout_exceeded():
|
|
185
|
+
next_interval = self.first_interval or next(self.backoff)
|
|
186
|
+
result, exc, retry = await self._perform_call(next_interval)
|
|
187
|
+
if retry:
|
|
188
|
+
await asyncio.sleep(next_interval)
|
|
189
|
+
elif not exc:
|
|
190
|
+
return result
|
|
191
|
+
else:
|
|
192
|
+
break
|
|
193
|
+
|
|
194
|
+
self._raise_last_exception()
|
|
195
|
+
|
|
196
|
+
async def _perform_call(self, next_interval):
|
|
197
|
+
try:
|
|
198
|
+
result = await self.function(*self.args, **self.kwargs)
|
|
199
|
+
return result, None, False
|
|
200
|
+
except mlrun.errors.MLRunFatalFailureError as exc:
|
|
201
|
+
raise exc.original_exception
|
|
202
|
+
except Exception as exc:
|
|
203
|
+
return (
|
|
204
|
+
None,
|
|
205
|
+
self.last_exception,
|
|
206
|
+
self._assert_failure_timeout(next_interval, exc),
|
|
207
|
+
)
|
mlrun/utils/singleton.py
CHANGED
|
@@ -20,7 +20,7 @@ class Singleton(type):
|
|
|
20
20
|
|
|
21
21
|
def __call__(cls, *args, **kwargs):
|
|
22
22
|
if cls not in cls._instances:
|
|
23
|
-
cls._instances[cls] = super(
|
|
23
|
+
cls._instances[cls] = super().__call__(*args, **kwargs)
|
|
24
24
|
return cls._instances[cls]
|
|
25
25
|
|
|
26
26
|
|
mlrun/utils/v3io_clients.py
CHANGED
|
@@ -12,14 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
#
|
|
15
|
-
from typing import Dict, FrozenSet
|
|
16
15
|
|
|
17
16
|
from v3io.dataplane import Client as V3IOClient
|
|
18
17
|
from v3io_frames import Client as get_client
|
|
19
18
|
from v3io_frames.client import ClientBase
|
|
20
19
|
|
|
21
|
-
_v3io_clients:
|
|
22
|
-
_frames_clients:
|
|
20
|
+
_v3io_clients: dict[frozenset, V3IOClient] = {}
|
|
21
|
+
_frames_clients: dict[frozenset, ClientBase] = {}
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
def get_frames_client(**kwargs) -> ClientBase:
|
mlrun/utils/version/version.json
CHANGED
mlrun/utils/version/version.py
CHANGED
|
@@ -14,15 +14,11 @@
|
|
|
14
14
|
#
|
|
15
15
|
import json
|
|
16
16
|
import sys
|
|
17
|
+
from importlib.resources import read_text
|
|
17
18
|
|
|
18
19
|
import mlrun.utils
|
|
19
20
|
from mlrun.utils.singleton import Singleton
|
|
20
21
|
|
|
21
|
-
if sys.version_info >= (3, 7):
|
|
22
|
-
from importlib.resources import read_text
|
|
23
|
-
else:
|
|
24
|
-
from importlib_resources import read_text
|
|
25
|
-
|
|
26
22
|
|
|
27
23
|
class _VersionInfo:
|
|
28
24
|
def __init__(self, major, minor, patch):
|
|
@@ -56,5 +52,5 @@ class Version(metaclass=Singleton):
|
|
|
56
52
|
return self.python_version
|
|
57
53
|
|
|
58
54
|
@staticmethod
|
|
59
|
-
def _resolve_python_version() ->
|
|
55
|
+
def _resolve_python_version() -> _VersionInfo:
|
|
60
56
|
return _VersionInfo(*sys.version_info[:3])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.0rc2
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -29,14 +29,14 @@ Requires-Dist: click ~=8.1
|
|
|
29
29
|
Requires-Dist: kfp ~=1.8
|
|
30
30
|
Requires-Dist: nest-asyncio ~=1.0
|
|
31
31
|
Requires-Dist: ipython ~=8.10
|
|
32
|
-
Requires-Dist: nuclio-jupyter ~=0.9.
|
|
32
|
+
Requires-Dist: nuclio-jupyter ~=0.9.16
|
|
33
33
|
Requires-Dist: numpy <1.27.0,>=1.16.5
|
|
34
34
|
Requires-Dist: pandas <2.2,>=1.2
|
|
35
35
|
Requires-Dist: pyarrow <15,>=10.0
|
|
36
36
|
Requires-Dist: pyyaml ~=5.1
|
|
37
37
|
Requires-Dist: requests ~=2.31
|
|
38
38
|
Requires-Dist: tabulate ~=0.8.6
|
|
39
|
-
Requires-Dist: v3io ~=0.
|
|
39
|
+
Requires-Dist: v3io ~=0.6.2
|
|
40
40
|
Requires-Dist: pydantic >=1.10.8,~=1.10
|
|
41
41
|
Requires-Dist: mergedeep ~=1.3
|
|
42
42
|
Requires-Dist: v3io-frames ~=0.10.12
|
|
@@ -44,7 +44,7 @@ Requires-Dist: semver ~=3.0
|
|
|
44
44
|
Requires-Dist: dependency-injector ~=4.41
|
|
45
45
|
Requires-Dist: fsspec ==2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs ~=0.1.17
|
|
47
|
-
Requires-Dist: storey ~=1.
|
|
47
|
+
Requires-Dist: storey ~=1.7.3
|
|
48
48
|
Requires-Dist: inflection ~=0.5.0
|
|
49
49
|
Requires-Dist: python-dotenv ~=0.17.0
|
|
50
50
|
Requires-Dist: setuptools ~=68.2
|
|
@@ -222,7 +222,7 @@ In MLRun the assets, metadata, and services (data, functions, jobs, artifacts, m
|
|
|
222
222
|
Projects can be imported/exported as a whole, mapped to git repositories or IDE projects (in PyCharm, VSCode, etc.), which enables versioning, collaboration, and CI/CD.
|
|
223
223
|
Project access can be restricted to a set of users and roles.
|
|
224
224
|
|
|
225
|
-
See: **Docs:** [Projects and Automation](https://docs.mlrun.org/en/latest/projects/project.html), [CI/CD Integration](https://docs.mlrun.org/en/latest/projects/ci-integration.html), **Tutorials:** [Quick start](https://docs.mlrun.org/en/latest/tutorials/01-mlrun-basics.html), [Automated ML Pipeline](https://docs.mlrun.org/en/latest/tutorials/04-pipeline.html), **Video:** [
|
|
225
|
+
See: **Docs:** [Projects and Automation](https://docs.mlrun.org/en/latest/projects/project.html), [CI/CD Integration](https://docs.mlrun.org/en/latest/projects/ci-integration.html), **Tutorials:** [Quick start](https://docs.mlrun.org/en/latest/tutorials/01-mlrun-basics.html), [Automated ML Pipeline](https://docs.mlrun.org/en/latest/tutorials/04-pipeline.html), **Video:** [Quick start](https://youtu.be/xI8KVGLlj7Q).
|
|
226
226
|
|
|
227
227
|
### Ingest and process data
|
|
228
228
|
|
|
@@ -235,13 +235,13 @@ See: **Docs:** [Ingest and process data](https://docs.mlrun.org/en/latest/data-p
|
|
|
235
235
|
|
|
236
236
|
MLRun allows you to easily build ML pipelines that take data from various sources or the Feature Store and process it, train models at scale with multiple parameters, test models, tracks each experiments, register, version and deploy models, etc. MLRun provides scalable built-in or custom model training services, integrate with any framework and can work with 3rd party training/auto-ML services. You can also bring your own pre-trained model and use it in the pipeline.
|
|
237
237
|
|
|
238
|
-
See: **Docs:** [Develop and train models](https://docs.mlrun.org/en/latest/development/index.html), [Model Training and Tracking](https://docs.mlrun.org/en/latest/development/model-training-tracking.html), [Batch Runs and Workflows](https://docs.mlrun.org/en/latest/concepts/runs-workflows.html); **Tutorials:** [Train
|
|
238
|
+
See: **Docs:** [Develop and train models](https://docs.mlrun.org/en/latest/development/index.html), [Model Training and Tracking](https://docs.mlrun.org/en/latest/development/model-training-tracking.html), [Batch Runs and Workflows](https://docs.mlrun.org/en/latest/concepts/runs-workflows.html); **Tutorials:** [Train, compare, and register models](https://docs.mlrun.org/en/latest/tutorials/02-model-training.html), [Automated ML Pipeline](https://docs.mlrun.org/en/latest/tutorials/04-pipeline.html); **Video:** [Train and compare models](https://youtu.be/bZgBsmLMdQo).
|
|
239
239
|
|
|
240
240
|
### Deploy models and applications
|
|
241
241
|
|
|
242
242
|
MLRun rapidly deploys and manages production-grade real-time or batch application pipelines using elastic and resilient serverless functions. MLRun addresses the entire ML application: intercepting application/user requests, running data processing tasks, inferencing using one or more models, driving actions, and integrating with the application logic.
|
|
243
243
|
|
|
244
|
-
See: **Docs:** [Deploy models and applications](https://docs.mlrun.org/en/latest/deployment/index.html), [Realtime Pipelines](https://docs.mlrun.org/en/latest/serving/serving-graph.html), [Batch Inference](https://docs.mlrun.org/en/latest/
|
|
244
|
+
See: **Docs:** [Deploy models and applications](https://docs.mlrun.org/en/latest/deployment/index.html), [Realtime Pipelines](https://docs.mlrun.org/en/latest/serving/serving-graph.html), [Batch Inference](https://docs.mlrun.org/en/latest/deployment/batch_inference.html), **Tutorials:** [Realtime Serving](https://docs.mlrun.org/en/latest/tutorials/03-model-serving.html), [Batch Inference](https://docs.mlrun.org/en/latest/tutorials/07-batch-infer.html), [Advanced Pipeline](https://docs.mlrun.org/en/latest/tutorials/07-batch-infer.html); **Video:** [Serving pre-trained models](https://youtu.be/OUjOus4dZfw).
|
|
245
245
|
|
|
246
246
|
### Monitor and alert
|
|
247
247
|
|
|
@@ -259,9 +259,9 @@ MLRun includes the following major components:
|
|
|
259
259
|
|
|
260
260
|
[**Project Management:**](https://docs.mlrun.org/en/latest/projects/project.html) A service (API, SDK, DB, UI) that manages the different project assets (data, functions, jobs, workflows, secrets, etc.) and provides central control and metadata layer.
|
|
261
261
|
|
|
262
|
-
[**
|
|
262
|
+
[**Functions:**](https://docs.mlrun.org/en/latest/runtimes/functions.html) automatically deployed software package with one or more methods and runtime-specific attributes (such as image, libraries, command, arguments, resources, etc.).
|
|
263
263
|
|
|
264
|
-
[**Data & Artifacts:**](https://docs.mlrun.org/en/latest/concepts/data
|
|
264
|
+
[**Data & Artifacts:**](https://docs.mlrun.org/en/latest/concepts/data.html) Glueless connectivity to various data sources, metadata management, catalog, and versioning for structures/unstructured artifacts.
|
|
265
265
|
|
|
266
266
|
[**Feature Store:**](https://docs.mlrun.org/en/latest/feature-store/feature-store.html) automatically collects, prepares, catalogs, and serves production data features for development (offline) and real-time (online) deployment using minimal engineering effort.
|
|
267
267
|
|