Skip to main content

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

Tensorflow

Malcolm Lett has created an excellent Tensorflow library with similar features. So if you prefer Tensorflow, please check it out:

training-instrumentation-toolkit

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

monitorch-0.1.0.6.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

monitorch-0.1.0.6-py3-none-any.whl (74.0 kB view details)

Uploaded Python 3

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

Hashes for monitorch-0.1.0.6.tar.gz
Algorithm Hash digest
SHA256 b69f19865bfe22e1ea65f1266139c35c7af8d2adf58ab427e6d6ef44c2975e21
MD5 d00b66af432213a586b5f5ec57077c77
BLAKE2b-256 0cc43d8f8732e7b2546a63f717c1cbdfd40faaf361bb32745390ab2e651e416a

See more details on using hashes here.

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

Hashes for monitorch-0.1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c5ba019a6656398fb0c224484e9d039e3b03067cd1ed182a9ba7f6362627f486
MD5 00ffc27a8a0b2835e9505f86047cf56b
BLAKE2b-256 f21043f984f33e08f9045068fc40e75eec51e2a51547ccda84a1b912f94d0c82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page