Metadata-Version: 2.5
Name: gromo
Version: 0.1.0
Summary: Growing module for pytorch
Project-URL: Homepage, https://growingnet.github.io/gromo/
Project-URL: Documentation, https://growingnet.github.io/gromo/
Project-URL: Source, https://github.com/growingnet/gromo
Project-URL: Issues, https://github.com/growingnet/gromo/issues
Project-URL: Changelog, https://growingnet.github.io/gromo/whats_new.html
Author: Théo Rudkiewicz, Manon Verbockhaven, Stella Douka, Maxence Tekou, Ying Jin, Hugo Mousset, Félix Houdouin, Léo Burgund, Stéphane Rivaud, Alex Davey, François Landes, Guillaume Charpiat, Sylvain Chevallier
Maintainer-email: Sylvain Chevallier <sylvain.a.chevallier@inria.fr>
License-Expression: BSD-3-Clause
License-File: LICENCE.md
Keywords: deep learning,growing neural networks,neural architecture growth,pytorch
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Requires-Dist: deprecated
Requires-Dist: networkx
Requires-Dist: numpy
Requires-Dist: torch
Requires-Dist: torchmetrics
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pydoclint; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: doc
Requires-Dist: matplotlib; extra == 'doc'
Requires-Dist: numpydoc; extra == 'doc'
Requires-Dist: pre-commit; extra == 'doc'
Requires-Dist: pydata-sphinx-theme; extra == 'doc'
Requires-Dist: ruff; extra == 'doc'
Requires-Dist: sphinx; extra == 'doc'
Requires-Dist: sphinx-bootstrap-theme; extra == 'doc'
Requires-Dist: sphinx-copybutton; extra == 'doc'
Requires-Dist: sphinx-design; extra == 'doc'
Requires-Dist: sphinx-favicon; extra == 'doc'
Requires-Dist: sphinx-gallery; extra == 'doc'
Requires-Dist: sphinx-rtd-theme; extra == 'doc'
Requires-Dist: sphinxcontrib-bibtex; extra == 'doc'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Description-Content-Type: text/markdown

<p align=center>
  <img alt="banner" src="https://raw.githubusercontent.com/growingnet/gromo/main/docs/source/images/logo_bg_black.png" height=500px>
</p>

[![codecov](https://codecov.io/github/growingnet/gromo/graph/badge.svg?token=87HWKJ6H6D)](https://codecov.io/github/growingnet/gromo)
[![Tests](https://github.com/growingnet/gromo/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/growingnet/gromo/actions/workflows/tests.yml)
[![Ruff Linting](https://github.com/growingnet/gromo/actions/workflows/ruff-check.yml/badge.svg?branch=main)](https://github.com/growingnet/gromo/actions/workflows/ruff-check.yml)

# GroMo

Gromo is a collaborative effort for designing efficient and growable networks
for machine learning. It is a Python package that provides a set of tools for
pytorch users to train neural networks, that grow in size and complexity as
they learn. The package is designed to be modular and flexible, allowing users
to easily design and train their own networks.

The package is built on top of `torch.nn.Module`,
examples shows how to use the package to train a simple neural network, and how
to grow the network as it learns. The theoretical and algorithmic details of
Gromo are described in the paper indicated below.

The package is still in development, if you would like to contribute, please
contact us!

```
Verbockhaven, M., Rudkiewicz, T., Chevallier, S., and Charpiat, G. (2024). Growing tiny networks: Spotting expressivity bottlenecks and fixing them optimally. Transactions on Machine Learning Research.
```

```
Douka, S., Verbockhaven, M., Rudkiewicz, T., Rivaud, S., Landes, F., Chevallier, S., Charpiat, G. (2025). Growth strategies for arbitrary DAG neural architectures. European Symposium on Artificial Neural Networks.
```

## Installation

### For users

Install the latest release from PyPI:

```bash
pip install gromo
```

or, in a [uv](https://docs.astral.sh/uv/) project, `uv add gromo`.

To install the development version from GitHub:

```bash
pip install git+https://github.com/growingnet/gromo.git
```

### For developers

To set up a development environment:
1. Ensure that you have an SSH key set up with GitHub.
2. Fork the repository.
3. Use the following commands, replacing `$USER` with your GitHub username:

```bash
pip install build
git clone git@github.com:$USER/gromo.git --origin origin
cd gromo
git remote add upstream git@github.com:growingnet/gromo.git
git remote set-url --push upstream no-pushing
git fetch upstream
git branch --set-upstream-to=upstream/main main
python -m build
pip install -e .[dev,test]
pre-commit install
```

## Documentation

The documentation for Gromo can be found at: https://growingnet.github.io/gromo/
