mlrun 1.6.4rc8__py3-none-any.whl → 1.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mlrun might be problematic. Click here for more details.
- mlrun/__init__.py +11 -1
- mlrun/__main__.py +40 -122
- mlrun/alerts/__init__.py +15 -0
- mlrun/alerts/alert.py +248 -0
- mlrun/api/schemas/__init__.py +5 -4
- mlrun/artifacts/__init__.py +8 -3
- mlrun/artifacts/base.py +47 -257
- mlrun/artifacts/dataset.py +11 -192
- mlrun/artifacts/manager.py +79 -47
- mlrun/artifacts/model.py +31 -159
- mlrun/artifacts/plots.py +23 -380
- mlrun/common/constants.py +74 -1
- mlrun/common/db/sql_session.py +5 -5
- mlrun/common/formatters/__init__.py +21 -0
- mlrun/common/formatters/artifact.py +45 -0
- mlrun/common/formatters/base.py +113 -0
- mlrun/common/formatters/feature_set.py +33 -0
- mlrun/common/formatters/function.py +46 -0
- mlrun/common/formatters/pipeline.py +53 -0
- mlrun/common/formatters/project.py +51 -0
- mlrun/common/formatters/run.py +29 -0
- mlrun/common/helpers.py +12 -3
- mlrun/common/model_monitoring/helpers.py +9 -5
- mlrun/{runtimes → common/runtimes}/constants.py +37 -9
- mlrun/common/schemas/__init__.py +31 -5
- mlrun/common/schemas/alert.py +202 -0
- mlrun/common/schemas/api_gateway.py +196 -0
- mlrun/common/schemas/artifact.py +25 -4
- mlrun/common/schemas/auth.py +16 -5
- mlrun/common/schemas/background_task.py +1 -1
- mlrun/common/schemas/client_spec.py +4 -2
- mlrun/common/schemas/common.py +7 -4
- mlrun/common/schemas/constants.py +3 -0
- mlrun/common/schemas/feature_store.py +74 -44
- mlrun/common/schemas/frontend_spec.py +15 -7
- mlrun/common/schemas/function.py +12 -1
- mlrun/common/schemas/hub.py +11 -18
- mlrun/common/schemas/memory_reports.py +2 -2
- mlrun/common/schemas/model_monitoring/__init__.py +20 -4
- mlrun/common/schemas/model_monitoring/constants.py +123 -42
- mlrun/common/schemas/model_monitoring/grafana.py +13 -9
- mlrun/common/schemas/model_monitoring/model_endpoints.py +101 -54
- mlrun/common/schemas/notification.py +71 -14
- mlrun/common/schemas/object.py +2 -2
- mlrun/{model_monitoring/controller_handler.py → common/schemas/pagination.py} +9 -12
- mlrun/common/schemas/pipeline.py +8 -1
- mlrun/common/schemas/project.py +69 -18
- mlrun/common/schemas/runs.py +7 -1
- mlrun/common/schemas/runtime_resource.py +8 -12
- mlrun/common/schemas/schedule.py +4 -4
- mlrun/common/schemas/tag.py +1 -2
- mlrun/common/schemas/workflow.py +12 -4
- mlrun/common/types.py +14 -1
- mlrun/config.py +154 -69
- mlrun/data_types/data_types.py +6 -1
- mlrun/data_types/spark.py +2 -2
- mlrun/data_types/to_pandas.py +67 -37
- mlrun/datastore/__init__.py +6 -8
- mlrun/datastore/alibaba_oss.py +131 -0
- mlrun/datastore/azure_blob.py +143 -42
- mlrun/datastore/base.py +102 -58
- mlrun/datastore/datastore.py +34 -13
- mlrun/datastore/datastore_profile.py +146 -20
- mlrun/datastore/dbfs_store.py +3 -7
- mlrun/datastore/filestore.py +1 -4
- mlrun/datastore/google_cloud_storage.py +97 -33
- mlrun/datastore/hdfs.py +56 -0
- mlrun/datastore/inmem.py +6 -3
- mlrun/datastore/redis.py +7 -2
- mlrun/datastore/s3.py +34 -12
- mlrun/datastore/snowflake_utils.py +45 -0
- mlrun/datastore/sources.py +303 -111
- mlrun/datastore/spark_utils.py +31 -2
- mlrun/datastore/store_resources.py +9 -7
- mlrun/datastore/storeytargets.py +151 -0
- mlrun/datastore/targets.py +453 -176
- mlrun/datastore/utils.py +72 -58
- mlrun/datastore/v3io.py +6 -1
- mlrun/db/base.py +274 -41
- mlrun/db/factory.py +1 -1
- mlrun/db/httpdb.py +893 -225
- mlrun/db/nopdb.py +291 -33
- mlrun/errors.py +36 -6
- mlrun/execution.py +115 -42
- mlrun/feature_store/__init__.py +0 -2
- mlrun/feature_store/api.py +65 -73
- mlrun/feature_store/common.py +7 -12
- mlrun/feature_store/feature_set.py +76 -55
- mlrun/feature_store/feature_vector.py +39 -31
- mlrun/feature_store/ingestion.py +7 -6
- mlrun/feature_store/retrieval/base.py +16 -11
- mlrun/feature_store/retrieval/dask_merger.py +2 -0
- mlrun/feature_store/retrieval/job.py +13 -4
- mlrun/feature_store/retrieval/local_merger.py +2 -0
- mlrun/feature_store/retrieval/spark_merger.py +24 -32
- mlrun/feature_store/steps.py +45 -34
- mlrun/features.py +11 -21
- mlrun/frameworks/_common/artifacts_library.py +9 -9
- mlrun/frameworks/_common/mlrun_interface.py +5 -5
- mlrun/frameworks/_common/model_handler.py +48 -48
- mlrun/frameworks/_common/plan.py +5 -6
- mlrun/frameworks/_common/producer.py +3 -4
- mlrun/frameworks/_common/utils.py +5 -5
- mlrun/frameworks/_dl_common/loggers/logger.py +6 -7
- mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +9 -9
- mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +23 -47
- mlrun/frameworks/_ml_common/artifacts_library.py +1 -2
- mlrun/frameworks/_ml_common/loggers/logger.py +3 -4
- mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +4 -5
- mlrun/frameworks/_ml_common/model_handler.py +24 -24
- mlrun/frameworks/_ml_common/pkl_model_server.py +2 -2
- mlrun/frameworks/_ml_common/plan.py +2 -2
- mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +2 -3
- mlrun/frameworks/_ml_common/plans/dataset_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +3 -3
- mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +4 -4
- mlrun/frameworks/_ml_common/utils.py +4 -4
- mlrun/frameworks/auto_mlrun/auto_mlrun.py +9 -9
- mlrun/frameworks/huggingface/model_server.py +4 -4
- mlrun/frameworks/lgbm/__init__.py +33 -33
- mlrun/frameworks/lgbm/callbacks/callback.py +2 -4
- mlrun/frameworks/lgbm/callbacks/logging_callback.py +4 -5
- mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +4 -5
- mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +1 -3
- mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +6 -6
- mlrun/frameworks/lgbm/model_handler.py +10 -10
- mlrun/frameworks/lgbm/model_server.py +6 -6
- mlrun/frameworks/lgbm/utils.py +5 -5
- mlrun/frameworks/onnx/dataset.py +8 -8
- mlrun/frameworks/onnx/mlrun_interface.py +3 -3
- mlrun/frameworks/onnx/model_handler.py +6 -6
- mlrun/frameworks/onnx/model_server.py +7 -7
- mlrun/frameworks/parallel_coordinates.py +6 -6
- mlrun/frameworks/pytorch/__init__.py +18 -18
- mlrun/frameworks/pytorch/callbacks/callback.py +4 -5
- mlrun/frameworks/pytorch/callbacks/logging_callback.py +17 -17
- mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +23 -29
- mlrun/frameworks/pytorch/callbacks_handler.py +38 -38
- mlrun/frameworks/pytorch/mlrun_interface.py +20 -20
- mlrun/frameworks/pytorch/model_handler.py +17 -17
- mlrun/frameworks/pytorch/model_server.py +7 -7
- mlrun/frameworks/sklearn/__init__.py +13 -13
- mlrun/frameworks/sklearn/estimator.py +4 -4
- mlrun/frameworks/sklearn/metrics_library.py +14 -14
- mlrun/frameworks/sklearn/mlrun_interface.py +16 -9
- mlrun/frameworks/sklearn/model_handler.py +2 -2
- mlrun/frameworks/tf_keras/__init__.py +10 -7
- mlrun/frameworks/tf_keras/callbacks/logging_callback.py +15 -15
- mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +11 -11
- mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +19 -23
- mlrun/frameworks/tf_keras/mlrun_interface.py +9 -11
- mlrun/frameworks/tf_keras/model_handler.py +14 -14
- mlrun/frameworks/tf_keras/model_server.py +6 -6
- mlrun/frameworks/xgboost/__init__.py +13 -13
- mlrun/frameworks/xgboost/model_handler.py +6 -6
- mlrun/k8s_utils.py +61 -17
- mlrun/launcher/__init__.py +1 -1
- mlrun/launcher/base.py +16 -15
- mlrun/launcher/client.py +13 -11
- mlrun/launcher/factory.py +1 -1
- mlrun/launcher/local.py +23 -13
- mlrun/launcher/remote.py +17 -10
- mlrun/lists.py +7 -6
- mlrun/model.py +478 -103
- mlrun/model_monitoring/__init__.py +1 -1
- mlrun/model_monitoring/api.py +163 -371
- mlrun/{runtimes/mpijob/v1alpha1.py → model_monitoring/applications/__init__.py} +9 -15
- mlrun/model_monitoring/applications/_application_steps.py +188 -0
- mlrun/model_monitoring/applications/base.py +108 -0
- mlrun/model_monitoring/applications/context.py +341 -0
- mlrun/model_monitoring/{evidently_application.py → applications/evidently_base.py} +27 -22
- mlrun/model_monitoring/applications/histogram_data_drift.py +354 -0
- mlrun/model_monitoring/applications/results.py +99 -0
- mlrun/model_monitoring/controller.py +131 -278
- mlrun/model_monitoring/db/__init__.py +18 -0
- mlrun/model_monitoring/db/stores/__init__.py +136 -0
- mlrun/model_monitoring/db/stores/base/__init__.py +15 -0
- mlrun/model_monitoring/db/stores/base/store.py +213 -0
- mlrun/model_monitoring/db/stores/sqldb/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/sqldb/models/__init__.py +71 -0
- mlrun/model_monitoring/db/stores/sqldb/models/base.py +190 -0
- mlrun/model_monitoring/db/stores/sqldb/models/mysql.py +103 -0
- mlrun/model_monitoring/{stores/models/mysql.py → db/stores/sqldb/models/sqlite.py} +19 -13
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py +659 -0
- mlrun/model_monitoring/db/stores/v3io_kv/__init__.py +13 -0
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +726 -0
- mlrun/model_monitoring/db/tsdb/__init__.py +105 -0
- mlrun/model_monitoring/db/tsdb/base.py +448 -0
- mlrun/model_monitoring/db/tsdb/helpers.py +30 -0
- mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +279 -0
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +42 -0
- mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +507 -0
- mlrun/model_monitoring/db/tsdb/v3io/__init__.py +15 -0
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +158 -0
- mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +849 -0
- mlrun/model_monitoring/features_drift_table.py +134 -106
- mlrun/model_monitoring/helpers.py +199 -55
- mlrun/model_monitoring/metrics/__init__.py +13 -0
- mlrun/model_monitoring/metrics/histogram_distance.py +127 -0
- mlrun/model_monitoring/model_endpoint.py +3 -2
- mlrun/model_monitoring/stream_processing.py +134 -398
- mlrun/model_monitoring/tracking_policy.py +9 -2
- mlrun/model_monitoring/writer.py +161 -125
- mlrun/package/__init__.py +6 -6
- mlrun/package/context_handler.py +5 -5
- mlrun/package/packager.py +7 -7
- mlrun/package/packagers/default_packager.py +8 -8
- mlrun/package/packagers/numpy_packagers.py +15 -15
- mlrun/package/packagers/pandas_packagers.py +5 -5
- mlrun/package/packagers/python_standard_library_packagers.py +10 -10
- mlrun/package/packagers_manager.py +19 -23
- mlrun/package/utils/_formatter.py +6 -6
- mlrun/package/utils/_pickler.py +2 -2
- mlrun/package/utils/_supported_format.py +4 -4
- mlrun/package/utils/log_hint_utils.py +2 -2
- mlrun/package/utils/type_hint_utils.py +4 -9
- mlrun/platforms/__init__.py +11 -10
- mlrun/platforms/iguazio.py +24 -203
- mlrun/projects/operations.py +52 -25
- mlrun/projects/pipelines.py +191 -197
- mlrun/projects/project.py +1227 -400
- mlrun/render.py +16 -19
- mlrun/run.py +209 -184
- mlrun/runtimes/__init__.py +83 -15
- mlrun/runtimes/base.py +51 -35
- mlrun/runtimes/daskjob.py +17 -10
- mlrun/runtimes/databricks_job/databricks_cancel_task.py +1 -1
- mlrun/runtimes/databricks_job/databricks_runtime.py +8 -7
- mlrun/runtimes/databricks_job/databricks_wrapper.py +1 -1
- mlrun/runtimes/funcdoc.py +1 -29
- mlrun/runtimes/function_reference.py +1 -1
- mlrun/runtimes/kubejob.py +34 -128
- mlrun/runtimes/local.py +40 -11
- mlrun/runtimes/mpijob/__init__.py +0 -20
- mlrun/runtimes/mpijob/abstract.py +9 -10
- mlrun/runtimes/mpijob/v1.py +1 -1
- mlrun/{model_monitoring/stores/models/sqlite.py → runtimes/nuclio/__init__.py} +7 -9
- mlrun/runtimes/nuclio/api_gateway.py +769 -0
- mlrun/runtimes/nuclio/application/__init__.py +15 -0
- mlrun/runtimes/nuclio/application/application.py +758 -0
- mlrun/runtimes/nuclio/application/reverse_proxy.go +95 -0
- mlrun/runtimes/{function.py → nuclio/function.py} +200 -83
- mlrun/runtimes/{nuclio.py → nuclio/nuclio.py} +6 -6
- mlrun/runtimes/{serving.py → nuclio/serving.py} +65 -68
- mlrun/runtimes/pod.py +281 -101
- mlrun/runtimes/remotesparkjob.py +12 -9
- mlrun/runtimes/sparkjob/spark3job.py +67 -51
- mlrun/runtimes/utils.py +41 -75
- mlrun/secrets.py +9 -5
- mlrun/serving/__init__.py +8 -1
- mlrun/serving/remote.py +2 -7
- mlrun/serving/routers.py +85 -69
- mlrun/serving/server.py +69 -44
- mlrun/serving/states.py +209 -36
- mlrun/serving/utils.py +22 -14
- mlrun/serving/v1_serving.py +6 -7
- mlrun/serving/v2_serving.py +133 -54
- mlrun/track/tracker.py +2 -1
- mlrun/track/tracker_manager.py +3 -3
- mlrun/track/trackers/mlflow_tracker.py +6 -2
- mlrun/utils/async_http.py +6 -8
- mlrun/utils/azure_vault.py +1 -1
- mlrun/utils/clones.py +1 -2
- mlrun/utils/condition_evaluator.py +3 -3
- mlrun/utils/db.py +21 -3
- mlrun/utils/helpers.py +405 -225
- mlrun/utils/http.py +3 -6
- mlrun/utils/logger.py +112 -16
- mlrun/utils/notifications/notification/__init__.py +17 -13
- mlrun/utils/notifications/notification/base.py +50 -2
- mlrun/utils/notifications/notification/console.py +2 -0
- mlrun/utils/notifications/notification/git.py +24 -1
- mlrun/utils/notifications/notification/ipython.py +3 -1
- mlrun/utils/notifications/notification/slack.py +96 -21
- mlrun/utils/notifications/notification/webhook.py +59 -2
- mlrun/utils/notifications/notification_pusher.py +149 -30
- mlrun/utils/regex.py +9 -0
- mlrun/utils/retryer.py +208 -0
- mlrun/utils/singleton.py +1 -1
- mlrun/utils/v3io_clients.py +4 -6
- mlrun/utils/version/version.json +2 -2
- mlrun/utils/version/version.py +2 -6
- mlrun-1.7.0.dist-info/METADATA +378 -0
- mlrun-1.7.0.dist-info/RECORD +351 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/WHEEL +1 -1
- mlrun/feature_store/retrieval/conversion.py +0 -273
- mlrun/kfpops.py +0 -868
- mlrun/model_monitoring/application.py +0 -310
- mlrun/model_monitoring/batch.py +0 -1095
- mlrun/model_monitoring/prometheus.py +0 -219
- mlrun/model_monitoring/stores/__init__.py +0 -111
- mlrun/model_monitoring/stores/kv_model_endpoint_store.py +0 -576
- mlrun/model_monitoring/stores/model_endpoint_store.py +0 -147
- mlrun/model_monitoring/stores/models/__init__.py +0 -27
- mlrun/model_monitoring/stores/models/base.py +0 -84
- mlrun/model_monitoring/stores/sql_model_endpoint_store.py +0 -384
- mlrun/platforms/other.py +0 -306
- mlrun-1.6.4rc8.dist-info/METADATA +0 -272
- mlrun-1.6.4rc8.dist-info/RECORD +0 -314
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/LICENSE +0 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/entry_points.txt +0 -0
- {mlrun-1.6.4rc8.dist-info → mlrun-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -17,7 +17,7 @@ import functools
|
|
|
17
17
|
import inspect
|
|
18
18
|
from abc import ABC
|
|
19
19
|
from types import FunctionType, MethodType
|
|
20
|
-
from typing import Any,
|
|
20
|
+
from typing import Any, Generic, Union
|
|
21
21
|
|
|
22
22
|
from .utils import CommonTypes
|
|
23
23
|
|
|
@@ -173,7 +173,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
|
|
|
173
173
|
def _insert_properties(
|
|
174
174
|
cls,
|
|
175
175
|
obj: CommonTypes.MLRunInterfaceableType,
|
|
176
|
-
properties:
|
|
176
|
+
properties: dict[str, Any] = None,
|
|
177
177
|
):
|
|
178
178
|
"""
|
|
179
179
|
Insert the properties of the interface to the object. The properties default values are being copied (not deep
|
|
@@ -238,7 +238,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
|
|
|
238
238
|
|
|
239
239
|
@classmethod
|
|
240
240
|
def _replace_properties(
|
|
241
|
-
cls, obj: CommonTypes.MLRunInterfaceableType, properties:
|
|
241
|
+
cls, obj: CommonTypes.MLRunInterfaceableType, properties: dict[str, Any] = None
|
|
242
242
|
):
|
|
243
243
|
"""
|
|
244
244
|
Replace the properties of the given object according to the configuration in the MLRun interface.
|
|
@@ -282,7 +282,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
|
|
|
282
282
|
|
|
283
283
|
@classmethod
|
|
284
284
|
def _replace_functions(
|
|
285
|
-
cls, obj: CommonTypes.MLRunInterfaceableType, functions:
|
|
285
|
+
cls, obj: CommonTypes.MLRunInterfaceableType, functions: list[str] = None
|
|
286
286
|
):
|
|
287
287
|
"""
|
|
288
288
|
Replace the functions / methods of the given object according to the configuration in the MLRun interface.
|
|
@@ -420,7 +420,7 @@ class MLRunInterface(ABC, Generic[CommonTypes.MLRunInterfaceableType]):
|
|
|
420
420
|
passed_args: tuple = None,
|
|
421
421
|
passed_kwargs: dict = None,
|
|
422
422
|
default_value: Any = None,
|
|
423
|
-
) ->
|
|
423
|
+
) -> tuple[Any, Union[str, int, None]]:
|
|
424
424
|
"""
|
|
425
425
|
Get a passed argument (from *args or **kwargs) to a function. If the argument was not found the default value
|
|
426
426
|
will be returned. In addition, the keyword of the argument in `kwargs` or the index of the argument in `args`
|
|
@@ -20,7 +20,7 @@ import sys
|
|
|
20
20
|
import zipfile
|
|
21
21
|
from abc import ABC, abstractmethod
|
|
22
22
|
from types import MethodType
|
|
23
|
-
from typing import Any,
|
|
23
|
+
from typing import Any, Generic, Union
|
|
24
24
|
|
|
25
25
|
import numpy as np
|
|
26
26
|
|
|
@@ -57,10 +57,10 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
57
57
|
model_path: CommonTypes.PathType = None,
|
|
58
58
|
model_name: str = None,
|
|
59
59
|
modules_map: Union[
|
|
60
|
-
|
|
60
|
+
dict[str, Union[None, str, list[str]]], CommonTypes.PathType
|
|
61
61
|
] = None,
|
|
62
62
|
custom_objects_map: Union[
|
|
63
|
-
|
|
63
|
+
dict[str, Union[str, list[str]]], CommonTypes.PathType
|
|
64
64
|
] = None,
|
|
65
65
|
custom_objects_directory: CommonTypes.PathType = None,
|
|
66
66
|
context: MLClientCtx = None,
|
|
@@ -224,7 +224,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
224
224
|
return self._tag
|
|
225
225
|
|
|
226
226
|
@property
|
|
227
|
-
def inputs(self) -> Union[
|
|
227
|
+
def inputs(self) -> Union[list[Feature], None]:
|
|
228
228
|
"""
|
|
229
229
|
Get the input ports features list of this model's artifact. If the inputs are not set, None will be returned.
|
|
230
230
|
|
|
@@ -233,7 +233,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
233
233
|
return self._inputs
|
|
234
234
|
|
|
235
235
|
@property
|
|
236
|
-
def outputs(self) -> Union[
|
|
236
|
+
def outputs(self) -> Union[list[Feature], None]:
|
|
237
237
|
"""
|
|
238
238
|
Get the output ports features list of this model's artifact. If the outputs are not set, None will be returned.
|
|
239
239
|
|
|
@@ -242,7 +242,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
242
242
|
return self._outputs
|
|
243
243
|
|
|
244
244
|
@property
|
|
245
|
-
def labels(self) ->
|
|
245
|
+
def labels(self) -> dict[str, str]:
|
|
246
246
|
"""
|
|
247
247
|
Get the labels dictionary of this model's artifact. These will be the labels that will be logged with the model.
|
|
248
248
|
|
|
@@ -251,7 +251,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
251
251
|
return self._labels
|
|
252
252
|
|
|
253
253
|
@property
|
|
254
|
-
def parameters(self) ->
|
|
254
|
+
def parameters(self) -> dict[str, str]:
|
|
255
255
|
"""
|
|
256
256
|
Get the parameters dictionary of this model's artifact. These will be the parameters that will be logged with
|
|
257
257
|
the model.
|
|
@@ -262,7 +262,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
262
262
|
|
|
263
263
|
def get_artifacts(
|
|
264
264
|
self, committed_only: bool = False
|
|
265
|
-
) ->
|
|
265
|
+
) -> dict[str, CommonTypes.ExtraDataType]:
|
|
266
266
|
"""
|
|
267
267
|
Get the registered artifacts of this model's artifact. By default all the artifacts (logged and to be logged -
|
|
268
268
|
committed only) will be returned. To get only the artifacts registered in the current run whom are committed and
|
|
@@ -306,7 +306,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
306
306
|
def set_inputs(
|
|
307
307
|
self,
|
|
308
308
|
from_sample: CommonTypes.IOSampleType = None,
|
|
309
|
-
features:
|
|
309
|
+
features: list[Feature] = None,
|
|
310
310
|
**kwargs,
|
|
311
311
|
):
|
|
312
312
|
"""
|
|
@@ -335,7 +335,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
335
335
|
def set_outputs(
|
|
336
336
|
self,
|
|
337
337
|
from_sample: CommonTypes.IOSampleType = None,
|
|
338
|
-
features:
|
|
338
|
+
features: list[Feature] = None,
|
|
339
339
|
**kwargs,
|
|
340
340
|
):
|
|
341
341
|
"""
|
|
@@ -363,8 +363,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
363
363
|
|
|
364
364
|
def set_labels(
|
|
365
365
|
self,
|
|
366
|
-
to_add:
|
|
367
|
-
to_remove:
|
|
366
|
+
to_add: dict[str, Union[str, int, float]] = None,
|
|
367
|
+
to_remove: list[str] = None,
|
|
368
368
|
):
|
|
369
369
|
"""
|
|
370
370
|
Update the labels dictionary of this model artifact.
|
|
@@ -383,8 +383,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
383
383
|
|
|
384
384
|
def set_parameters(
|
|
385
385
|
self,
|
|
386
|
-
to_add:
|
|
387
|
-
to_remove:
|
|
386
|
+
to_add: dict[str, Union[str, int, float]] = None,
|
|
387
|
+
to_remove: list[str] = None,
|
|
388
388
|
):
|
|
389
389
|
"""
|
|
390
390
|
Update the parameters dictionary of this model artifact.
|
|
@@ -403,8 +403,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
403
403
|
|
|
404
404
|
def set_metrics(
|
|
405
405
|
self,
|
|
406
|
-
to_add:
|
|
407
|
-
to_remove:
|
|
406
|
+
to_add: dict[str, CommonTypes.ExtraDataType] = None,
|
|
407
|
+
to_remove: list[str] = None,
|
|
408
408
|
):
|
|
409
409
|
"""
|
|
410
410
|
Update the metrics dictionary of this model artifact.
|
|
@@ -423,8 +423,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
423
423
|
|
|
424
424
|
def set_extra_data(
|
|
425
425
|
self,
|
|
426
|
-
to_add:
|
|
427
|
-
to_remove:
|
|
426
|
+
to_add: dict[str, CommonTypes.ExtraDataType] = None,
|
|
427
|
+
to_remove: list[str] = None,
|
|
428
428
|
):
|
|
429
429
|
"""
|
|
430
430
|
Update the extra data dictionary of this model artifact.
|
|
@@ -442,7 +442,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
442
442
|
self._extra_data.pop(label)
|
|
443
443
|
|
|
444
444
|
def register_artifacts(
|
|
445
|
-
self, artifacts: Union[Artifact,
|
|
445
|
+
self, artifacts: Union[Artifact, list[Artifact], dict[str, Artifact]]
|
|
446
446
|
):
|
|
447
447
|
"""
|
|
448
448
|
Register the given artifacts, so they will be logged as extra data with the model of this handler. Notice: The
|
|
@@ -466,7 +466,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
466
466
|
@abstractmethod
|
|
467
467
|
def save(
|
|
468
468
|
self, output_path: CommonTypes.PathType = None, **kwargs
|
|
469
|
-
) -> Union[
|
|
469
|
+
) -> Union[dict[str, Artifact], None]:
|
|
470
470
|
"""
|
|
471
471
|
Save the handled model at the given output path.
|
|
472
472
|
|
|
@@ -525,13 +525,13 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
525
525
|
def log(
|
|
526
526
|
self,
|
|
527
527
|
tag: str = "",
|
|
528
|
-
labels:
|
|
529
|
-
parameters:
|
|
530
|
-
inputs:
|
|
531
|
-
outputs:
|
|
532
|
-
metrics:
|
|
533
|
-
artifacts:
|
|
534
|
-
extra_data:
|
|
528
|
+
labels: dict[str, Union[str, int, float]] = None,
|
|
529
|
+
parameters: dict[str, Union[str, int, float]] = None,
|
|
530
|
+
inputs: list[Feature] = None,
|
|
531
|
+
outputs: list[Feature] = None,
|
|
532
|
+
metrics: dict[str, Union[int, float]] = None,
|
|
533
|
+
artifacts: dict[str, Artifact] = None,
|
|
534
|
+
extra_data: dict[str, CommonTypes.ExtraDataType] = None,
|
|
535
535
|
**kwargs,
|
|
536
536
|
):
|
|
537
537
|
"""
|
|
@@ -630,13 +630,13 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
630
630
|
|
|
631
631
|
def update(
|
|
632
632
|
self,
|
|
633
|
-
labels:
|
|
634
|
-
parameters:
|
|
635
|
-
inputs:
|
|
636
|
-
outputs:
|
|
637
|
-
metrics:
|
|
638
|
-
artifacts:
|
|
639
|
-
extra_data:
|
|
633
|
+
labels: dict[str, Union[str, int, float]] = None,
|
|
634
|
+
parameters: dict[str, Union[str, int, float]] = None,
|
|
635
|
+
inputs: list[Feature] = None,
|
|
636
|
+
outputs: list[Feature] = None,
|
|
637
|
+
metrics: dict[str, Union[int, float]] = None,
|
|
638
|
+
artifacts: dict[str, Artifact] = None,
|
|
639
|
+
extra_data: dict[str, CommonTypes.ExtraDataType] = None,
|
|
640
640
|
**kwargs,
|
|
641
641
|
):
|
|
642
642
|
"""
|
|
@@ -857,7 +857,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
857
857
|
|
|
858
858
|
# Read the modules map if given as a json:
|
|
859
859
|
if isinstance(self._modules_map, str):
|
|
860
|
-
with open(self._modules_map
|
|
860
|
+
with open(self._modules_map) as map_json_file:
|
|
861
861
|
self._modules_map = json.loads(map_json_file.read())
|
|
862
862
|
|
|
863
863
|
# Start importing the modules according to the map:
|
|
@@ -887,7 +887,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
887
887
|
|
|
888
888
|
# Read the custom objects map if given as a json:
|
|
889
889
|
if isinstance(self._custom_objects_map, str):
|
|
890
|
-
with open(self._custom_objects_map
|
|
890
|
+
with open(self._custom_objects_map) as map_json_file:
|
|
891
891
|
self._custom_objects_map = json.loads(map_json_file.read())
|
|
892
892
|
|
|
893
893
|
# Unzip the custom objects files if the directory was given as a zip:
|
|
@@ -917,7 +917,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
917
917
|
),
|
|
918
918
|
}
|
|
919
919
|
|
|
920
|
-
def _log_modules(self) ->
|
|
920
|
+
def _log_modules(self) -> dict[str, Artifact]:
|
|
921
921
|
"""
|
|
922
922
|
Log the modules, returning the modules map json file logged as an artifact.
|
|
923
923
|
|
|
@@ -946,7 +946,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
946
946
|
|
|
947
947
|
return artifacts
|
|
948
948
|
|
|
949
|
-
def _log_custom_objects(self) ->
|
|
949
|
+
def _log_custom_objects(self) -> dict[str, Artifact]:
|
|
950
950
|
"""
|
|
951
951
|
Log the custom objects, returning their artifacts:
|
|
952
952
|
|
|
@@ -1002,8 +1002,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1002
1002
|
|
|
1003
1003
|
def _read_io_samples(
|
|
1004
1004
|
self,
|
|
1005
|
-
samples: Union[CommonTypes.IOSampleType,
|
|
1006
|
-
) ->
|
|
1005
|
+
samples: Union[CommonTypes.IOSampleType, list[CommonTypes.IOSampleType]],
|
|
1006
|
+
) -> list[Feature]:
|
|
1007
1007
|
"""
|
|
1008
1008
|
Read the given inputs / output sample to / from the model into a list of MLRun Features (ports) to log in
|
|
1009
1009
|
the model's artifact.
|
|
@@ -1062,7 +1062,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1062
1062
|
|
|
1063
1063
|
@staticmethod
|
|
1064
1064
|
def _validate_modules_parameter(
|
|
1065
|
-
modules_map: Union[
|
|
1065
|
+
modules_map: Union[dict[str, Union[None, str, list[str]]], str],
|
|
1066
1066
|
):
|
|
1067
1067
|
"""
|
|
1068
1068
|
Validate the given modules parameter.
|
|
@@ -1090,7 +1090,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1090
1090
|
|
|
1091
1091
|
@staticmethod
|
|
1092
1092
|
def _validate_custom_objects_parameters(
|
|
1093
|
-
custom_objects_map: Union[
|
|
1093
|
+
custom_objects_map: Union[dict[str, Union[str, list[str]]], str],
|
|
1094
1094
|
custom_objects_directory: str,
|
|
1095
1095
|
):
|
|
1096
1096
|
"""
|
|
@@ -1154,8 +1154,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1154
1154
|
|
|
1155
1155
|
@staticmethod
|
|
1156
1156
|
def _import_module(
|
|
1157
|
-
module_path: str, objects_names: Union[
|
|
1158
|
-
) ->
|
|
1157
|
+
module_path: str, objects_names: Union[list[str], None]
|
|
1158
|
+
) -> dict[str, Any]:
|
|
1159
1159
|
"""
|
|
1160
1160
|
Import the given objects by their names from the given module path by the following rules:
|
|
1161
1161
|
|
|
@@ -1199,8 +1199,8 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1199
1199
|
|
|
1200
1200
|
@staticmethod
|
|
1201
1201
|
def _import_custom_object(
|
|
1202
|
-
py_file_path: str, objects_names:
|
|
1203
|
-
) ->
|
|
1202
|
+
py_file_path: str, objects_names: list[str]
|
|
1203
|
+
) -> dict[str, Any]:
|
|
1204
1204
|
"""
|
|
1205
1205
|
Import the given objects by their names from the given python file as: from 'py_file_path' import 'object_name'.
|
|
1206
1206
|
If an object specified is already imported, a reference would simply be returned.
|
|
@@ -1232,7 +1232,7 @@ class ModelHandler(ABC, Generic[CommonTypes.ModelType, CommonTypes.IOSampleType]
|
|
|
1232
1232
|
return objects_imports
|
|
1233
1233
|
|
|
1234
1234
|
|
|
1235
|
-
def with_mlrun_interface(interface:
|
|
1235
|
+
def with_mlrun_interface(interface: type[MLRunInterface]):
|
|
1236
1236
|
"""
|
|
1237
1237
|
Decorator configure for decorating a ModelHandler method (expecting 'self' to be the first argument) to add the
|
|
1238
1238
|
given MLRun interface into the model before executing the method and remove it afterwards.
|
|
@@ -1261,7 +1261,7 @@ def with_mlrun_interface(interface: Type[MLRunInterface]):
|
|
|
1261
1261
|
return decorator
|
|
1262
1262
|
|
|
1263
1263
|
|
|
1264
|
-
def without_mlrun_interface(interface:
|
|
1264
|
+
def without_mlrun_interface(interface: type[MLRunInterface]):
|
|
1265
1265
|
"""
|
|
1266
1266
|
Decorator configure for decorating a ModelHandler method (expecting 'self' to be the first argument) to remove the
|
|
1267
1267
|
given MLRun interface from the model before executing the method and restore it afterwards.
|
mlrun/frameworks/_common/plan.py
CHANGED
|
@@ -11,13 +11,12 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
from abc import ABC, abstractmethod
|
|
16
|
-
from typing import Dict
|
|
17
16
|
|
|
18
17
|
import mlrun
|
|
19
18
|
from mlrun.artifacts import Artifact
|
|
20
|
-
from mlrun.utils.helpers import
|
|
19
|
+
from mlrun.utils.helpers import is_jupyter
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
class Plan(ABC):
|
|
@@ -33,7 +32,7 @@ class Plan(ABC):
|
|
|
33
32
|
self._artifacts = {} # type: Dict[str, Artifact]
|
|
34
33
|
|
|
35
34
|
@property
|
|
36
|
-
def artifacts(self) ->
|
|
35
|
+
def artifacts(self) -> dict[str, Artifact]:
|
|
37
36
|
"""
|
|
38
37
|
Get the plan's produced artifacts.
|
|
39
38
|
|
|
@@ -59,7 +58,7 @@ class Plan(ABC):
|
|
|
59
58
|
pass
|
|
60
59
|
|
|
61
60
|
@abstractmethod
|
|
62
|
-
def produce(self, *args, **kwargs) ->
|
|
61
|
+
def produce(self, *args, **kwargs) -> dict[str, Artifact]:
|
|
63
62
|
"""
|
|
64
63
|
Produce the artifact according to this plan.
|
|
65
64
|
|
|
@@ -85,7 +84,7 @@ class Plan(ABC):
|
|
|
85
84
|
return
|
|
86
85
|
|
|
87
86
|
# Call the correct display method according to the kernel:
|
|
88
|
-
if
|
|
87
|
+
if is_jupyter:
|
|
89
88
|
self._gui_display()
|
|
90
89
|
else:
|
|
91
90
|
self._cli_display()
|
|
@@ -12,7 +12,6 @@
|
|
|
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, List
|
|
16
15
|
|
|
17
16
|
import mlrun
|
|
18
17
|
from mlrun.artifacts import Artifact
|
|
@@ -29,7 +28,7 @@ class Producer:
|
|
|
29
28
|
def __init__(
|
|
30
29
|
self,
|
|
31
30
|
context: mlrun.MLClientCtx = None,
|
|
32
|
-
plans:
|
|
31
|
+
plans: list[Plan] = None,
|
|
33
32
|
):
|
|
34
33
|
"""
|
|
35
34
|
Initialize a producer with the given plans. The producer will log the produced artifacts using the given
|
|
@@ -68,7 +67,7 @@ class Producer:
|
|
|
68
67
|
return self._context
|
|
69
68
|
|
|
70
69
|
@property
|
|
71
|
-
def artifacts(self) ->
|
|
70
|
+
def artifacts(self) -> dict[str, Artifact]:
|
|
72
71
|
"""
|
|
73
72
|
Get the logged artifacts.
|
|
74
73
|
|
|
@@ -92,7 +91,7 @@ class Producer:
|
|
|
92
91
|
"""
|
|
93
92
|
self._context = context
|
|
94
93
|
|
|
95
|
-
def set_plans(self, plans:
|
|
94
|
+
def set_plans(self, plans: list[Plan]):
|
|
96
95
|
"""
|
|
97
96
|
Update the plans of this logger to the given list of plans here.
|
|
98
97
|
|
|
@@ -16,7 +16,7 @@ import re
|
|
|
16
16
|
from abc import ABC
|
|
17
17
|
from enum import Enum
|
|
18
18
|
from pathlib import Path
|
|
19
|
-
from typing import Any,
|
|
19
|
+
from typing import Any, TypeVar, Union
|
|
20
20
|
|
|
21
21
|
import numpy as np
|
|
22
22
|
import pandas as pd
|
|
@@ -42,10 +42,10 @@ class CommonTypes(ABC):
|
|
|
42
42
|
MLRunInterfaceableType = TypeVar("MLRunInterfaceableType")
|
|
43
43
|
|
|
44
44
|
# Type for a MLRun Interface restoration tuple as returned from 'remove_interface':
|
|
45
|
-
MLRunInterfaceRestorationType =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
MLRunInterfaceRestorationType = tuple[
|
|
46
|
+
dict[str, Any], # Interface properties.
|
|
47
|
+
dict[str, Any], # Replaced properties.
|
|
48
|
+
list[str], # Replaced methods and functions.
|
|
49
49
|
]
|
|
50
50
|
|
|
51
51
|
# Common dataset type to all frameworks:
|
|
@@ -12,7 +12,6 @@
|
|
|
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, List
|
|
16
15
|
|
|
17
16
|
import mlrun
|
|
18
17
|
|
|
@@ -79,7 +78,7 @@ class Logger:
|
|
|
79
78
|
return self._mode
|
|
80
79
|
|
|
81
80
|
@property
|
|
82
|
-
def training_results(self) ->
|
|
81
|
+
def training_results(self) -> dict[str, list[list[float]]]:
|
|
83
82
|
"""
|
|
84
83
|
Get the training results logged. The results will be stored in a dictionary where each key is the metric name
|
|
85
84
|
and the value is a list of lists of values. The first list is by epoch and the second list is by iteration
|
|
@@ -90,7 +89,7 @@ class Logger:
|
|
|
90
89
|
return self._training_results
|
|
91
90
|
|
|
92
91
|
@property
|
|
93
|
-
def validation_results(self) ->
|
|
92
|
+
def validation_results(self) -> dict[str, list[list[float]]]:
|
|
94
93
|
"""
|
|
95
94
|
Get the validation results logged. The results will be stored in a dictionary where each key is the metric name
|
|
96
95
|
and the value is a list of lists of values. The first list is by epoch and the second list is by iteration
|
|
@@ -101,7 +100,7 @@ class Logger:
|
|
|
101
100
|
return self._validation_results
|
|
102
101
|
|
|
103
102
|
@property
|
|
104
|
-
def training_summaries(self) ->
|
|
103
|
+
def training_summaries(self) -> dict[str, list[float]]:
|
|
105
104
|
"""
|
|
106
105
|
Get the training summaries of the metrics results. The summaries will be stored in a dictionary where each key
|
|
107
106
|
is the metric names and the value is a list of all the summary values per epoch.
|
|
@@ -111,7 +110,7 @@ class Logger:
|
|
|
111
110
|
return self._training_summaries
|
|
112
111
|
|
|
113
112
|
@property
|
|
114
|
-
def validation_summaries(self) ->
|
|
113
|
+
def validation_summaries(self) -> dict[str, list[float]]:
|
|
115
114
|
"""
|
|
116
115
|
Get the validation summaries of the metrics results. The summaries will be stored in a dictionary where each key
|
|
117
116
|
is the metric names and the value is a list of all the summary values per epoch.
|
|
@@ -121,7 +120,7 @@ class Logger:
|
|
|
121
120
|
return self._validation_summaries
|
|
122
121
|
|
|
123
122
|
@property
|
|
124
|
-
def static_hyperparameters(self) ->
|
|
123
|
+
def static_hyperparameters(self) -> dict[str, DLTypes.TrackableType]:
|
|
125
124
|
"""
|
|
126
125
|
Get the static hyperparameters logged. The hyperparameters will be stored in a dictionary where each key is the
|
|
127
126
|
hyperparameter name and the value is his logged value.
|
|
@@ -131,7 +130,7 @@ class Logger:
|
|
|
131
130
|
return self._static_hyperparameters
|
|
132
131
|
|
|
133
132
|
@property
|
|
134
|
-
def dynamic_hyperparameters(self) ->
|
|
133
|
+
def dynamic_hyperparameters(self) -> dict[str, list[DLTypes.TrackableType]]:
|
|
135
134
|
"""
|
|
136
135
|
Get the dynamic hyperparameters logged. The hyperparameters will be stored in a dictionary where each key is the
|
|
137
136
|
hyperparameter name and the value is a list of his logged values per epoch.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
#
|
|
15
15
|
import itertools
|
|
16
|
-
from typing import
|
|
16
|
+
from typing import Union
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import plotly.graph_objects as go
|
|
@@ -63,7 +63,7 @@ class MLRunLogger(Logger):
|
|
|
63
63
|
:param context: MLRun context to log to. The context parameters can be logged as static
|
|
64
64
|
hyperparameters.
|
|
65
65
|
"""
|
|
66
|
-
super(
|
|
66
|
+
super().__init__(context=context)
|
|
67
67
|
|
|
68
68
|
# Prepare the artifacts collection:
|
|
69
69
|
self._artifacts = {} # type: Dict[str, Artifact]
|
|
@@ -144,9 +144,9 @@ class MLRunLogger(Logger):
|
|
|
144
144
|
self,
|
|
145
145
|
model_handler: DLModelHandler,
|
|
146
146
|
tag: str = "",
|
|
147
|
-
labels:
|
|
148
|
-
parameters:
|
|
149
|
-
extra_data:
|
|
147
|
+
labels: dict[str, DLTypes.TrackableType] = None,
|
|
148
|
+
parameters: dict[str, DLTypes.TrackableType] = None,
|
|
149
|
+
extra_data: dict[str, Union[DLTypes.TrackableType, Artifact]] = None,
|
|
150
150
|
):
|
|
151
151
|
"""
|
|
152
152
|
Log the run, summarizing the validation metrics and dynamic hyperparameters across all epochs. If 'update' is
|
|
@@ -227,7 +227,7 @@ class MLRunLogger(Logger):
|
|
|
227
227
|
# Commit to update the changes, so they will be available in the MLRun UI:
|
|
228
228
|
self._context.commit(completed=False)
|
|
229
229
|
|
|
230
|
-
def _generate_metrics_summary(self) ->
|
|
230
|
+
def _generate_metrics_summary(self) -> dict[str, float]:
|
|
231
231
|
"""
|
|
232
232
|
Generate a metrics summary to log along the model.
|
|
233
233
|
|
|
@@ -254,7 +254,7 @@ class MLRunLogger(Logger):
|
|
|
254
254
|
|
|
255
255
|
@staticmethod
|
|
256
256
|
def _generate_metric_results_artifact(
|
|
257
|
-
loop: str, name: str, epochs_results:
|
|
257
|
+
loop: str, name: str, epochs_results: list[list[float]]
|
|
258
258
|
) -> PlotlyArtifact:
|
|
259
259
|
"""
|
|
260
260
|
Generate a plotly artifact for the results of the metric provided.
|
|
@@ -300,7 +300,7 @@ class MLRunLogger(Logger):
|
|
|
300
300
|
|
|
301
301
|
@staticmethod
|
|
302
302
|
def _generate_summary_results_artifact(
|
|
303
|
-
name: str, training_results:
|
|
303
|
+
name: str, training_results: list[float], validation_results: list[float]
|
|
304
304
|
) -> PlotlyArtifact:
|
|
305
305
|
"""
|
|
306
306
|
Generate a plotly artifact for the results summary across all the epochs of training.
|
|
@@ -351,7 +351,7 @@ class MLRunLogger(Logger):
|
|
|
351
351
|
|
|
352
352
|
@staticmethod
|
|
353
353
|
def _generate_dynamic_hyperparameter_values_artifact(
|
|
354
|
-
name: str, values:
|
|
354
|
+
name: str, values: list[float]
|
|
355
355
|
) -> PlotlyArtifact:
|
|
356
356
|
"""
|
|
357
357
|
Generate a plotly artifact for the values of the hyperparameter provided.
|