ml-dash 0.6.6__py3-none-any.whl → 0.6.9__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.
- ml_dash/buffer.py +735 -0
- ml_dash/cli_commands/download.py +177 -0
- ml_dash/cli_commands/list.py +146 -0
- ml_dash/cli_commands/profile.py +141 -6
- ml_dash/cli_commands/upload.py +131 -0
- ml_dash/client.py +265 -20
- ml_dash/experiment.py +286 -126
- ml_dash/files.py +228 -70
- ml_dash/storage.py +403 -0
- ml_dash/track.py +263 -0
- {ml_dash-0.6.6.dist-info → ml_dash-0.6.9.dist-info}/METADATA +81 -5
- {ml_dash-0.6.6.dist-info → ml_dash-0.6.9.dist-info}/RECORD +14 -12
- {ml_dash-0.6.6.dist-info → ml_dash-0.6.9.dist-info}/WHEEL +0 -0
- {ml_dash-0.6.6.dist-info → ml_dash-0.6.9.dist-info}/entry_points.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ml-dash
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.9
|
|
4
4
|
Summary: ML experiment tracking and data storage
|
|
5
5
|
Keywords: machine-learning,experiment-tracking,mlops,data-storage
|
|
6
6
|
Author: Ge Yang, Tom Tao
|
|
@@ -68,10 +68,11 @@ Description-Content-Type: text/markdown
|
|
|
68
68
|
|
|
69
69
|
# ML-Dash
|
|
70
70
|
|
|
71
|
-
A simple and flexible SDK for ML experiment tracking and data storage.
|
|
71
|
+
A simple and flexible SDK for ML experiment tracking and data storage with background buffering for high-performance training.
|
|
72
72
|
|
|
73
73
|
## Features
|
|
74
74
|
|
|
75
|
+
### Core Features
|
|
75
76
|
- **Three Usage Styles**: Pre-configured singleton (dxp), context manager, or direct instantiation
|
|
76
77
|
- **Dual Operation Modes**: Remote (API server) or local (filesystem)
|
|
77
78
|
- **OAuth2 Authentication**: Secure device flow authentication for CLI and SDK
|
|
@@ -82,6 +83,13 @@ A simple and flexible SDK for ML experiment tracking and data storage.
|
|
|
82
83
|
- **Rich Metadata**: Tags, bindrs, descriptions, and custom metadata support
|
|
83
84
|
- **Simple API**: Minimal configuration, maximum flexibility
|
|
84
85
|
|
|
86
|
+
### Performance Features (New in 0.6.7)
|
|
87
|
+
- **Background Buffering**: Non-blocking I/O operations eliminate training interruptions
|
|
88
|
+
- **Automatic Batching**: Time-based (5s) and size-based (100 items) flush triggers
|
|
89
|
+
- **Track API**: Time-series data tracking for robotics, RL, and sequential experiments
|
|
90
|
+
- **Numpy Image Support**: Direct saving of numpy arrays as PNG/JPEG images
|
|
91
|
+
- **Parallel Uploads**: ThreadPoolExecutor for efficient file uploads
|
|
92
|
+
|
|
85
93
|
## Installation
|
|
86
94
|
|
|
87
95
|
<table>
|
|
@@ -93,14 +101,14 @@ A simple and flexible SDK for ML experiment tracking and data storage.
|
|
|
93
101
|
<td>
|
|
94
102
|
|
|
95
103
|
```bash
|
|
96
|
-
uv add ml-dash
|
|
104
|
+
uv add ml-dash
|
|
97
105
|
```
|
|
98
106
|
|
|
99
107
|
</td>
|
|
100
108
|
<td>
|
|
101
109
|
|
|
102
110
|
```bash
|
|
103
|
-
pip install ml-dash
|
|
111
|
+
pip install ml-dash
|
|
104
112
|
```
|
|
105
113
|
|
|
106
114
|
</td>
|
|
@@ -159,7 +167,75 @@ with Experiment(
|
|
|
159
167
|
|
|
160
168
|
```
|
|
161
169
|
|
|
162
|
-
|
|
170
|
+
## New Features in 0.6.7
|
|
171
|
+
|
|
172
|
+
### 🚀 Background Buffering (Non-blocking I/O)
|
|
173
|
+
|
|
174
|
+
All write operations are now buffered and executed in background threads:
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
with Experiment("my-project/exp").run as experiment:
|
|
178
|
+
for i in range(10000):
|
|
179
|
+
# Non-blocking! Returns immediately
|
|
180
|
+
experiment.log(f"Step {i}")
|
|
181
|
+
experiment.metrics("train").log(loss=loss, accuracy=acc)
|
|
182
|
+
experiment.files("frames").save_image(frame, to=f"frame_{i}.jpg")
|
|
183
|
+
|
|
184
|
+
# All data automatically flushed when context exits
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Configure buffering via environment variables:
|
|
188
|
+
```bash
|
|
189
|
+
export ML_DASH_BUFFER_ENABLED=true
|
|
190
|
+
export ML_DASH_FLUSH_INTERVAL=5.0
|
|
191
|
+
export ML_DASH_LOG_BATCH_SIZE=100
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 📊 Track API (Time-Series Data)
|
|
195
|
+
|
|
196
|
+
Perfect for robotics, RL, and sequential experiments:
|
|
197
|
+
|
|
198
|
+
```python
|
|
199
|
+
with Experiment("robotics/training").run as experiment:
|
|
200
|
+
for step in range(1000):
|
|
201
|
+
# Track robot position over time
|
|
202
|
+
experiment.track("robot/position").append({
|
|
203
|
+
"step": step,
|
|
204
|
+
"x": position[0],
|
|
205
|
+
"y": position[1],
|
|
206
|
+
"z": position[2]
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
# Track control signals
|
|
210
|
+
experiment.track("robot/control").append({
|
|
211
|
+
"step": step,
|
|
212
|
+
"motor1": ctrl[0],
|
|
213
|
+
"motor2": ctrl[1]
|
|
214
|
+
})
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 🖼️ Numpy Image Support
|
|
218
|
+
|
|
219
|
+
Save numpy arrays directly as images (PNG/JPEG):
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
import numpy as np
|
|
223
|
+
|
|
224
|
+
with Experiment("vision/training").run as experiment:
|
|
225
|
+
# From MuJoCo, OpenCV, PIL, etc.
|
|
226
|
+
pixels = renderer.render() # numpy array
|
|
227
|
+
|
|
228
|
+
# Save as PNG (lossless)
|
|
229
|
+
experiment.files("frames").save_image(pixels, to="frame.png")
|
|
230
|
+
|
|
231
|
+
# Save as JPEG with quality control
|
|
232
|
+
experiment.files("frames").save_image(pixels, to="frame.jpg", quality=85)
|
|
233
|
+
|
|
234
|
+
# Auto-detection also works
|
|
235
|
+
experiment.files("frames").save(pixels, to="frame.jpg")
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
See [CHANGELOG.md](CHANGELOG.md) for complete release notes.
|
|
163
239
|
|
|
164
240
|
## Development Setup
|
|
165
241
|
|
|
@@ -6,20 +6,21 @@ ml_dash/auth/device_secret.py,sha256=qUsz6M9S1GEIukvmz57eJEp57srSx74O4MU9mZEeDlE
|
|
|
6
6
|
ml_dash/auth/exceptions.py,sha256=IeBwUzoaTyFtPwd4quFOIel49inIzuabe_ChEeEXEWI,725
|
|
7
7
|
ml_dash/auth/token_storage.py,sha256=L18W8J7D1LlCDlY3Q32l0RXeNh0o7YVDQeeGYm64Dgw,8163
|
|
8
8
|
ml_dash/auto_start.py,sha256=FHTTui33bxfk5rHf-VY2RFcd2JQ_LsNpkUu7Qtpc-GY,1721
|
|
9
|
+
ml_dash/buffer.py,sha256=i4-PZ703_yuKJPAXpmWBGm8jHAAdIBqiA0NIZQEc3wo,26201
|
|
9
10
|
ml_dash/cli.py,sha256=X8LsQA8Wfa1XuXsbvePaGo6NYer7f8CNzy33VT3jrqg,2740
|
|
10
11
|
ml_dash/cli_commands/__init__.py,sha256=bjAmV7MsW-bhtW_4SnLJ0Cfkt9h82vMDC8ebW1Ke8KE,38
|
|
11
12
|
ml_dash/cli_commands/api.py,sha256=NekZEJGWNpIfB6YrsrOw7kw7rZKjVudwgJWPZIy6ANQ,4535
|
|
12
13
|
ml_dash/cli_commands/create.py,sha256=i6LPA6vefpHUeXncBNzQsLnwF5EM2uF6IX4g7vTDYXo,4400
|
|
13
|
-
ml_dash/cli_commands/download.py,sha256=
|
|
14
|
-
ml_dash/cli_commands/list.py,sha256=
|
|
14
|
+
ml_dash/cli_commands/download.py,sha256=Jw-ZeVH8SL9t2yRNCwSmQ0qUOzI4_iWGWt7SwAfM4Ig,33853
|
|
15
|
+
ml_dash/cli_commands/list.py,sha256=H442wOAcWYtDwq6BS7lpZbkKhqfTXBCHGctbw8zT1Zw,20841
|
|
15
16
|
ml_dash/cli_commands/login.py,sha256=zX-urtUrfzg2qOGtKNYQgj6UloN9kzj4zEO6h_xwuNs,6782
|
|
16
17
|
ml_dash/cli_commands/logout.py,sha256=lTUUNyRXqvo61qNkCd4KBrPUujDAHnNqsHkU6bHie0U,1332
|
|
17
|
-
ml_dash/cli_commands/profile.py,sha256=
|
|
18
|
-
ml_dash/cli_commands/upload.py,sha256=
|
|
19
|
-
ml_dash/client.py,sha256=
|
|
18
|
+
ml_dash/cli_commands/profile.py,sha256=AsdwAA2bmSTVnYyJ31iddkSwYJfYqJ60V1UGjFpa3YI,5869
|
|
19
|
+
ml_dash/cli_commands/upload.py,sha256=SSUfXC3qoNpoFvPM_ia-ing_N50LNiAvMy9op6FM9Ew,49664
|
|
20
|
+
ml_dash/client.py,sha256=L-FZysVAuIovJJZ1MlDMPhOPJFyL77pMuBxtucG88x8,62005
|
|
20
21
|
ml_dash/config.py,sha256=oz2xvoBh2X_xUXWr92cPD5nFxXMT5LxVNypv5B5O0fA,3116
|
|
21
|
-
ml_dash/experiment.py,sha256=
|
|
22
|
-
ml_dash/files.py,sha256=
|
|
22
|
+
ml_dash/experiment.py,sha256=sq5Bu-vcKhzTQlUsI6SzIHUZyUkxn7ZSMp_AbhFe4Bw,43462
|
|
23
|
+
ml_dash/files.py,sha256=tGJCTxPfd9vmfvIEqstZjzLvqmHzMZffPXHz0jU9bYU,54441
|
|
23
24
|
ml_dash/log.py,sha256=E-DLg0vejVLLEyShJ_r0LneDMI0XU7XTH5iKWYJe9jI,5298
|
|
24
25
|
ml_dash/metric.py,sha256=ghD1jnuv6dbjV1Jlo7q0mx9UEzpdto2Y1-oDWrSfg04,25809
|
|
25
26
|
ml_dash/params.py,sha256=pPFvknJAJX5uhckzjO1r-HNnKbQFFKDISFmOXNET5eY,9046
|
|
@@ -27,8 +28,9 @@ ml_dash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
27
28
|
ml_dash/remote_auto_start.py,sha256=5fvQDHv1CWEKFb6WAa5_uyEInwV_SvotXjOO_6i6ZKE,1687
|
|
28
29
|
ml_dash/run.py,sha256=_a1l5qswwMgrhvajx_lI-I5IXhfHDeH3hfLAJ7Uk_Gs,8847
|
|
29
30
|
ml_dash/snowflake.py,sha256=14rEpRU5YltsmmmZW0EMUy_hdv5S5ME9gWVtmdmwfiU,4917
|
|
30
|
-
ml_dash/storage.py,sha256=
|
|
31
|
-
ml_dash
|
|
32
|
-
ml_dash-0.6.
|
|
33
|
-
ml_dash-0.6.
|
|
34
|
-
ml_dash-0.6.
|
|
31
|
+
ml_dash/storage.py,sha256=x1W-dK6wQY36-LVOJ4kA8Dn07ObNQuIErQWJ3b0PoGY,44910
|
|
32
|
+
ml_dash/track.py,sha256=Dfg1ZnmKZ_FlE5ZfG8Qld_wN4RIMs3nrOxrxwf3thiY,8164
|
|
33
|
+
ml_dash-0.6.9.dist-info/WHEEL,sha256=z-mOpxbJHqy3cq6SvUThBZdaLGFZzdZPtgWLcP2NKjQ,79
|
|
34
|
+
ml_dash-0.6.9.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
|
|
35
|
+
ml_dash-0.6.9.dist-info/METADATA,sha256=f2YU7ukCO9VmIQ1zrctXaRBOA5D6t5caT89JLMD6Sxw,9535
|
|
36
|
+
ml_dash-0.6.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|