mlrun 1.6.4rc7__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 +131 -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 +129 -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.4rc7.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.4rc7.dist-info/METADATA +0 -272
- mlrun-1.6.4rc7.dist-info/RECORD +0 -314
- {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
- {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
- {mlrun-1.6.4rc7.dist-info → mlrun-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -14,21 +14,21 @@
|
|
|
14
14
|
|
|
15
15
|
import json
|
|
16
16
|
import os
|
|
17
|
+
import warnings
|
|
17
18
|
from copy import deepcopy
|
|
18
|
-
from typing import
|
|
19
|
+
from typing import TYPE_CHECKING, Optional, Union
|
|
19
20
|
|
|
20
21
|
import nuclio
|
|
21
22
|
from nuclio import KafkaTrigger
|
|
22
23
|
|
|
23
24
|
import mlrun
|
|
24
25
|
import mlrun.common.schemas
|
|
25
|
-
from mlrun.
|
|
26
|
-
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from ..serving.states import (
|
|
26
|
+
from mlrun.datastore import get_kafka_brokers_from_dict, parse_kafka_url
|
|
27
|
+
from mlrun.model import ObjectList
|
|
28
|
+
from mlrun.runtimes.function_reference import FunctionReference
|
|
29
|
+
from mlrun.secrets import SecretsStore
|
|
30
|
+
from mlrun.serving.server import GraphServer, create_graph_server
|
|
31
|
+
from mlrun.serving.states import (
|
|
32
32
|
RootFlowStep,
|
|
33
33
|
RouterStep,
|
|
34
34
|
StepKinds,
|
|
@@ -37,12 +37,16 @@ from ..serving.states import (
|
|
|
37
37
|
new_remote_endpoint,
|
|
38
38
|
params_to_step,
|
|
39
39
|
)
|
|
40
|
-
from
|
|
40
|
+
from mlrun.utils import get_caller_globals, logger, set_paths
|
|
41
|
+
|
|
41
42
|
from .function import NuclioSpec, RemoteRuntime
|
|
42
|
-
from .function_reference import FunctionReference
|
|
43
43
|
|
|
44
44
|
serving_subkind = "serving_v2"
|
|
45
45
|
|
|
46
|
+
if TYPE_CHECKING:
|
|
47
|
+
# remove this block in 1.9.0
|
|
48
|
+
from mlrun.model_monitoring import TrackingPolicy
|
|
49
|
+
|
|
46
50
|
|
|
47
51
|
def new_v2_model_server(
|
|
48
52
|
name,
|
|
@@ -216,12 +220,12 @@ class ServingSpec(NuclioSpec):
|
|
|
216
220
|
graph_root_setter(self, graph)
|
|
217
221
|
|
|
218
222
|
@property
|
|
219
|
-
def function_refs(self) ->
|
|
223
|
+
def function_refs(self) -> list[FunctionReference]:
|
|
220
224
|
"""function references, list of optional child function refs"""
|
|
221
225
|
return self._function_refs
|
|
222
226
|
|
|
223
227
|
@function_refs.setter
|
|
224
|
-
def function_refs(self, function_refs:
|
|
228
|
+
def function_refs(self, function_refs: list[FunctionReference]):
|
|
225
229
|
self._function_refs = ObjectList.from_list(FunctionReference, function_refs)
|
|
226
230
|
|
|
227
231
|
|
|
@@ -303,45 +307,34 @@ class ServingRuntime(RemoteRuntime):
|
|
|
303
307
|
|
|
304
308
|
def set_tracking(
|
|
305
309
|
self,
|
|
306
|
-
stream_path: str = None,
|
|
307
|
-
batch: int = None,
|
|
308
|
-
sample: int = None,
|
|
309
|
-
stream_args: dict = None,
|
|
310
|
-
tracking_policy: Union[TrackingPolicy, dict] = None,
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
:param
|
|
319
|
-
:param
|
|
320
|
-
:param
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
tracking_policy = {'default_batch_intervals':"0 */3 * * *"}
|
|
331
|
-
serving_fn.set_tracking(tracking_policy=tracking_policy)
|
|
310
|
+
stream_path: Optional[str] = None,
|
|
311
|
+
batch: Optional[int] = None,
|
|
312
|
+
sample: Optional[int] = None,
|
|
313
|
+
stream_args: Optional[dict] = None,
|
|
314
|
+
tracking_policy: Optional[Union["TrackingPolicy", dict]] = None,
|
|
315
|
+
enable_tracking: bool = True,
|
|
316
|
+
) -> None:
|
|
317
|
+
"""Apply on your serving function to monitor a deployed model, including real-time dashboards to detect drift
|
|
318
|
+
and analyze performance.
|
|
319
|
+
|
|
320
|
+
:param stream_path: Path/url of the tracking stream e.g. v3io:///users/mike/mystream
|
|
321
|
+
you can use the "dummy://" path for test/simulation.
|
|
322
|
+
:param batch: Micro batch size (send micro batches of N records at a time).
|
|
323
|
+
:param sample: Sample size (send only one of N records).
|
|
324
|
+
:param stream_args: Stream initialization parameters, e.g. shards, retention_in_hours, ..
|
|
325
|
+
:param enable_tracking: Enabled/Disable model-monitoring tracking.
|
|
326
|
+
Default True (tracking enabled).
|
|
327
|
+
|
|
328
|
+
Example::
|
|
329
|
+
|
|
330
|
+
# initialize a new serving function
|
|
331
|
+
serving_fn = mlrun.import_function("hub://v2-model-server", new_name="serving")
|
|
332
|
+
# apply model monitoring
|
|
333
|
+
serving_fn.set_tracking()
|
|
332
334
|
|
|
333
335
|
"""
|
|
334
|
-
|
|
335
336
|
# Applying model monitoring configurations
|
|
336
|
-
self.spec.track_models =
|
|
337
|
-
self.spec.tracking_policy = None
|
|
338
|
-
if tracking_policy:
|
|
339
|
-
if isinstance(tracking_policy, dict):
|
|
340
|
-
# Convert tracking policy dictionary into `model_monitoring.TrackingPolicy` object
|
|
341
|
-
self.spec.tracking_policy = TrackingPolicy.from_dict(tracking_policy)
|
|
342
|
-
else:
|
|
343
|
-
# Tracking_policy is already a `model_monitoring.TrackingPolicy` object
|
|
344
|
-
self.spec.tracking_policy = tracking_policy
|
|
337
|
+
self.spec.track_models = enable_tracking
|
|
345
338
|
|
|
346
339
|
if stream_path:
|
|
347
340
|
self.spec.parameters["log_stream"] = stream_path
|
|
@@ -351,6 +344,14 @@ class ServingRuntime(RemoteRuntime):
|
|
|
351
344
|
self.spec.parameters["log_stream_sample"] = sample
|
|
352
345
|
if stream_args:
|
|
353
346
|
self.spec.parameters["stream_args"] = stream_args
|
|
347
|
+
if tracking_policy is not None:
|
|
348
|
+
warnings.warn(
|
|
349
|
+
"The `tracking_policy` argument is deprecated from version 1.7.0 "
|
|
350
|
+
"and has no effect. It will be removed in 1.9.0.\n"
|
|
351
|
+
"To set the desired model monitoring time window and schedule, use "
|
|
352
|
+
"the `base_period` argument in `project.enable_model_monitoring()`.",
|
|
353
|
+
FutureWarning,
|
|
354
|
+
)
|
|
354
355
|
|
|
355
356
|
def add_model(
|
|
356
357
|
self,
|
|
@@ -367,8 +368,8 @@ class ServingRuntime(RemoteRuntime):
|
|
|
367
368
|
|
|
368
369
|
Example, create a function (from the notebook), add a model class, and deploy::
|
|
369
370
|
|
|
370
|
-
fn = code_to_function(kind=
|
|
371
|
-
fn.add_model(
|
|
371
|
+
fn = code_to_function(kind="serving")
|
|
372
|
+
fn.add_model("boost", model_path, model_class="MyClass", my_arg=5)
|
|
372
373
|
fn.deploy()
|
|
373
374
|
|
|
374
375
|
only works with router topology, for nested topologies (model under router under flow)
|
|
@@ -450,7 +451,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
450
451
|
|
|
451
452
|
example::
|
|
452
453
|
|
|
453
|
-
fn.add_child_function(
|
|
454
|
+
fn.add_child_function("enrich", "./enrich.ipynb", "mlrun/mlrun")
|
|
454
455
|
|
|
455
456
|
:param name: child function name
|
|
456
457
|
:param url: function/code url, support .py, .ipynb, .yaml extensions
|
|
@@ -479,7 +480,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
479
480
|
trigger_args = stream.trigger_args or {}
|
|
480
481
|
|
|
481
482
|
engine = self.spec.graph.engine or "async"
|
|
482
|
-
if mlrun.mlconf.
|
|
483
|
+
if mlrun.mlconf.is_explicit_ack_enabled() and engine == "async":
|
|
483
484
|
trigger_args["explicit_ack_mode"] = trigger_args.get(
|
|
484
485
|
"explicit_ack_mode", "explicitOnly"
|
|
485
486
|
)
|
|
@@ -489,11 +490,8 @@ class ServingRuntime(RemoteRuntime):
|
|
|
489
490
|
"worker_allocation_mode", "static"
|
|
490
491
|
)
|
|
491
492
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
or "kafka_bootstrap_servers" in stream.options
|
|
495
|
-
):
|
|
496
|
-
brokers = stream.options.get("kafka_bootstrap_servers")
|
|
493
|
+
brokers = get_kafka_brokers_from_dict(stream.options)
|
|
494
|
+
if stream.path.startswith("kafka://") or brokers:
|
|
497
495
|
if brokers:
|
|
498
496
|
brokers = brokers.split(",")
|
|
499
497
|
topic, brokers = parse_kafka_url(stream.path, brokers)
|
|
@@ -644,8 +642,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
644
642
|
force_build=force_build,
|
|
645
643
|
)
|
|
646
644
|
|
|
647
|
-
def
|
|
648
|
-
env = super()._get_runtime_env()
|
|
645
|
+
def _get_serving_spec(self):
|
|
649
646
|
function_name_uri_map = {f.name: f.uri(self) for f in self.spec.function_refs}
|
|
650
647
|
|
|
651
648
|
serving_spec = {
|
|
@@ -658,9 +655,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
658
655
|
"graph_initializer": self.spec.graph_initializer,
|
|
659
656
|
"error_stream": self.spec.error_stream,
|
|
660
657
|
"track_models": self.spec.track_models,
|
|
661
|
-
"tracking_policy":
|
|
662
|
-
if self.spec.tracking_policy
|
|
663
|
-
else None,
|
|
658
|
+
"tracking_policy": None,
|
|
664
659
|
"default_content_type": self.spec.default_content_type,
|
|
665
660
|
}
|
|
666
661
|
|
|
@@ -668,8 +663,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
668
663
|
self._secrets = SecretsStore.from_list(self.spec.secret_sources)
|
|
669
664
|
serving_spec["secret_sources"] = self._secrets.to_serial()
|
|
670
665
|
|
|
671
|
-
|
|
672
|
-
return env
|
|
666
|
+
return json.dumps(serving_spec)
|
|
673
667
|
|
|
674
668
|
def to_mock_server(
|
|
675
669
|
self,
|
|
@@ -682,7 +676,6 @@ class ServingRuntime(RemoteRuntime):
|
|
|
682
676
|
"""create mock server object for local testing/emulation
|
|
683
677
|
|
|
684
678
|
:param namespace: one or list of namespaces/modules to search the steps classes/functions in
|
|
685
|
-
:param log_level: log level (error | info | debug)
|
|
686
679
|
:param current_function: specify if you want to simulate a child function, * for all functions
|
|
687
680
|
:param track_models: allow model tracking (disabled by default in the mock server)
|
|
688
681
|
:param workdir: working directory to locate the source code (if not the current one)
|
|
@@ -710,7 +703,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
710
703
|
verbose=self.verbose,
|
|
711
704
|
current_function=current_function,
|
|
712
705
|
graph_initializer=self.spec.graph_initializer,
|
|
713
|
-
track_models=
|
|
706
|
+
track_models=self.spec.track_models,
|
|
714
707
|
function_uri=self._function_uri(),
|
|
715
708
|
secret_sources=self.spec.secret_sources,
|
|
716
709
|
default_content_type=self.spec.default_content_type,
|
|
@@ -721,6 +714,7 @@ class ServingRuntime(RemoteRuntime):
|
|
|
721
714
|
namespace=namespace,
|
|
722
715
|
logger=logger,
|
|
723
716
|
is_mock=True,
|
|
717
|
+
monitoring_mock=track_models,
|
|
724
718
|
)
|
|
725
719
|
|
|
726
720
|
if workdir:
|
|
@@ -735,8 +729,11 @@ class ServingRuntime(RemoteRuntime):
|
|
|
735
729
|
example::
|
|
736
730
|
|
|
737
731
|
serving_fn = mlrun.new_function("serving", image="mlrun/mlrun", kind="serving")
|
|
738
|
-
serving_fn.add_model(
|
|
739
|
-
|
|
732
|
+
serving_fn.add_model(
|
|
733
|
+
"my-classifier",
|
|
734
|
+
model_path=model_path,
|
|
735
|
+
class_name="mlrun.frameworks.sklearn.SklearnModelServer",
|
|
736
|
+
)
|
|
740
737
|
serving_fn.plot(rankdir="LR")
|
|
741
738
|
|
|
742
739
|
:param filename: target filepath for the image (None for the notebook)
|