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.
@@ -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"]