pulseml 0.2.2__tar.gz → 0.2.4__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.
Files changed (35) hide show
  1. {pulseml-0.2.2 → pulseml-0.2.4}/LICENSE +49 -49
  2. pulseml-0.2.4/PKG-INFO +134 -0
  3. pulseml-0.2.4/README.md +91 -0
  4. pulseml-0.2.4/pyproject.toml +86 -0
  5. pulseml-0.2.4/src/pulse/cli.py +370 -0
  6. pulseml-0.2.4/src/pulse/pulse.py +7815 -0
  7. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulse/pulse_backend.py +112 -10
  8. pulseml-0.2.4/src/pulse/pulse_brain.py +544 -0
  9. pulseml-0.2.4/src/pulse/pulse_cli.py +11690 -0
  10. pulseml-0.2.4/src/pulse/pulse_detect.py +656 -0
  11. pulseml-0.2.4/src/pulse/pulse_monitor.py +477 -0
  12. pulseml-0.2.4/src/pulse/pulse_stream.py +424 -0
  13. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulse/pulse_supabase.py +117 -10
  14. pulseml-0.2.4/src/pulseml.egg-info/PKG-INFO +134 -0
  15. pulseml-0.2.4/src/pulseml.egg-info/SOURCES.txt +26 -0
  16. pulseml-0.2.4/src/pulseml.egg-info/entry_points.txt +2 -0
  17. pulseml-0.2.4/tests/test_brain.py +266 -0
  18. pulseml-0.2.4/tests/test_detect.py +181 -0
  19. pulseml-0.2.4/tests/test_detection_quality.py +147 -0
  20. pulseml-0.2.4/tests/test_detector_wiring.py +105 -0
  21. pulseml-0.2.4/tests/test_integration.py +155 -0
  22. pulseml-0.2.4/tests/test_stream_monitor.py +257 -0
  23. pulseml-0.2.2/PKG-INFO +0 -398
  24. pulseml-0.2.2/README.md +0 -362
  25. pulseml-0.2.2/pyproject.toml +0 -49
  26. pulseml-0.2.2/src/pulse/pulse.py +0 -3822
  27. pulseml-0.2.2/src/pulse/pulse_cli.py +0 -5659
  28. pulseml-0.2.2/src/pulseml.egg-info/PKG-INFO +0 -398
  29. pulseml-0.2.2/src/pulseml.egg-info/SOURCES.txt +0 -14
  30. {pulseml-0.2.2 → pulseml-0.2.4}/setup.cfg +0 -0
  31. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulse/__init__.py +0 -0
  32. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulse/pulse_pdf.py +0 -0
  33. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulseml.egg-info/dependency_links.txt +0 -0
  34. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulseml.egg-info/requires.txt +0 -0
  35. {pulseml-0.2.2 → pulseml-0.2.4}/src/pulseml.egg-info/top_level.txt +0 -0
