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.5.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.5-py3-none-any.whl (74.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: monitorch-0.1.0.5.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.5.tar.gz
Algorithm Hash digest
SHA256 8e7054e11bf9c6ab572aca6cd99ca42808b41c44b819cebdc3cc860637643be7
MD5 19989fa95560c8b51a34f21ee4350307
BLAKE2b-256 f163a0d90242a47cd83d26dd7992bd14ad5d18423072d9b496b77d8f0f5c7514

See more details on using hashes here.

File details

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

File metadata

  • Download URL: monitorch-0.1.0.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 75564bf5374355fae304678529fb9b2e4c46e4e030ff1a675b9892e9433423c1
MD5 23a1103aebcefdc896493a1aa9e9a927
BLAKE2b-256 f4d917256cb8a09d8a39af3ea5b8694619dd035338394f64bb35d636d67432ee

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