A plug-and-use python library to monitor learning of PyTorch neural networks
Project description
Monitorch
A plug-and-use python module to monitor learning of PyTorch neural networks. Provides easy to use interface to collect and display
- Loss and custom metrics
- Layer outputs (activation and norms)
- Gradients (norms, oscilations and activation)
- Neural Net's Parameters Evolution
Monitorch manages layer separation, data collection and vizualization with simple exposed methods and classes, so the code is concise and expressive without sacrificing informativness of the visualizations and broad scope of its application. It also allows user to choose between static matplotlib and dynamic tensorboard plotting to help investigate both small models and keep track of large machines.
Documentation
Documentation can be found here:
https://monitorch.readthedocs.io/en/latest/.
Usage
Installation
Install the module using pip dependency manager.
pip install monitorch
Code
Use PyTorchInspector from monitorch.inspector to hook your module and lenses (for example LossMetrics or ParameterGradientGeometry) from monitorch.lens to define vizualizations.
import torch
from monitorch.inspector import PyTorchInspector
from monitorch.lens import LossMetrics, ParameterGradientGeometry
mynet = MyNeuralNet() # torch.nn.Module subclass
loss_fn = MSELoss()
optimizer = torch.optim.Adam(module.parameters())
inspector = PyTorchInspector(
lenses = [
LossMetrics(loss_fn=loss_fn),
ParameterGradientGeometry()
],
module = mynet,
vizualizer = "matplotlib"
)
for epoch in range(n_epochs):
# No changes to your training loop
# Passes through training and validation datasets remain the same
...
# at the end of an epoch inspector must be ticked
inspector.tick_epoch()
inspector.vizualizer.show_fig()
You can choose other vizualizers by passing "tensorboard", "print" or an instance of vizualizer's class from monitorch.vizualizers. Note that matplotlib vizualier requires show_fig() call to plot.
Currently module supports gradient and parameter collection for arbitrary PyTorch module and output collection for single output architectures (feedforward, convolution, non-transformer autoencoders etc).
Requirments
- python>=3.10
- torch>=2.0.0
Optional:
- matplotlib>=3.10.0
- tensorboard>=2.19.0
Development:
- sphinx>=8.1.3
- pydata-sphinx-theme>=0.16.1
- pytest>=9.0.3
Tests
Tests can be run with pytest from root project directory. Lens test have no assertions or other critical functionality tests, but are rather smoke tests to catch unhandled exceptions. To run functionality tests run pytest -k "not smoke".
Other repositories
Case studies
- nanochat-monitorch Karpathy's nanochat with viewed using monitorch.
- monitorch-experments Repository with my results using monitorch (including nanochat logs).
Tensorflow
Malcolm Lett has created an excellent Tensorflow library with similar features. So if you prefer Tensorflow, please check it out:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file monitorch-0.1.0.6.tar.gz.
File metadata
- Download URL: monitorch-0.1.0.6.tar.gz
- Upload date:
- Size: 43.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b69f19865bfe22e1ea65f1266139c35c7af8d2adf58ab427e6d6ef44c2975e21
|
|
| MD5 |
d00b66af432213a586b5f5ec57077c77
|
|
| BLAKE2b-256 |
0cc43d8f8732e7b2546a63f717c1cbdfd40faaf361bb32745390ab2e651e416a
|
File details
Details for the file monitorch-0.1.0.6-py3-none-any.whl.
File metadata
- Download URL: monitorch-0.1.0.6-py3-none-any.whl
- Upload date:
- Size: 74.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5ba019a6656398fb0c224484e9d039e3b03067cd1ed182a9ba7f6362627f486
|
|
| MD5 |
00ffc27a8a0b2835e9505f86047cf56b
|
|
| BLAKE2b-256 |
f21043f984f33e08f9045068fc40e75eec51e2a51547ccda84a1b912f94d0c82
|