@@ -1,49 +1,49 @@
1
- PULSE PROPRIETARY SOFTWARE LICENSE
2
-
3
- Copyright (c) 2026 Yash Patel. All Rights Reserved.
4
-
5
- This software and associated files (the "Software") are the proprietary
6
- property of the copyright holder. The Software is licensed, not sold.
7
-
8
- 1. GRANT OF LICENSE
9
- Subject to the terms of this license, the copyright holder grants you a
10
- limited, non-exclusive, non-transferable, revocable license to install
11
- and run the Software for your own internal use.
12
-
13
- 2. RESTRICTIONS
14
- Except as expressly permitted above, you may NOT, and may not permit
15
- others to:
16
- (a) copy, reproduce, distribute, sublicense, rent, lease, or resell the
17
- Software;
18
- (b) modify, adapt, translate, or create derivative works based on the
19
- Software;
20
- (c) reverse engineer, decompile, disassemble, or otherwise attempt to
21
- derive the source code of the Software, except to the extent this
22
- restriction is prohibited by applicable law;
23
- (d) remove, obscure, or alter any proprietary notices on the Software;
24
- (e) use the Software to build a competing product or service.
25
-
26
- 3. FUTURE PAID TERMS
27
- The copyright holder reserves the right to change pricing, introduce
28
- paid tiers or license keys, limit functionality, or discontinue free
29
- distribution of future versions at any time. Continued use of any
30
- future version may be subject to additional terms, including payment.
31
-
32
- 4. NO WARRANTY
33
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
34
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
35
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
36
- NONINFRINGEMENT.
37
-
38
- 5. LIMITATION OF LIABILITY
39
- IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
40
- DAMAGES, OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION
41
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42
-
43
- 6. TERMINATION
44
- This license is effective until terminated. It will terminate
45
- automatically without notice if you fail to comply with any of its
46
- terms. Upon termination, you must cease all use of the Software and
47
- destroy all copies in your possession.
48
-
49
- For licensing inquiries, contact: codeyash09@gmail.com
1
+ PULSE PROPRIETARY SOFTWARE LICENSE
2
+
3
+ Copyright (c) 2026 Yash Patel. All Rights Reserved.
4
+
5
+ This software and associated files (the "Software") are the proprietary
6
+ property of the copyright holder. The Software is licensed, not sold.
7
+
8
+ 1. GRANT OF LICENSE
9
+ Subject to the terms of this license, the copyright holder grants you a
10
+ limited, non-exclusive, non-transferable, revocable license to install
11
+ and run the Software for your own internal use.
12
+
13
+ 2. RESTRICTIONS
14
+ Except as expressly permitted above, you may NOT, and may not permit
15
+ others to:
16
+ (a) copy, reproduce, distribute, sublicense, rent, lease, or resell the
17
+ Software;
18
+ (b) modify, adapt, translate, or create derivative works based on the
19
+ Software;
20
+ (c) reverse engineer, decompile, disassemble, or otherwise attempt to
21
+ derive the source code of the Software, except to the extent this
22
+ restriction is prohibited by applicable law;
23
+ (d) remove, obscure, or alter any proprietary notices on the Software;
24
+ (e) use the Software to build a competing product or service.
25
+
26
+ 3. FUTURE PAID TERMS
27
+ The copyright holder reserves the right to change pricing, introduce
28
+ paid tiers or license keys, limit functionality, or discontinue free
29
+ distribution of future versions at any time. Continued use of any
30
+ future version may be subject to additional terms, including payment.
31
+
32
+ 4. NO WARRANTY
33
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
34
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
35
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
36
+ NONINFRINGEMENT.
37
+
38
+ 5. LIMITATION OF LIABILITY
39
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
40
+ DAMAGES, OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION
41
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42
+
43
+ 6. TERMINATION
44
+ This license is effective until terminated. It will terminate
45
+ automatically without notice if you fail to comply with any of its
46
+ terms. Upon termination, you must cease all use of the Software and
47
+ destroy all copies in your possession.
48
+
49
+ For licensing inquiries, contact: codeyash09@gmail.com
pulseml-0.2.4/PKG-INFO ADDED
@@ -0,0 +1,134 @@
1
+ Metadata-Version: 2.4
2
+ Name: pulseml
3
+ Version: 0.2.4
4
+ Summary: A live ML training debugger for tracking, diagnosing, verifying, and patching training runs.
5
+ Author-email: Yash Patel <codeyash09@gmail.com>
6
+ License: Proprietary
7
+ Project-URL: Homepage, https://pulsedb.netlify.app/
8
+ Project-URL: Repository, https://github.com/codeyash09/PulseML
9
+ Project-URL: Issues, https://github.com/codeyash09/PulseML/issues
10
+ Project-URL: Documentation, https://pulsedb.netlify.app/
11
+ Keywords: machine-learning,deep-learning,debugging,ml-debugging,training,pytorch,tensorflow,numpy,cupy,jax,gradients,training-debugger
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Debuggers
26
+ Requires-Python: >=3.9
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: numpy
30
+ Requires-Dist: matplotlib
31
+ Requires-Dist: pillow
32
+ Requires-Dist: litellm
33
+ Requires-Dist: fpdf2
34
+ Provides-Extra: torch
35
+ Requires-Dist: torch; extra == "torch"
36
+ Provides-Extra: tensorflow
37
+ Requires-Dist: tensorflow; extra == "tensorflow"
38
+ Provides-Extra: cupy
39
+ Requires-Dist: cupy-cuda12x; extra == "cupy"
40
+ Provides-Extra: jax
41
+ Requires-Dist: jax; extra == "jax"
42
+ Dynamic: license-file
43
+
44
+ # PulseML
45
+
46
+ **Pulse** — a live ML training debugger, GUI or CLI, any backend.
47
+
48
+ 🔗 [pulsedb.netlify.app](https://pulsedb.netlify.app/)
49
+
50
+ Pulse is a live machine learning training debugger designed to monitor
51
+ tensors, track metrics, visualize heatmaps and line charts, and interact
52
+ with an integrated AI analyst.
53
+
54
+ ## Key Features
55
+
56
+ - **GUI Mode** — Opens an interactive matrix picker with live shapes,
57
+ followed by a live dashboard with a heatmap grid and an integrated AI
58
+ chat panel.
59
+ - **Smart Scalars** — Scalars (loss, accuracy, learning rate)
60
+ automatically render as live step-charts rather than heatmaps.
61
+ Loss-like scalars are auto-detected and pre-selected in the picker.
62
+ - **CLI Mode** — Built for Colab, SSH, or headless environments, printing
63
+ tensor stats step-by-step, displaying live ASCII charts for scalars,
64
+ and supporting optional labeled PDF snapshots. Supports pausing
65
+ training so you can tag new matrices or ask the AI to interpret
66
+ results, right from the terminal.
67
+ - **Universal Backend Support** — Automatically detects and works with
68
+ NumPy, PyTorch, TensorFlow, CuPy, and JAX via a shared backend
69
+ abstraction layer.
70
+ - **High Performance** — Keeps overhead low by converting tensors to
71
+ host-side NumPy arrays, reusing Matplotlib figures (`set_data`) instead
72
+ of rebuilding them every step, and matching render sizes to the actual
73
+ on-screen thumbnail.
74
+ - **Pulse AI Analyst** — A context-aware chat panel briefed on its role
75
+ that can inspect live matrix statistics, heatmaps, and your training
76
+ code when "Send Code" is enabled.
77
+
78
+ ## Past Debugs
79
+
80
+ - Debugged a custom LLM after a vocab size increase (2.5x) by catching a
81
+ normalization bug — dividing residual growth by `math.sqrt(num_layers)`
82
+ instead of `num_layers` — that let activations blow up and halted
83
+ training.
84
+ - Debugged another developer's custom attention mechanism producing NaN
85
+ loss, tracing it to a missing infinity check before a division.
86
+
87
+ See [pulsedb.netlify.app](https://pulsedb.netlify.app/) for screenshots
88
+ of matrix selection, the live dashboard, and the CLI view.
89
+
90
+ ## Install
91
+
92
+ ```bash
93
+ pip install pulseml
94
+ ```
95
+
96
+ `tkinter` is required for GUI mode and ships with most Python installs.
97
+ On Debian/Ubuntu, if it's missing:
98
+
99
+ ```bash
100
+ sudo apt install python3-tk
101
+ ```
102
+
103
+ For CLI-mode PDF snapshots, `fpdf2` is installed automatically as part of
104
+ the base package.
105
+
106
+ ## Quickstart
107
+
108
+ Import `auto_track` and call it right before your training loop starts.
109
+ Make sure your loop is wrapped in `if __name__ == '__main__':`.
110
+
111
+ ```python
112
+ from pulse import auto_track
113
+
114
+ if __name__ == '__main__':
115
+ auto_track() # pass your training function for shape discovery, or call directly
116
+
117
+ # Your training loop
118
+ for epoch in range(num_epochs):
119
+ # Training logic here
120
+ pass
121
+ ```
122
+
123
+ ## AI Chat & API Keys
124
+
125
+ To enable the AI chat panel, set the relevant provider's API key as an
126
+ environment variable (e.g. `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`,
127
+ `GEMINI_API_KEY`, `DEEPSEEK_API_KEY`) — or leave it unset and Pulse will
128
+ prompt you for one inside the GUI the first time you send a message.
129
+
130
+ ## License
131
+
132
+ Proprietary. See `LICENSE`. Use of this software is governed by the
133
+ terms in that file — copying, redistribution, and reverse engineering
134
+ are not permitted.
@@ -0,0 +1,91 @@
1
+ # PulseML
2
+
3
+ **Pulse** — a live ML training debugger, GUI or CLI, any backend.
4
+
5
+ 🔗 [pulsedb.netlify.app](https://pulsedb.netlify.app/)
6
+
7
+ Pulse is a live machine learning training debugger designed to monitor
8
+ tensors, track metrics, visualize heatmaps and line charts, and interact
9
+ with an integrated AI analyst.
10
+
11
+ ## Key Features
12
+
13
+ - **GUI Mode** — Opens an interactive matrix picker with live shapes,
14
+ followed by a live dashboard with a heatmap grid and an integrated AI
15
+ chat panel.
16
+ - **Smart Scalars** — Scalars (loss, accuracy, learning rate)
17
+ automatically render as live step-charts rather than heatmaps.
18
+ Loss-like scalars are auto-detected and pre-selected in the picker.
19
+ - **CLI Mode** — Built for Colab, SSH, or headless environments, printing
20
+ tensor stats step-by-step, displaying live ASCII charts for scalars,
21
+ and supporting optional labeled PDF snapshots. Supports pausing
22
+ training so you can tag new matrices or ask the AI to interpret
23
+ results, right from the terminal.
24
+ - **Universal Backend Support** — Automatically detects and works with
25
+ NumPy, PyTorch, TensorFlow, CuPy, and JAX via a shared backend
26
+ abstraction layer.
27
+ - **High Performance** — Keeps overhead low by converting tensors to
28
+ host-side NumPy arrays, reusing Matplotlib figures (`set_data`) instead
29
+ of rebuilding them every step, and matching render sizes to the actual
30
+ on-screen thumbnail.
31
+ - **Pulse AI Analyst** — A context-aware chat panel briefed on its role
32
+ that can inspect live matrix statistics, heatmaps, and your training
33
+ code when "Send Code" is enabled.
34
+
35
+ ## Past Debugs
36
+
37
+ - Debugged a custom LLM after a vocab size increase (2.5x) by catching a
38
+ normalization bug — dividing residual growth by `math.sqrt(num_layers)`
39
+ instead of `num_layers` — that let activations blow up and halted
40
+ training.
41
+ - Debugged another developer's custom attention mechanism producing NaN
42
+ loss, tracing it to a missing infinity check before a division.
43
+
44
+ See [pulsedb.netlify.app](https://pulsedb.netlify.app/) for screenshots
45
+ of matrix selection, the live dashboard, and the CLI view.
46
+
47
+ ## Install
48
+
49
+ ```bash
50
+ pip install pulseml
51
+ ```
52
+
53
+ `tkinter` is required for GUI mode and ships with most Python installs.
54
+ On Debian/Ubuntu, if it's missing:
55
+
56
+ ```bash
57
+ sudo apt install python3-tk
58
+ ```
59
+
60
+ For CLI-mode PDF snapshots, `fpdf2` is installed automatically as part of
61
+ the base package.
62
+
63
+ ## Quickstart
64
+
65
+ Import `auto_track` and call it right before your training loop starts.
66
+ Make sure your loop is wrapped in `if __name__ == '__main__':`.
67
+
68
+ ```python
69
+ from pulse import auto_track
70
+
71
+ if __name__ == '__main__':
72
+ auto_track() # pass your training function for shape discovery, or call directly
73
+
74
+ # Your training loop
75
+ for epoch in range(num_epochs):
76
+ # Training logic here
77
+ pass
78
+ ```
79
+
80
+ ## AI Chat & API Keys
81
+
82
+ To enable the AI chat panel, set the relevant provider's API key as an
83
+ environment variable (e.g. `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`,
84
+ `GEMINI_API_KEY`, `DEEPSEEK_API_KEY`) — or leave it unset and Pulse will
85
+ prompt you for one inside the GUI the first time you send a message.
86
+
87
+ ## License
88
+
89
+ Proprietary. See `LICENSE`. Use of this software is governed by the
90
+ terms in that file — copying, redistribution, and reverse engineering
91
+ are not permitted.
@@ -0,0 +1,86 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "pulseml"
7
+ version = "0.2.4"
8
+ description = "A live ML training debugger for tracking, diagnosing, verifying, and patching training runs."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = { text = "Proprietary" }
12
+
13
+
14
+
15
+ authors = [
16
+ { name = "Yash Patel", email = "codeyash09@gmail.com" }
17
+ ]
18
+
19
+ keywords = [
20
+ "machine-learning",
21
+ "deep-learning",
22
+ "debugging",
23
+ "ml-debugging",
24
+ "training",
25
+ "pytorch",
26
+ "tensorflow",
27
+ "numpy",
28
+ "cupy",
29
+ "jax",
30
+ "gradients",
31
+ "training-debugger"
32
+ ]
33
+
34
+ classifiers = [
35
+ "Development Status :: 3 - Alpha",
36
+ "Intended Audience :: Developers",
37
+ "Intended Audience :: Science/Research",
38
+ "License :: Other/Proprietary License",
39
+ "Operating System :: OS Independent",
40
+ "Programming Language :: Python :: 3",
41
+ "Programming Language :: Python :: 3 :: Only",
42
+ "Programming Language :: Python :: 3.9",
43
+ "Programming Language :: Python :: 3.10",
44
+ "Programming Language :: Python :: 3.11",
45
+ "Programming Language :: Python :: 3.12",
46
+ "Programming Language :: Python :: 3.13",
47
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
48
+ "Topic :: Software Development :: Debuggers",
49
+ ]
50
+
51
+ dependencies = [
52
+ "numpy",
53
+ "matplotlib",
54
+ "pillow",
55
+ "litellm",
56
+ "fpdf2",
57
+ ]
58
+
59
+ [project.scripts]
60
+ pulse = "pulse.cli:main"
61
+
62
+ [project.optional-dependencies]
63
+ torch = [
64
+ "torch"
65
+ ]
66
+
67
+ tensorflow = [
68
+ "tensorflow"
69
+ ]
70
+
71
+ cupy = [
72
+ "cupy-cuda12x"
73
+ ]
74
+
75
+ jax = [
76
+ "jax"
77
+ ]
78
+
79
+ [project.urls]
80
+ Homepage = "https://pulsedb.netlify.app/"
81
+ Repository = "https://github.com/codeyash09/PulseML"
82
+ Issues = "https://github.com/codeyash09/PulseML/issues"
83
+ Documentation = "https://pulsedb.netlify.app/"
84
+
85
+ [tool.setuptools.packages.find]
86
+ where = ["src"]