ato 2.0.0__py3-none-any.whl → 2.0.2__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 ato might be problematic. Click here for more details.
- {ato-2.0.0.dist-info → ato-2.0.2.dist-info}/METADATA +169 -89
- {ato-2.0.0.dist-info → ato-2.0.2.dist-info}/RECORD +5 -5
- {ato-2.0.0.dist-info → ato-2.0.2.dist-info}/WHEEL +0 -0
- {ato-2.0.0.dist-info → ato-2.0.2.dist-info}/licenses/LICENSE +0 -0
- {ato-2.0.0.dist-info → ato-2.0.2.dist-info}/top_level.txt +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ato
|
|
3
|
-
Version: 2.0.
|
|
4
|
-
Summary: A
|
|
3
|
+
Version: 2.0.2
|
|
4
|
+
Summary: A minimal, composable config layer for Python and ML pipelines. Built to stay, not to impress.
|
|
5
5
|
Author: ato contributors
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/yourusername/ato
|
|
8
8
|
Project-URL: Repository, https://github.com/yourusername/ato
|
|
9
9
|
Project-URL: Documentation, https://github.com/yourusername/ato#readme
|
|
10
10
|
Project-URL: Issues, https://github.com/yourusername/ato/issues
|
|
11
|
-
Keywords:
|
|
11
|
+
Keywords: config management,experiment tracking,hyperparameter optimization,lightweight,composable,namespace isolation,machine learning
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -32,20 +32,63 @@ Provides-Extra: distributed
|
|
|
32
32
|
Requires-Dist: torch>=1.8.0; extra == "distributed"
|
|
33
33
|
Dynamic: license-file
|
|
34
34
|
|
|
35
|
-
# Ato
|
|
35
|
+
# Ato: A Tiny Orchestrator
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
## A minimal, composable config layer for Python and ML pipelines
|
|
38
|
+
|
|
39
|
+
Ato is a minimal, composable config system for Python and ML pipelines.
|
|
40
|
+
It lets you **chain**, **merge**, and **freeze** modular configs,
|
|
41
|
+
so you can move seamlessly from **dynamic experiments** to **static production builds**.
|
|
42
|
+
|
|
43
|
+
Unlike heavy frameworks, Ato keeps everything **transparent** and **Pythonic** —
|
|
44
|
+
you can use it alongside tools like Hydra, WandB, or MLflow without friction.
|
|
45
|
+
It’s built for people who prefer clarity over magic.
|
|
46
|
+
|
|
47
|
+
After all, *Ato* was never built to impress — it was built to stay.
|
|
48
|
+
|
|
49
|
+
<details>
|
|
50
|
+
<summary><strong>Developer’s Note</strong></summary>
|
|
51
|
+
|
|
52
|
+
I didn’t know there was a great tool called Hydra.
|
|
53
|
+
So I built something a bit simpler, a bit more opinionated,
|
|
54
|
+
and maybe a bit more compatible — something that could also work nicely
|
|
55
|
+
with amazing tools like Hydra, WandB, or MLflow.
|
|
56
|
+
|
|
57
|
+
Even though I didn’t know these tools at the time,
|
|
58
|
+
I deliberately designed for compatibility —
|
|
59
|
+
and later, after learning about Hydra and others,
|
|
60
|
+
I added explicit interop layers.
|
|
61
|
+
Because I know how tempting — and exhausting —
|
|
62
|
+
it can be to move from a familiar environment
|
|
63
|
+
to a new, more attractive one.
|
|
64
|
+
|
|
65
|
+
I’ve been the only user so far —
|
|
66
|
+
not because I wanted to hide it,
|
|
67
|
+
but because I never had anyone around
|
|
68
|
+
who could really tell me if it was good enough.
|
|
69
|
+
Maybe this is the right time to find out.
|
|
70
|
+
|
|
71
|
+
So — there’s no need to compete.
|
|
72
|
+
Just *try it once.*
|
|
73
|
+
This tool won’t make you tired.
|
|
74
|
+
It might even feel a little kind.
|
|
75
|
+
|
|
76
|
+
</details>
|
|
40
77
|
|
|
41
78
|
---
|
|
42
79
|
|
|
43
|
-
**Ato** is
|
|
44
|
-
It provides
|
|
45
|
-
|
|
80
|
+
**Ato** is designed to work *with* your existing tools — not replace them.
|
|
81
|
+
It provides configuration management, experiment tracking, and hyperparameter optimization
|
|
82
|
+
as a **philosophical layer** that plays nicely with Hydra, MLflow, W&B, and whatever else you use.
|
|
46
83
|
|
|
47
84
|
## Why Ato?
|
|
48
85
|
|
|
86
|
+
Ato isn't trying to compete with Hydra or replace your experiment tracking platform.
|
|
87
|
+
It's for the projects that live *before* things get complicated — or for teams that want clarity over features.
|
|
88
|
+
|
|
89
|
+
**Philosophy over framework**: Ato gives you enough structure to stay organized, without imposing a rigid system.
|
|
90
|
+
Use it standalone, or layer it on top of Hydra, MLflow, or W&B. It's a tool, not a commitment.
|
|
91
|
+
|
|
49
92
|
### Core Differentiators
|
|
50
93
|
|
|
51
94
|
- **True Namespace Isolation**: MultiScope provides independent config contexts (unique to Ato!)
|
|
@@ -62,7 +105,7 @@ all without the complexity or overhead of heavy frameworks.
|
|
|
62
105
|
## Quick Start
|
|
63
106
|
|
|
64
107
|
```bash
|
|
65
|
-
pip install ato
|
|
108
|
+
pip install ato
|
|
66
109
|
```
|
|
67
110
|
|
|
68
111
|
### 30-Second Example
|
|
@@ -99,7 +142,8 @@ if __name__ == '__main__':
|
|
|
99
142
|
- [SQL Tracker: Experiment Tracking](#sql-tracker-experiment-tracking)
|
|
100
143
|
- [Hyperparameter Optimization](#hyperparameter-optimization)
|
|
101
144
|
- [Best Practices](#best-practices)
|
|
102
|
-
- [
|
|
145
|
+
- [Future Work](#future-work--optional-modular-non-intrusive)
|
|
146
|
+
- [Working with Existing Tools](#working-with-existing-tools)
|
|
103
147
|
|
|
104
148
|
---
|
|
105
149
|
|
|
@@ -1088,6 +1132,35 @@ MIT License
|
|
|
1088
1132
|
|
|
1089
1133
|
---
|
|
1090
1134
|
|
|
1135
|
+
## Future Work — Optional, Modular, Non-Intrusive
|
|
1136
|
+
|
|
1137
|
+
We're planning to add an **HTML dashboard** (as a small local daemon) for teams that want visual exploration:
|
|
1138
|
+
|
|
1139
|
+
**Planned features:**
|
|
1140
|
+
- Metric comparison & trends
|
|
1141
|
+
- Run history & artifact browsing
|
|
1142
|
+
- Configuration diffs (including structural hash visualization)
|
|
1143
|
+
- Interactive hyperparameter analysis
|
|
1144
|
+
|
|
1145
|
+
**Philosophy stays the same:**
|
|
1146
|
+
- **No hard dependency** - Ato core (Scope / ADict / SQL tracker / HyperOpt) works 100% without the dashboard
|
|
1147
|
+
- **No coupling** - The dashboard is a separate process that reads from SQLite/logs; it doesn't block or modify your runs
|
|
1148
|
+
- **Zero lock-in** - Remove the dashboard and nothing in your training code changes
|
|
1149
|
+
- **Fully modular** - Pick only what you need
|
|
1150
|
+
|
|
1151
|
+
**Example workflows:**
|
|
1152
|
+
|
|
1153
|
+
| What you need | What you use |
|
|
1154
|
+
|---------------|--------------|
|
|
1155
|
+
| Just configs | `ADict` + `Scope` only — no DB, no UI |
|
|
1156
|
+
| Headless tracking | Add SQL tracker — still no UI |
|
|
1157
|
+
| Visual exploration | Start dashboard daemon when you want; stop it and keep training |
|
|
1158
|
+
| Full stack | Use everything, or mix with MLflow/W&B dashboards |
|
|
1159
|
+
|
|
1160
|
+
**Guiding rule:** Ato is a set of small, composable tools — not a monolith. Use what helps; ignore the rest.
|
|
1161
|
+
|
|
1162
|
+
---
|
|
1163
|
+
|
|
1091
1164
|
## Contributing
|
|
1092
1165
|
|
|
1093
1166
|
Contributions are welcome! Please feel free to submit issues or pull requests.
|
|
@@ -1102,80 +1175,87 @@ pip install -e .
|
|
|
1102
1175
|
|
|
1103
1176
|
---
|
|
1104
1177
|
|
|
1105
|
-
##
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
|
1150
|
-
|
|
1151
|
-
| **
|
|
1152
|
-
| **
|
|
1153
|
-
| **
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
-
|
|
1161
|
-
-
|
|
1162
|
-
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
- You
|
|
1167
|
-
-
|
|
1168
|
-
- You
|
|
1169
|
-
|
|
1170
|
-
**
|
|
1171
|
-
-
|
|
1172
|
-
- You
|
|
1173
|
-
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
-
|
|
1178
|
-
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1178
|
+
## Working with Existing Tools
|
|
1179
|
+
|
|
1180
|
+
Ato isn't meant to replace Hydra, MLflow, or W&B — it's a **composable layer** you can use alongside them.
|
|
1181
|
+
|
|
1182
|
+
Think of Ato as a "config control surface" that gives you clarity and structure without forcing you into a framework.
|
|
1183
|
+
Many teams use Ato for the 90% of experiments that don't need heavy infrastructure, then graduate to larger tools when needed.
|
|
1184
|
+
|
|
1185
|
+
### Ato + Hydra = Better Together
|
|
1186
|
+
|
|
1187
|
+
Ato has **built-in Hydra compatibility** via `compose_hierarchy()`:
|
|
1188
|
+
|
|
1189
|
+
```python
|
|
1190
|
+
from ato.adict import ADict
|
|
1191
|
+
|
|
1192
|
+
# Load Hydra-style configs directly
|
|
1193
|
+
config = ADict.compose_hierarchy(
|
|
1194
|
+
root='configs',
|
|
1195
|
+
config_filename='config',
|
|
1196
|
+
select={'model': 'resnet50', 'data': 'imagenet'},
|
|
1197
|
+
overrides={'model.lr': 0.01}
|
|
1198
|
+
)
|
|
1199
|
+
|
|
1200
|
+
# Now add Ato's unique features on top:
|
|
1201
|
+
# - MultiScope for namespace isolation
|
|
1202
|
+
# - `manual` command for merge debugging
|
|
1203
|
+
# - Built-in SQL tracking
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
**Migration from Hydra** is literally just replacing `hydra.compose()` with `ADict.compose_hierarchy()`.
|
|
1207
|
+
|
|
1208
|
+
### What Makes Ato Different?
|
|
1209
|
+
|
|
1210
|
+
Ato focuses on **three unique capabilities** that complement existing tools:
|
|
1211
|
+
|
|
1212
|
+
| Feature | What It Solves | Why It Matters |
|
|
1213
|
+
|---------|----------------|----------------|
|
|
1214
|
+
| **MultiScope** | True namespace isolation | Multiple teams can own separate config scopes without key collisions (no `model_lr` vs `data_lr` prefixing needed) |
|
|
1215
|
+
| **`manual` command** | Config merge order visualization | Debug *why* a config value is set — see exact merge order, not just final result |
|
|
1216
|
+
| **Offline-first tracking** | Zero-setup SQLite tracking | Experiment tracking without servers, platforms, or external dependencies |
|
|
1217
|
+
|
|
1218
|
+
### Compatibility Matrix
|
|
1219
|
+
|
|
1220
|
+
Ato plays nicely with your existing stack:
|
|
1221
|
+
|
|
1222
|
+
| Tool | Ato's Role | Integration |
|
|
1223
|
+
|------|------------|-------------|
|
|
1224
|
+
| **Hydra** | Extends with MultiScope + merge debugging | `compose_hierarchy()` loads Hydra configs directly |
|
|
1225
|
+
| **MLflow** | Lightweight alternative for simple projects | Use Ato's SQL tracker for offline work, MLflow for dashboards |
|
|
1226
|
+
| **W&B** | Offline-first complement | Track locally with Ato, sync to W&B when needed |
|
|
1227
|
+
| **OpenMMLab** | Config migration layer | `load_mm_config()` handles `_base_` inheritance |
|
|
1228
|
+
| **PyTorch/TF/JAX** | Framework-agnostic config + tracking | Works with any training framework |
|
|
1229
|
+
|
|
1230
|
+
### When to Use What
|
|
1231
|
+
|
|
1232
|
+
**Use Ato alone** for:
|
|
1233
|
+
- Individual research experiments
|
|
1234
|
+
- Projects that don't need a dashboard
|
|
1235
|
+
- Teams wanting namespace isolation (MultiScope)
|
|
1236
|
+
- Config merge debugging (`manual` command)
|
|
1237
|
+
|
|
1238
|
+
**Use Ato + Hydra** when:
|
|
1239
|
+
- You need Hydra's deep config hierarchies
|
|
1240
|
+
- Your team already uses Hydra YAML structure
|
|
1241
|
+
- You want MultiScope on top of Hydra's composition
|
|
1242
|
+
|
|
1243
|
+
**Use Ato + MLflow/W&B** when:
|
|
1244
|
+
- You want local-first tracking with optional cloud sync
|
|
1245
|
+
- You need Ato's structural hashing + offline SQLite
|
|
1246
|
+
- Your team prefers MLflow/W&B dashboards for collaboration
|
|
1247
|
+
|
|
1248
|
+
**Graduate to pure MLflow/W&B** when:
|
|
1249
|
+
- You need real-time dashboards and team collaboration UI
|
|
1250
|
+
- Model registry and dataset versioning become critical
|
|
1251
|
+
- Your experiments are production-facing
|
|
1252
|
+
|
|
1253
|
+
### What Ato Doesn't Do
|
|
1254
|
+
|
|
1255
|
+
Ato intentionally skips features that larger tools handle better:
|
|
1256
|
+
- ❌ Real-time web dashboards (use MLflow/W&B)
|
|
1257
|
+
- ❌ Model registry (use MLflow)
|
|
1258
|
+
- ❌ Dataset versioning (use W&B/DVC)
|
|
1259
|
+
- ❌ Deep plugin ecosystems (use Hydra)
|
|
1260
|
+
|
|
1261
|
+
Ato's philosophy: **give you enough structure to stay organized, without becoming infrastructure.**
|
|
@@ -11,8 +11,8 @@ ato/db_routers/sql/schema.py,sha256=3eRF1oMnoebEh1QA39aqgcnTSe0h9JAXBfExAD0sPGY,
|
|
|
11
11
|
ato/hyperopt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
ato/hyperopt/base.py,sha256=Wtu3l9FPB32exoUYEHKQf3r19U_l24_i-rle429uFbY,5188
|
|
13
13
|
ato/hyperopt/hyperband.py,sha256=05qGvff0UAec4bTaaiCFa-FBRG0fIdVATaZu4vUiV5M,4233
|
|
14
|
-
ato-2.0.
|
|
15
|
-
ato-2.0.
|
|
16
|
-
ato-2.0.
|
|
17
|
-
ato-2.0.
|
|
18
|
-
ato-2.0.
|
|
14
|
+
ato-2.0.2.dist-info/licenses/LICENSE,sha256=xrPRlaFeOLIYXHXJOsc7dhA2h1Jrcjw8t63M7OcVN6c,1071
|
|
15
|
+
ato-2.0.2.dist-info/METADATA,sha256=QPyblQoGCgc79nDbpHRAC8c2lIsN88vyjRohP8LHWEQ,35566
|
|
16
|
+
ato-2.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
17
|
+
ato-2.0.2.dist-info/top_level.txt,sha256=Ea_cEtrnO1ir26dBT1CK_Mj6vK36sd9oSAu6WjtQkAU,4
|
|
18
|
+
ato-2.0.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|