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.7.tar.gz (45.7 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.7-py3-none-any.whl (79.0 kB view details)

Uploaded Python 3

File details

Details for the file monitorch-0.1.0.7.tar.gz.

File metadata

  • Download URL: monitorch-0.1.0.7.tar.gz
  • Upload date:
  • Size: 45.7 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.7.tar.gz
Algorithm Hash digest
SHA256 72cb78fee7456faf5a830e6a457ac60895dbbc48d93894abb918529f742de3fd
MD5 00e42bc6dc7c5645fe1b979d556a69be
BLAKE2b-256 4c2e38d894ccce4594ad26f94ddedd35b543bfa205fab4189edf1deb2a9d8353

See more details on using hashes here.

File details

Details for the file monitorch-0.1.0.7-py3-none-any.whl.

File metadata

  • Download URL: monitorch-0.1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 79.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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ef0809cc42fb2dafd6c38e414123861af256e689de8fe822e15b37c8937278b1
MD5 bb236a56c8690170d3880a1937c108c9
BLAKE2b-256 3556c73a2e791abbe5c1072a4ac7ede27472a0145b6dc16df4a277a8fa7a53d2

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