Skip to main content

Package containing utilities for implementing RSN2/MANN

Project description

MANN

MANN, which stands for Multitask Artificial Neural Networks, is a Python package which enables creating sparse multitask models compatible with TensorFlow. This package contains custom layers and utilities to facilitate the training and optimization of models using the Reduction of Sub-Network Neuroplasticity (RSN2) training procedure developed by AI Squared, Inc.

Installation

This package is available through PyPi and can be installed via the following command:

pip install mann

To install the current version directly from GitHub without cloning, run the following command:

pip install git+https://github.com/AISquaredInc/mann.git

Alternatively, you can install the package by cloning the repository from GitHub using the following commands:

# clone the repository and cd into it
git clone https://github.com/AISquaredInc/mann
cd mann

# install the package
pip install .

Mac M1 Users

For those with a Mac with the M1 processor, this package can be installed, but the standard version of TensorFlow is not compatible with the M1 SOC. In order to install a compatible version of TensorFlow, please install the Miniforge conda environment, which utilizes the conda-forge channel only. Once you are using Miniforge, using conda to install TensorFlow in that environment should install the correct version. After installing TensorFlow, the command pip install mann will install the MANN package.

Capabilities

The MANN package includes two subpackages, the mann.utils package and the mann.layers package. As the name implies, the mann.utils package includes utilities which assist in model training. The mann.layers package includes custom Keras-compatible layers which can be used to train sparse multitask models.

Utils

The mann.utils subpackage has three main functions: the mask_model function, the get_custom_objects function, and the convert_model function.

In addition to the functions just mentioned, there is also an ActiveSparsification callback object which enables active sparsification during training rather than solely one-shot sparsification. Note that this callback currently only supports simultaneous training. We are working to support iterative training with this callback as well.

  1. mask_model
    • The mask_model function is central to the RSN2 training procedure and enables masking/pruning a model so a large percentage of the weights are inactive.
    • Inputs to the mask_model function are a TensorFlow model, a percentile in integer form, a method - either one of 'gradients' or 'magnitude', input data, and target data.
  2. get_custom_objects
    • The get_custom_objects function takes no parameters and returns a dictionary of all custom objects required to load a model trained using this package.
  3. remove_layer_masks
    • The remove_layer_masks function takes a trained model with masked layers and converts it to a model without masking layers.

Layers

The mann.layers subpackage contains custom Keras-compatible layers which can be used to train sparse multitask models. The layers contained in this package are as follows:

  1. MaskedDense
    • This layer is nearly identical to the Keras Dense layer, but it supports masking and pruning to reduce the number of active weights.
  2. MaskedConv2D
    • This layer is nearly identical to the Keras Conv2D layer, but it supports masking and pruning to reduce the number of active weights.
  3. MultiMaskedDense
    • This layer supports isolating pathways within the network and dedicating them for individual tasks and performing fully-connected operations on the input data.
  4. MultiMaskedConv2D
    • This layer supports isolating pathways within the network and dedicating them for individual tasks and performing convolutional operations on the input data.
  5. MultiDense
    • This layer supports multitask inference using a fully-connected architecture and is not designed for training. Once a model is trained with the MultiMaskedDense layer, that layer can be converted into this layer for inference by using the mann.utils.remove_layer_masks function.
  6. MultiConv2D
    • This layer supports multitask inference using a convolutional architecture and is not designed for training. Once a model is trained with the MultiMaskedConv2D layer, that layer can be converted to this layer for inference by using the mann.utils.remove_layer_masks function.
  7. SelectorLayer
    • This layer selects which of the multiple inputs fed into it is returned as a result. This layer is designed to be used specifically with multitask layers.
  8. SumLayer
    • This layer returns the element-wise sum of all of the inputs.
  9. FilterLayer
    • This layer can be turned on or off, and indicates whether the single input passed to it should be output or if all zeros should be returned.
  10. MultiMaxPool2D
    • This layer implements Max Pool operations on multitask inputs.

Additional Documentation and Training Materials

Additional documentation and training materials will be added to the AI Squared Website as we continue to develop this project and its capabilities.

Feature Roadmap

  • Transformers
    • We are in the process of adding the Transformer Architecture into this package. Creating these layers will enable the training of multitask compressed models specifically for Natural Language Processing (NLP). Stay tuned!

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

mann-0.2.1.dev2.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

mann-0.2.1.dev2-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file mann-0.2.1.dev2.tar.gz.

File metadata

  • Download URL: mann-0.2.1.dev2.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for mann-0.2.1.dev2.tar.gz
Algorithm Hash digest
SHA256 27d7c541e9068dd3f83673d9756144640e30a07699a7107374c6b204379759c4
MD5 8e70aaf8c70f459068475f0a3593c693
BLAKE2b-256 74a86b290fb8452fb93c7f4fa6429d5cd70e25e4efda114ef74a6a243f784c81

See more details on using hashes here.

File details

Details for the file mann-0.2.1.dev2-py3-none-any.whl.

File metadata

  • Download URL: mann-0.2.1.dev2-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for mann-0.2.1.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 e46cb191accab896e0ea98138f3eb63ef89b91cd08f734781f8885378e01ce36
MD5 9c7008df80f432f1cd9ff34165b93c43
BLAKE2b-256 7fce274afe9a899e6abe2203d343fe13c115b358267acea01386348fdf2dd003

See more details on using hashes here.

Supported by

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