ml-dash 0.6.0__py3-none-any.whl → 0.6.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ml-dash
3
- Version: 0.6.0
3
+ Version: 0.6.2
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
@@ -43,6 +43,7 @@ Requires-Dist: imageio-ffmpeg>=0.4.9
43
43
  Requires-Dist: scikit-image>=0.21.0
44
44
  Requires-Dist: rich>=13.0.0
45
45
  Requires-Dist: cryptography>=42.0.0
46
+ Requires-Dist: params-proto==3.0.0rc27
46
47
  Requires-Dist: keyring>=25.0.0 ; extra == 'auth'
47
48
  Requires-Dist: qrcode>=8.0.0 ; extra == 'auth'
48
49
  Requires-Dist: pytest>=8.0.0 ; extra == 'dev'
@@ -67,12 +68,13 @@ Description-Content-Type: text/markdown
67
68
 
68
69
  # ML-Dash
69
70
 
70
- A simple and flexible SDK for ML experiment metricing and data storage.
71
+ A simple and flexible SDK for ML experiment tracking and data storage.
71
72
 
72
73
  ## Features
73
74
 
74
- - **Three Usage Styles**: Decorator, context manager, or direct instantiation
75
+ - **Three Usage Styles**: Pre-configured singleton (dxp), context manager, or direct instantiation
75
76
  - **Dual Operation Modes**: Remote (API server) or local (filesystem)
77
+ - **OAuth2 Authentication**: Secure device flow authentication for CLI and SDK
76
78
  - **Auto-creation**: Automatically creates namespace, project, and folder hierarchy
77
79
  - **Upsert Behavior**: Updates existing experiments or creates new ones
78
80
  - **Experiment Lifecycle**: Automatic status tracking (RUNNING, COMPLETED, FAILED, CANCELLED)
@@ -91,50 +93,73 @@ A simple and flexible SDK for ML experiment metricing and data storage.
91
93
  <td>
92
94
 
93
95
  ```bash
94
- uv add ml-dash
96
+ uv add ml-dash==0.6.2rc1
95
97
  ```
96
98
 
97
99
  </td>
98
100
  <td>
99
101
 
100
102
  ```bash
101
- pip install ml-dash
103
+ pip install ml-dash==0.6.2rc1
102
104
  ```
103
105
 
104
106
  </td>
105
107
  </tr>
106
108
  </table>
107
109
 
108
- ## Getting Started
110
+ ## Quick Start
109
111
 
110
- ### Remote Mode (with API Server)
112
+ ### 1. Authenticate (Required for Remote Mode)
113
+
114
+ ```bash
115
+ ml-dash login
116
+ ```
117
+
118
+ This opens your browser for secure OAuth2 authentication. Your credentials are stored securely in your system keychain.
119
+
120
+ ### 2. Start Tracking Experiments
121
+
122
+ #### Option A: Use the Pre-configured Singleton (Easiest)
123
+
124
+ ```python
125
+ from ml_dash.auto_start import dxp
126
+
127
+ # Start experiment (uploads to https://api.dash.ml by default)
128
+ with dxp.run:
129
+ dxp.log("Training started", level="info")
130
+ dxp.params.set(learning_rate=0.001, batch_size=32)
131
+
132
+ for epoch in range(10):
133
+ loss = train_one_epoch()
134
+ dxp.metrics("train").log(loss=loss, epoch=epoch)
135
+ ```
136
+
137
+ #### Option B: Create Your Own Experiment
111
138
 
112
139
  ```python
113
140
  from ml_dash import Experiment
114
141
 
115
142
  with Experiment(
116
- name="my-experiment",
117
- project="my-project",
118
- remote="https://api.dash.ml",
119
- api_key="your-jwt-token"
120
- ) as experiment:
121
- print(f"Experiment ID: {experiment.id}")
143
+ prefix="alice/my-project/my-experiment",
144
+ dash_url="https://api.dash.ml", # token auto-loaded
145
+ ).run as experiment:
146
+ experiment.log("Hello!", level="info")
147
+ experiment.params.set(lr=0.001)
122
148
  ```
123
149
 
124
- ### Local Mode (Filesystem)
150
+ #### Option C: Local Mode (No Authentication Required)
125
151
 
126
152
  ```python
127
153
  from ml_dash import Experiment
128
154
 
129
155
  with Experiment(
130
- name="my-experiment",
131
- project="my-project",
132
- local_path=".ml-dash"
133
- ) as experiment:
134
- pass # Your code here
156
+ project="my-project", prefix="my-experiment", dash_root=".dash"
157
+ ).run as experiment:
158
+ experiment.log("Running locally", level="info")
159
+
135
160
  ```
136
161
 
137
- See [examples/](examples/) for more complete examples.
162
+ See [docs/getting-started.md](docs/getting-started.md) for more examples.
138
163
 
139
164
  ## Development Setup
140
165
 
