modelzone-sdk 0.1.0__tar.gz
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.
- modelzone_sdk-0.1.0/PKG-INFO +116 -0
- modelzone_sdk-0.1.0/README.md +94 -0
- modelzone_sdk-0.1.0/modelzone/__init__.py +27 -0
- modelzone_sdk-0.1.0/modelzone/azureml/__init__.py +35 -0
- modelzone_sdk-0.1.0/modelzone/azureml/backend.py +483 -0
- modelzone_sdk-0.1.0/modelzone/cli.py +227 -0
- modelzone_sdk-0.1.0/modelzone/core/__init__.py +20 -0
- modelzone_sdk-0.1.0/modelzone/core/constants.py +6 -0
- modelzone_sdk-0.1.0/modelzone/core/model.py +67 -0
- modelzone_sdk-0.1.0/modelzone/core/predict_context.py +47 -0
- modelzone_sdk-0.1.0/modelzone/core/record.py +37 -0
- modelzone_sdk-0.1.0/modelzone/core/trained_model.py +86 -0
- modelzone_sdk-0.1.0/modelzone/core/training_result.py +24 -0
- modelzone_sdk-0.1.0/modelzone/predict.py +41 -0
- modelzone_sdk-0.1.0/modelzone/training/__init__.py +32 -0
- modelzone_sdk-0.1.0/modelzone/training/backend.py +247 -0
- modelzone_sdk-0.1.0/modelzone/training/context.py +142 -0
- modelzone_sdk-0.1.0/modelzone/training/db.py +155 -0
- modelzone_sdk-0.1.0/modelzone/training/delta_client.py +124 -0
- modelzone_sdk-0.1.0/pyproject.toml +62 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: modelzone-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Modelzone SDK – a slim model training and serving toolkit
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
Author: Team Enigma
|
|
7
|
+
Author-email: enigma@energinet.dk
|
|
8
|
+
Requires-Python: >=3.13
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Provides-Extra: azureml
|
|
14
|
+
Provides-Extra: training
|
|
15
|
+
Requires-Dist: azure-ai-ml ; extra == "azureml"
|
|
16
|
+
Requires-Dist: azure-identity ; extra == "azureml"
|
|
17
|
+
Requires-Dist: datamazing (>=7,<8)
|
|
18
|
+
Requires-Dist: deltalake (>=1) ; extra == "training"
|
|
19
|
+
Requires-Dist: mlflow (>=3) ; extra == "azureml"
|
|
20
|
+
Requires-Dist: pandas (>=2,<3)
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# Modelzone SDK
|
|
24
|
+
|
|
25
|
+
A slim Python SDK for defining, training, and serving machine-learning models.
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install modelzone-sdk
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For local training with Delta Lake data access:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install modelzone-sdk[training]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
For AzureML experiment tracking:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pip install modelzone-sdk[azureml]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Quick start
|
|
46
|
+
|
|
47
|
+
Define a model by subclassing `Model` and implementing `train` and `predict`:
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from modelzone.core import Model, PredictContext, TrainedModel
|
|
51
|
+
from modelzone.training import TrainingContext
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class MyModel(Model):
|
|
55
|
+
def train(self, ctx: TrainingContext) -> TrainedModel:
|
|
56
|
+
ctx.print("Training started")
|
|
57
|
+
|
|
58
|
+
# … your training logic …
|
|
59
|
+
fitted = train_something(seed=ctx.seed)
|
|
60
|
+
|
|
61
|
+
ctx.log_metric("accuracy", 0.95)
|
|
62
|
+
return TrainedModel(model=fitted, features=["feature_a", "feature_b"])
|
|
63
|
+
|
|
64
|
+
def predict(self, ctx: PredictContext):
|
|
65
|
+
df = ctx.db.query("input_table", ctx.time_interval)
|
|
66
|
+
return ctx.model.predict(df[ctx.features])
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Local training
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from modelzone.training import LocalBackend
|
|
73
|
+
|
|
74
|
+
backend = LocalBackend(root="./runs")
|
|
75
|
+
result = backend.run(MyModel(), seed=42, params={"lr": 0.01})
|
|
76
|
+
print(result.run_id)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### AzureML training
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from modelzone.azureml import AzureMLBackend
|
|
83
|
+
|
|
84
|
+
backend = AzureMLBackend(
|
|
85
|
+
subscription_id="...",
|
|
86
|
+
resource_group="...",
|
|
87
|
+
workspace_name="...",
|
|
88
|
+
experiment_name="my_experiment",
|
|
89
|
+
)
|
|
90
|
+
result = backend.run(MyModel(), seed=42)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Loading a trained model for prediction
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from modelzone.predict import load_model
|
|
97
|
+
|
|
98
|
+
trained_model = load_model(".model")
|
|
99
|
+
print(trained_model.features)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## CLI
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
modelzone train my_model_package # Local training
|
|
106
|
+
modelzone train my_model_package --azureml # AzureML training
|
|
107
|
+
modelzone register my_model_package <run_id>
|
|
108
|
+
modelzone fetch my_model_package --output-dir .model
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Development
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
poetry install --with dev,test
|
|
115
|
+
pytest
|
|
116
|
+
```
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Modelzone SDK
|
|
2
|
+
|
|
3
|
+
A slim Python SDK for defining, training, and serving machine-learning models.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install modelzone-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
For local training with Delta Lake data access:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install modelzone-sdk[training]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For AzureML experiment tracking:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pip install modelzone-sdk[azureml]
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick start
|
|
24
|
+
|
|
25
|
+
Define a model by subclassing `Model` and implementing `train` and `predict`:
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from modelzone.core import Model, PredictContext, TrainedModel
|
|
29
|
+
from modelzone.training import TrainingContext
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class MyModel(Model):
|
|
33
|
+
def train(self, ctx: TrainingContext) -> TrainedModel:
|
|
34
|
+
ctx.print("Training started")
|
|
35
|
+
|
|
36
|
+
# … your training logic …
|
|
37
|
+
fitted = train_something(seed=ctx.seed)
|
|
38
|
+
|
|
39
|
+
ctx.log_metric("accuracy", 0.95)
|
|
40
|
+
return TrainedModel(model=fitted, features=["feature_a", "feature_b"])
|
|
41
|
+
|
|
42
|
+
def predict(self, ctx: PredictContext):
|
|
43
|
+
df = ctx.db.query("input_table", ctx.time_interval)
|
|
44
|
+
return ctx.model.predict(df[ctx.features])
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Local training
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from modelzone.training import LocalBackend
|
|
51
|
+
|
|
52
|
+
backend = LocalBackend(root="./runs")
|
|
53
|
+
result = backend.run(MyModel(), seed=42, params={"lr": 0.01})
|
|
54
|
+
print(result.run_id)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### AzureML training
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from modelzone.azureml import AzureMLBackend
|
|
61
|
+
|
|
62
|
+
backend = AzureMLBackend(
|
|
63
|
+
subscription_id="...",
|
|
64
|
+
resource_group="...",
|
|
65
|
+
workspace_name="...",
|
|
66
|
+
experiment_name="my_experiment",
|
|
67
|
+
)
|
|
68
|
+
result = backend.run(MyModel(), seed=42)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Loading a trained model for prediction
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from modelzone.predict import load_model
|
|
75
|
+
|
|
76
|
+
trained_model = load_model(".model")
|
|
77
|
+
print(trained_model.features)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## CLI
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
modelzone train my_model_package # Local training
|
|
84
|
+
modelzone train my_model_package --azureml # AzureML training
|
|
85
|
+
modelzone register my_model_package <run_id>
|
|
86
|
+
modelzone fetch my_model_package --output-dir .model
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Development
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
poetry install --with dev,test
|
|
93
|
+
pytest
|
|
94
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Modelzone SDK – structured model training and serving.
|
|
2
|
+
|
|
3
|
+
Subpackages
|
|
4
|
+
-----------
|
|
5
|
+
- :mod:`modelzone.core` – ``Model``, ``TrainedModel``, ``TrainingResult``
|
|
6
|
+
and friends (zero extras, safe everywhere).
|
|
7
|
+
- :mod:`modelzone.predict` – ``load_model()`` (zero extras, for
|
|
8
|
+
prediction environments).
|
|
9
|
+
- :mod:`modelzone.training` – ``LocalBackend``, ``TrainingContext``,
|
|
10
|
+
``ModelzoneDatabase`` (training environment).
|
|
11
|
+
- :mod:`modelzone.azureml` – ``AzureMLBackend`` (requires ``azureml``
|
|
12
|
+
extra).
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from modelzone.core import Model, PredictContext, TrainedModel, TrainingResult
|
|
16
|
+
|
|
17
|
+
MODEL_CONFIG = "model.json"
|
|
18
|
+
PROJECT_CONFIG = "project.json"
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"MODEL_CONFIG",
|
|
22
|
+
"Model",
|
|
23
|
+
"PROJECT_CONFIG",
|
|
24
|
+
"PredictContext",
|
|
25
|
+
"TrainedModel",
|
|
26
|
+
"TrainingResult",
|
|
27
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Modelzone AzureML backend – tracked experiment runs (SDK v2 + MLflow).
|
|
2
|
+
|
|
3
|
+
Requires ``azure-ai-ml``, ``azure-identity``, and ``mlflow``.
|
|
4
|
+
Install with::
|
|
5
|
+
|
|
6
|
+
pip install modelzone-sdk[azureml]
|
|
7
|
+
|
|
8
|
+
Usage::
|
|
9
|
+
|
|
10
|
+
from modelzone.azureml import AzureMLBackend
|
|
11
|
+
|
|
12
|
+
backend = AzureMLBackend(
|
|
13
|
+
subscription_id="...",
|
|
14
|
+
resource_group="...",
|
|
15
|
+
workspace_name="...",
|
|
16
|
+
experiment_name="my_experiment",
|
|
17
|
+
)
|
|
18
|
+
result = backend.run(model, seed=42, db=db)
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def __getattr__(name: str):
|
|
23
|
+
if name == "AzureMLBackend":
|
|
24
|
+
try:
|
|
25
|
+
from modelzone.azureml.backend import AzureMLBackend
|
|
26
|
+
except ImportError:
|
|
27
|
+
raise ImportError(
|
|
28
|
+
"AzureMLBackend requires the 'azureml' extra. "
|
|
29
|
+
"Install it with: pip install modelzone-sdk[azureml]"
|
|
30
|
+
) from None
|
|
31
|
+
return AzureMLBackend
|
|
32
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
__all__ = ["AzureMLBackend"]
|