ml-management 0.4.1__tar.gz → 0.5.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- ml_management-0.5.0/ML_management/__init__.py +3 -0
- {ml-management-0.4.1/ML_management/mlmanagement → ml_management-0.5.0/ML_management}/base_exceptions.py +0 -10
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/s3/s3collector.py +2 -2
- ml_management-0.5.0/ML_management/dataset_loader/dataset_loader_pattern.py +32 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/base_executor.py +2 -93
- ml_management-0.5.0/ML_management/graphql/schema.py +3791 -0
- ml-management-0.4.1/ML_management/sdk/sdk.py → ml_management-0.5.0/ML_management/graphql/send_graphql_request.py +3 -58
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/backend_api.py +1 -1
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/jsonschema_inference.py +17 -9
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/load_api.py +66 -82
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/log_api.py +261 -413
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/server_mlmanager_exceptions.py +2 -2
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/utils.py +1 -1
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/gradient_model.py +4 -2
- ml_management-0.5.0/ML_management/model/patterns/model_pattern.py +54 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/model_with_metrics.py +6 -2
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/preprocessor.py +5 -2
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/transformer.py +2 -2
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/registry/exceptions.py +1 -1
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/s3/manager.py +3 -2
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/__init__.py +9 -5
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/dataset_loader.py +65 -24
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/executor.py +70 -29
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/experiment.py +18 -18
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/job.py +17 -27
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/model.py +63 -46
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/sdk/parameters.py +9 -9
- ml_management-0.5.0/ML_management/sdk/sdk.py +57 -0
- {ml-management-0.4.1/ML_management/mlmanagement → ml_management-0.5.0/ML_management}/session.py +35 -18
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/test_sdk/test_sdk.py +7 -7
- {ml-management-0.4.1/ML_management/mlmanagement → ml_management-0.5.0/ML_management}/variables.py +15 -4
- ml_management-0.5.0/ML_management/version.py +6 -0
- ml_management-0.5.0/PKG-INFO +27 -0
- ml_management-0.5.0/VERSION +1 -0
- ml_management-0.5.0/ml_management.egg-info/PKG-INFO +27 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ml_management.egg-info/SOURCES.txt +8 -9
- {ml-management-0.4.1 → ml_management-0.5.0}/ml_management.egg-info/requires.txt +10 -6
- {ml-management-0.4.1 → ml_management-0.5.0}/setup.py +6 -2
- ml-management-0.4.1/ML_management/dataset_loader/dataset_loader_pattern.py +0 -111
- ml-management-0.4.1/ML_management/loader/loader.py +0 -68
- ml-management-0.4.1/ML_management/mlmanagement/mlmanager.py +0 -212
- ml-management-0.4.1/ML_management/model/patterns/model_pattern.py +0 -161
- ml-management-0.4.1/ML_management/model/patterns/rich_python_model.py +0 -10
- ml-management-0.4.1/ML_management/sdk/schema.py +0 -2306
- ml-management-0.4.1/ML_management/uploader_data/__init__.py +0 -0
- ml-management-0.4.1/PKG-INFO +0 -17
- ml-management-0.4.1/VERSION +0 -1
- ml-management-0.4.1/ml_management.egg-info/PKG-INFO +0 -17
- {ml-management-0.4.1 → ml_management-0.5.0}/MANIFEST.in +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/collector_pattern.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/collector_pattern_to_methods_map.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/collectors.py +0 -0
- {ml-management-0.4.1/ML_management → ml_management-0.5.0/ML_management/collectors/dummy}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/dummy/dummy_collector.py +0 -0
- {ml-management-0.4.1/ML_management/collectors/dummy → ml_management-0.5.0/ML_management/collectors/s3}/__init__.py +0 -0
- {ml-management-0.4.1/ML_management/collectors/s3 → ml_management-0.5.0/ML_management/collectors/topic_markers}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/topic_markers/api_schema.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/collectors/topic_markers/topic_markers_collector.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/base_splits_dataset_loader.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/dataset_loader_pattern_to_methods_map.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/poisoned_images_dataset_loader.py +0 -0
- {ml-management-0.4.1/ML_management/collectors/topic_markers → ml_management-0.5.0/ML_management/dataset_loader/templates}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/templates/dummy_dataset_loader/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/templates/dummy_dataset_loader/conda.yaml +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/templates/dummy_dataset_loader/dummy_dataset.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/dataset_loader/templates/upload.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/executor_pattern.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/executor_pattern_to_methods_map.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/no_model_executor_pattern.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/patterns.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/eval/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/eval/conda.yaml +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/eval/eval_executor.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/finetune/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/finetune/conda.yaml +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/finetune/finetune_executor.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/train/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/train/conda.yaml +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/train/train_executor.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/templates/upload.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/executor/upload_model_mode.py +0 -0
- {ml-management-0.4.1/ML_management/dataset_loader/templates → ml_management-0.5.0/ML_management/graphql}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/jsonschema_exceptions.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/model_type.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/module_finder.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/mlmanagement/visibility_options.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/model_type_to_methods_map.py +0 -0
- {ml-management-0.4.1/ML_management/loader → ml_management-0.5.0/ML_management/model/patterns}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/evaluatable_model.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/model_with_losses.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/retrainable_model.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/target_layer.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/torch_model.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/model/patterns/trainable_model.py +0 -0
- {ml-management-0.4.1/ML_management/model/patterns → ml_management-0.5.0/ML_management/registry}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/s3/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/s3/utils.py +0 -0
- {ml-management-0.4.1/ML_management/mlmanagement → ml_management-0.5.0/ML_management}/singleton_pattern.py +0 -0
- {ml-management-0.4.1/ML_management/registry → ml_management-0.5.0/ML_management/test_sdk}/__init__.py +0 -0
- {ml-management-0.4.1/ML_management/test_sdk → ml_management-0.5.0/ML_management/tests}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/tests/test_jsonschema_inference.py +0 -0
- {ml-management-0.4.1/ML_management/tests → ml_management-0.5.0/ML_management/uploader_data}/__init__.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/uploader_data/s3_uploader.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ML_management/uploader_data/utils.py +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/README.md +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ml_management.egg-info/dependency_links.txt +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/ml_management.egg-info/top_level.txt +0 -0
- {ml-management-0.4.1 → ml_management-0.5.0}/setup.cfg +0 -0
@@ -1,6 +1,3 @@
|
|
1
|
-
"""Base classes for custom exceptions used in project."""
|
2
|
-
|
3
|
-
|
4
1
|
class MLMBaseError(Exception):
|
5
2
|
"""Base exception for all custom exceptions."""
|
6
3
|
|
@@ -23,10 +20,3 @@ class MLMClientError(MLMBaseError):
|
|
23
20
|
"""Base exception for all client-side specific exceptions."""
|
24
21
|
|
25
22
|
pass
|
26
|
-
|
27
|
-
|
28
|
-
class PylintError(MLMBaseError):
|
29
|
-
"""Base exception for all errors within linter check."""
|
30
|
-
|
31
|
-
def __init__(self, message):
|
32
|
-
super().__init__("Pylint found errors in code of uploaded modules:\n" + message)
|
@@ -16,8 +16,8 @@ class S3Collector(CollectorPattern):
|
|
16
16
|
"type": "object",
|
17
17
|
"properties": {
|
18
18
|
"bucket": {"type": "string"},
|
19
|
-
"untar_data": {"type": "boolean"},
|
20
|
-
"remote_paths": {"type": "array", "items": {"type": "string"}},
|
19
|
+
"untar_data": {"type": "boolean", "default": False},
|
20
|
+
"remote_paths": {"type": ["array", None], "items": {"type": "string"}, "default": None},
|
21
21
|
},
|
22
22
|
"required": ["bucket"],
|
23
23
|
"additionalProperties": False,
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"""Dataset loader template for custom dataset loader."""
|
2
|
+
from abc import ABC, abstractmethod
|
3
|
+
|
4
|
+
|
5
|
+
class DatasetLoaderPattern(ABC):
|
6
|
+
"""Define dataset loader.
|
7
|
+
|
8
|
+
Attributes
|
9
|
+
----------
|
10
|
+
artifacts : str
|
11
|
+
Local path to artifacts.
|
12
|
+
That parameters will be set automatically in job before the 'get_dataset' func would be executed.
|
13
|
+
data_path: str
|
14
|
+
A path to data to be loaded.
|
15
|
+
|
16
|
+
"""
|
17
|
+
|
18
|
+
def __init__(self):
|
19
|
+
"""Init dataset loader class."""
|
20
|
+
self.artifacts: str
|
21
|
+
self.data_path = None
|
22
|
+
|
23
|
+
@abstractmethod
|
24
|
+
def get_dataset(self, **dataset_params):
|
25
|
+
"""
|
26
|
+
Return dataset.
|
27
|
+
|
28
|
+
To get data_path use self.data_path parameter, which also will be set in the job.
|
29
|
+
'dataset_params' are dataset_loader parameters. One has to define it as ordinary kwargs
|
30
|
+
with type annotation.
|
31
|
+
"""
|
32
|
+
raise NotImplementedError
|
@@ -1,10 +1,8 @@
|
|
1
1
|
"""Executor template for custom executor."""
|
2
2
|
|
3
3
|
from abc import ABC, abstractmethod
|
4
|
-
from typing import Any, Dict,
|
4
|
+
from typing import Any, Dict, Union
|
5
5
|
|
6
|
-
import ML_management.mlmanagement.log_api
|
7
|
-
import ML_management.mlmanagement.mlmanager
|
8
6
|
from ML_management.dataset_loader import DatasetLoaderPattern
|
9
7
|
from ML_management.dataset_loader.dataset_loader_pattern_to_methods_map import DatasetLoaderMethodName
|
10
8
|
from ML_management.executor.patterns import (
|
@@ -14,17 +12,13 @@ from ML_management.executor.patterns import (
|
|
14
12
|
OneDatasetLoaderPattern,
|
15
13
|
OneModelPattern,
|
16
14
|
)
|
17
|
-
from ML_management.mlmanagement import variables
|
18
|
-
from ML_management.mlmanagement.module_finder import ModuleFinder
|
19
|
-
from ML_management.mlmanagement.visibility_options import VisibilityOptions
|
20
15
|
from ML_management.model.model_type_to_methods_map import ModelMethodName
|
21
16
|
from ML_management.model.patterns.model_pattern import Model
|
22
|
-
from ML_management.model.patterns.rich_python_model import RichPythonModel
|
23
17
|
|
24
18
|
default_dataset_loader_pattern = OneDatasetLoaderPattern()
|
25
19
|
|
26
20
|
|
27
|
-
class BaseExecutor(
|
21
|
+
class BaseExecutor(ABC):
|
28
22
|
"""Define custom job executor."""
|
29
23
|
|
30
24
|
DEFAULT_ROLE = DEFAULT_ROLE
|
@@ -140,91 +134,6 @@ class BaseExecutor(RichPythonModel, ABC):
|
|
140
134
|
"""
|
141
135
|
raise NotImplementedError
|
142
136
|
|
143
|
-
def upload_executor(
|
144
|
-
self,
|
145
|
-
executor_name: str,
|
146
|
-
pip_requirements=None,
|
147
|
-
description: Optional[str] = None,
|
148
|
-
extra_pip_requirements=None,
|
149
|
-
conda_env=None,
|
150
|
-
artifacts: Optional[dict] = None,
|
151
|
-
visibility: VisibilityOptions = VisibilityOptions.PRIVATE,
|
152
|
-
extra_modules_names: Optional[List[str]] = None,
|
153
|
-
used_modules_names: Optional[List[str]] = None,
|
154
|
-
linter_check: bool = True,
|
155
|
-
start_build: bool = False,
|
156
|
-
) -> None:
|
157
|
-
"""
|
158
|
-
Upload wrapper to MLmanagement server.
|
159
|
-
|
160
|
-
:param pip_requirements: {{ pip_requirements }}
|
161
|
-
|
162
|
-
:param extra_pip_requirements: {{ extra_pip_requirements }}
|
163
|
-
`pip_requirements` and 'extra_pip_requirements' must be either a string path to a pip requirements file on the
|
164
|
-
local filesystem or an iterable of pip requirement strings.
|
165
|
-
|
166
|
-
:param conda_env: {{ conda_env }}
|
167
|
-
'conda_env' must be a dict specifying the conda environment for this model.
|
168
|
-
|
169
|
-
:param artifacts: A dictionary containing ``<name, artifact_uri>`` entries. Remote artifact URIs
|
170
|
-
are resolved to absolute filesystem paths, producing a dictionary of
|
171
|
-
``<name, absolute_path>`` entries. ``python_model`` can reference these
|
172
|
-
resolved entries as the ``artifacts`` property of the ``context`` parameter
|
173
|
-
in :func:`PythonModel.load_context() <mlflow.pyfunc.PythonModel.load_context>`
|
174
|
-
and :func:`PythonModel.predict() <mlflow.pyfunc.PythonModel.predict>`.
|
175
|
-
For example, consider the following ``artifacts`` dictionary::
|
176
|
-
|
177
|
-
{
|
178
|
-
"my_file": "s3://my-bucket/path/to/my/file"
|
179
|
-
}
|
180
|
-
|
181
|
-
In this case, the ``"my_file"`` artifact is downloaded from S3. The
|
182
|
-
``python_model`` can then refer to ``"my_file"`` as an absolute filesystem
|
183
|
-
path via ``context.artifacts["my_file"]``.
|
184
|
-
|
185
|
-
If ``None``, no artifacts are added to the executor.
|
186
|
-
|
187
|
-
:param visibility: either a private or public executor.
|
188
|
-
|
189
|
-
:param extra_modules_names: names of modules that should be pickled by value
|
190
|
-
in addition to auto-detected modules.
|
191
|
-
|
192
|
-
:param used_modules_names: modules that should be pickled by value, disables the auto-detection of modules.
|
193
|
-
|
194
|
-
:param linter_check: if True, check code of the executor by linter.
|
195
|
-
|
196
|
-
:param start_build: if set to True, start job to create docker image.
|
197
|
-
This parameter may be True only if there is no models for executor.
|
198
|
-
"""
|
199
|
-
old_experiment_name = variables.active_experiment
|
200
|
-
if (self.desired_model_methods or self.upload_model_modes) and start_build:
|
201
|
-
raise RuntimeError("Parameter start_build=True is acceptable only if there is no models for executor.")
|
202
|
-
ML_management.mlmanagement.mlmanager.set_experiment(
|
203
|
-
variables.EXPERIMENT_NAME_FOR_EXECUTOR, visibility=VisibilityOptions.PUBLIC
|
204
|
-
)
|
205
|
-
try:
|
206
|
-
with ML_management.mlmanagement.mlmanager.start_run(nested=True):
|
207
|
-
ML_management.mlmanagement.log_api._log_model(
|
208
|
-
artifact_path="",
|
209
|
-
description=description,
|
210
|
-
artifacts=artifacts,
|
211
|
-
python_model=self,
|
212
|
-
registered_model_name=executor_name,
|
213
|
-
pip_requirements=pip_requirements,
|
214
|
-
extra_pip_requirements=extra_pip_requirements,
|
215
|
-
conda_env=conda_env,
|
216
|
-
visibility=visibility,
|
217
|
-
extra_modules_names=extra_modules_names,
|
218
|
-
used_modules_names=used_modules_names,
|
219
|
-
root_module_name=ModuleFinder.get_my_caller_module_name(),
|
220
|
-
linter_check=linter_check,
|
221
|
-
start_build=start_build,
|
222
|
-
)
|
223
|
-
except Exception as err:
|
224
|
-
raise err
|
225
|
-
finally:
|
226
|
-
variables.active_experiment = old_experiment_name
|
227
|
-
|
228
137
|
@property
|
229
138
|
def model(self) -> Model:
|
230
139
|
"""Property returning a single model.
|