Skip to main content

Neuromorphic Intermediate Representation

Project description

NIRTorch

PyTorch helpers for the Neuromorphic Intermediate Representation (NIR). This is a no frills python package to enable torch based libraries to translate to NIR.

Installation

pip install nirtorch

Usage

NIRTorch is typically only interfaced by library/hardwarae developers. NIRTorch provides the extract_nir_graph function that takes as input a torch.nn.Module and a means to map Torch modules into NIR nodes. An NIR node is an element in the NIR compute graph, corresponding to neuromorphic ODEs.

Here is an example from the Norse library:

def _extract_norse_module(module: torch.nn.Module) -> Optional[nir.NIRNode]:
    if isinstance(module, LIFBoxCell):
        return nir.LIF(
            tau=module.p.tau_mem_inv,
            v_th=module.p.v_th,
            v_leak=module.p.v_leak,
            r=torch.ones_like(module.p.v_leak),
        )
    elif isinstance(module, torch.nn.Linear):
        return nir.Linear(module.weight, module.bias)
    elif ...

    return None

def to_nir(
    module: torch.nn.Module, sample_data: torch.Tensor, model_name: str = "norse"
) -> nir.NIRNode:
    return extract_nir_graph(
        module, _extract_norse_module, sample_data, model_name=model_name
    )

Acknowledgements

If you use NIR torch in your work, please cite the following Zenodo reference

@software{nir2023,
  author       = {Abreu, Steven and
                  Bauer, Felix and
                  Eshraghian, Jason and
                  Jobst, Matthias and
                  Lenz, Gregor and
                  Pedersen, Jens Egholm and
                  Sheik, Sadique},
  title        = {Neuromorphic Intermediate Representation},
  month        = jul,
  year         = 2023,
  publisher    = {Zenodo},
  version      = {0.0.1},
  doi          = {10.5281/zenodo.8105042},
  url          = {https://doi.org/10.5281/zenodo.8105042}
}

For developers

If you want to make sure that your code is linted correctly on your local machine, use pre-commit to automatically perform checks before every git commit. To use it, first install the package in your environment

pip install pre-commit

and then install the pre-commit hooks that are listed in the root of this repository

pre-commit install

Next time you commit some changes, all the checks will be run!

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

nirtorch-0.1.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

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

nirtorch-0.1.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file nirtorch-0.1.1.tar.gz.

File metadata

  • Download URL: nirtorch-0.1.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for nirtorch-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7ab79b44e6739417145c35dbc03f66f1aa8dcdaee3cf346dd218af11adba3550
MD5 5b17ea60b14d742e1deb99a48fb14db9
BLAKE2b-256 be6ce96aa1538f2306e7f84eb1554bcce37a2e03bd7f9115d021a474a67d0d80

See more details on using hashes here.

File details

Details for the file nirtorch-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: nirtorch-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for nirtorch-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 34bb18b64f587a9e9fcbda7e900c9d785e926b012f704e04c652655068089173
MD5 b396e8cd42753292ed73ad8ea538e4a2
BLAKE2b-256 a13589928d29a01404454a1c2f5ca979b10c6b9dea6a721fb5276f59c0131a1c

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