@@ -0,0 +1,33 @@
1
+ ml_dash/__init__.py,sha256=JjKe0VyPxtWJGZU4a7YGxON6jkcrovDowUGKg9mzmNw,1583
2
+ ml_dash/auth/__init__.py,sha256=3lwM-Y8UBHPU1gFW2JNpmXlPVTnkGudWLKNFFKulQfo,1200
3
+ ml_dash/auth/constants.py,sha256=ku4QzQUMNjvyJwjy7AUdywMAZd59jXSxNHZxDiagUWU,280
4
+ ml_dash/auth/device_flow.py,sha256=DQOdPNlZCuU1umZOA_A6WXdRM3zWphnyo9IntToBl_A,7921
5
+ ml_dash/auth/device_secret.py,sha256=qUsz6M9S1GEIukvmz57eJEp57srSx74O4MU9mZEeDlE,1158
6
+ ml_dash/auth/exceptions.py,sha256=IeBwUzoaTyFtPwd4quFOIel49inIzuabe_ChEeEXEWI,725
7
+ ml_dash/auth/token_storage.py,sha256=L18W8J7D1LlCDlY3Q32l0RXeNh0o7YVDQeeGYm64Dgw,8163
8
+ ml_dash/auto_start.py,sha256=62_eZG1qBNAwu6AXduTSo4niCVZ27X52ZK0WEr3yS1o,1812
9
+ ml_dash/cli.py,sha256=BoaBulcqnM88XuV5BQEx_-AQAXJAYSJqpvnHggEII_I,2559
10
+ ml_dash/cli_commands/__init__.py,sha256=bjAmV7MsW-bhtW_4SnLJ0Cfkt9h82vMDC8ebW1Ke8KE,38
11
+ ml_dash/cli_commands/api.py,sha256=tgHB3pvSYv36_RbxsAtiEfjtivnIn7NjdHq0AL2QQGo,4335
12
+ ml_dash/cli_commands/download.py,sha256=ZnRhaDLIM28Dri4-YHLU1fBwC9AAvNoiuut3pkdBhJU,27422
13
+ ml_dash/cli_commands/list.py,sha256=9dK0UbNTvysGM5c8Mkb5XfFNkhMIhtjIP1v9BFo-5ew,15400
14
+ ml_dash/cli_commands/login.py,sha256=zX-urtUrfzg2qOGtKNYQgj6UloN9kzj4zEO6h_xwuNs,6782
15
+ ml_dash/cli_commands/logout.py,sha256=lTUUNyRXqvo61qNkCd4KBrPUujDAHnNqsHkU6bHie0U,1332
16
+ ml_dash/cli_commands/profile.py,sha256=BaSM6BAN3YM4tw95iKV_nypKZxwsB3PoAAejQcYip5E,2351
17
+ ml_dash/cli_commands/upload.py,sha256=Ch1pWC4rU3M9P52Ne_gAlkE7yz4WZKgZlRBG3hpy9_4,44059
18
+ ml_dash/client.py,sha256=TEk-Vt323wBpDPPwX-fFFS7IVF7hS3aBDxn9lewbpls,31455
19
+ ml_dash/config.py,sha256=oz2xvoBh2X_xUXWr92cPD5nFxXMT5LxVNypv5B5O0fA,3116
20
+ ml_dash/experiment.py,sha256=DsEl4q7EksfBApOjd1q4ncX6COSC7Hv2bCeFPbeELC8,39218
21
+ ml_dash/files.py,sha256=bihUHKpdknytLGuGgkcvhh585nziZrvYjiHl6rHnoD0,49227
22
+ ml_dash/log.py,sha256=E-DLg0vejVLLEyShJ_r0LneDMI0XU7XTH5iKWYJe9jI,5298
23
+ ml_dash/metric.py,sha256=ghD1jnuv6dbjV1Jlo7q0mx9UEzpdto2Y1-oDWrSfg04,25809
24
+ ml_dash/params.py,sha256=pPFvknJAJX5uhckzjO1r-HNnKbQFFKDISFmOXNET5eY,9046
25
+ ml_dash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ ml_dash/remote_auto_start.py,sha256=5fvQDHv1CWEKFb6WAa5_uyEInwV_SvotXjOO_6i6ZKE,1687
27
+ ml_dash/run.py,sha256=C0quTLZXKDAlwstzEiJ75CWCX1pwYrmtMZH3z-ia6Pw,6310
28
+ ml_dash/snowflake.py,sha256=14rEpRU5YltsmmmZW0EMUy_hdv5S5ME9gWVtmdmwfiU,4917
29
+ ml_dash/storage.py,sha256=9mG42pvvWkkracbjCr9Xdp890Nm4XSxL7_JeFbBe28g,33020
30
+ ml_dash-0.6.2.dist-info/WHEEL,sha256=z-mOpxbJHqy3cq6SvUThBZdaLGFZzdZPtgWLcP2NKjQ,79
31
+ ml_dash-0.6.2.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
32
+ ml_dash-0.6.2.dist-info/METADATA,sha256=HvCgXKi2TsP0-K1J5KECG64Nuzs_OnbUCVLBFMT6w2Y,7207
33
+ ml_dash-0.6.2.dist-info/RECORD,,
@@ -1,29 +0,0 @@
1
- ml_dash/__init__.py,sha256=eO526uX_T_Y5tySTVw2ZN-QCR46120gYPD6DWhenMUw,2228
2
- ml_dash/auth/__init__.py,sha256=3lwM-Y8UBHPU1gFW2JNpmXlPVTnkGudWLKNFFKulQfo,1200
3
- ml_dash/auth/constants.py,sha256=ku4QzQUMNjvyJwjy7AUdywMAZd59jXSxNHZxDiagUWU,280
4
- ml_dash/auth/device_flow.py,sha256=DQOdPNlZCuU1umZOA_A6WXdRM3zWphnyo9IntToBl_A,7921
5
- ml_dash/auth/device_secret.py,sha256=qUsz6M9S1GEIukvmz57eJEp57srSx74O4MU9mZEeDlE,1158
6
- ml_dash/auth/exceptions.py,sha256=IeBwUzoaTyFtPwd4quFOIel49inIzuabe_ChEeEXEWI,725
7
- ml_dash/auth/token_storage.py,sha256=vuWDAhQPdjUwNTJAdoWP-EUDudIJVTNdWkWnvgS4Qgc,8217
8
- ml_dash/auto_start.py,sha256=u1dSzP7S_ZL2w81Yvft_fS6JysU2z6pfNyMvjtYQe-8,1820
9
- ml_dash/cli.py,sha256=r55bNa3T_guMnSl2dwsj0WF9Ln-vOGsBmbrooMKYhRI,2103
10
- ml_dash/cli_commands/__init__.py,sha256=bjAmV7MsW-bhtW_4SnLJ0Cfkt9h82vMDC8ebW1Ke8KE,38
11
- ml_dash/cli_commands/download.py,sha256=jOUx2aejA_Hz4ttuL8ubFY3pI4j39fYtdn-sZyrYCrE,28674
12
- ml_dash/cli_commands/list.py,sha256=0G0XMJ8cH8_k37IEjwq20t6obT-tKxZPTxr221UF8KA,9757
13
- ml_dash/cli_commands/login.py,sha256=0v8UPj_Y-uYmNDfc8Zv6xddFJPx3_VgVNeESYO700b0,7173
14
- ml_dash/cli_commands/logout.py,sha256=lTUUNyRXqvo61qNkCd4KBrPUujDAHnNqsHkU6bHie0U,1332
15
- ml_dash/cli_commands/upload.py,sha256=4O9iZOQDOiiBBsoDG1Cr8BqeBGSZZSfc3i-5FERjFtU,46439
16
- ml_dash/client.py,sha256=TBIPY0ti31hcyWHGW8SexBUNcSzo-aJ4hLlZtMViPD8,28902
17
- ml_dash/config.py,sha256=aNqX_HT2Yo-BzjFexQ97gQK9xOiBUwuJJ65dKM3oJjs,3481
18
- ml_dash/experiment.py,sha256=qEwPq8U6YXw-bmEBOZX0yL-4Y8TTZYuFsKtMarq8duA,33913
19
- ml_dash/files.py,sha256=p9s15eqgGAf-6bZntXkd_YicS6GjSGzEKAN_YoMuAXQ,26541
20
- ml_dash/log.py,sha256=0yXaNnFwYeBI3tRLHX3kkqWRpg0MbSGwmgjnOfsElCk,5350
21
- ml_dash/metric.py,sha256=vz3YwO1YBWZ797l7TzD5m9WwNBBXlrATyRRzSti8QS0,17194
22
- ml_dash/params.py,sha256=S4wHQfv0EQRXRrFbKLuEKTQOLp5eqnALcIk1pZNroBM,9124
23
- ml_dash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- ml_dash/remote_auto_start.py,sha256=BAsTu41e9SboeSCn9N2vn4ftoYeUVklcAcNM45HJVGA,1610
25
- ml_dash/storage.py,sha256=OTMMHSLYHk_MBfo8PyMQBHD8AZ2TFTS8KSMhVhpG-hg,39493
26
- ml_dash-0.6.0.dist-info/WHEEL,sha256=z-mOpxbJHqy3cq6SvUThBZdaLGFZzdZPtgWLcP2NKjQ,79
27
- ml_dash-0.6.0.dist-info/entry_points.txt,sha256=dYs2EHX1uRNO7AQGNnVaJJpgiy0Z9q7tiy4fHSyaf3Q,46
28
- ml_dash-0.6.0.dist-info/METADATA,sha256=UCpvpQfajtLaLvsRQQ84Ci0uNXgsRnNnyIE6NxAASL0,6328
29
- ml_dash-0.6.0.dist-info/RECORD,,