libmg is a Python library for compiling μG expressions into TensorFlow model. It allows the parsing, unparsing, normalization, compilation of μG expressions. It also provides functionalities to visualize graphs and model outputs.
- A Linux operating system (preferably Ubuntu 16.04 or later as per the TensorFlow recommendation).
- Python 3.11 environment.
The library can run both on the CPU or the GPU. To enable the GPU, the specific dependencies needed are those of TensorFlow 2.12, that is:
- GCC 9.3.1
- Bazel 5.3.0
- NVIDIA GPU drivers version 450.80.02 or higher
- CUDA 11.8
- cuDNN 8.6
- (Optional) TensorRT 7
libmg can be installed via pip or from source.
libmg can be installed from the Python Package Index PyPI, by simply running the following command in your shell or virtual environment:
$ pip install libmg
You can install libmg from source using git. You can start by downloading the repo archive or by cloning the repo:
git clone https://github.com/quasylab/mG.git
Then proceed by opening a shell into the mG
directory you have just downloaded. To build the library you will need to use [Poetry](https://python-poetry.
org/). Run the following command:
poetry install
and Poetry will install libmg in your Python environment. To install the development dependencies as well, install with:
poetry install --with tests --with docs
This will add the testing dependencies (pytest, mypy, and flake8) as well as the documentation dependencies (mkdocs and plugins).
- Create a
Dataset
object with theGraph
instances to process. - Define dictionaries of
Psi
,Phi
,Sigma
objects as needed by your application. - Define a
CompilerConfig
that is adequate for the graphs in yourDataset
- Create a
MGCompiler
using the dictionaries and theCompilerConfig
- Create an adequate
Loader
for yourDataset
: use theSingleGraphLoader
if your dataset contains a single graph and use theMultipleGraphLoader
otherwise. - Build a model from your μG formulas using the compiler's
compile(expr)
method. - Train your model as you would in Tensorflow
- Use
output = model.predict(loader.load(), steps=loader.steps_per_epoch)
or a loop liketo run your model on the dataset.for x in loader.load(): output = model(x)
- Visualize the outputs on the browser using
print_layer(model, inputs, layer_idx=-1)
You can find the official documentation here.
Matteo Belenchia, Flavio Corradini, Michela Quadrini, and Michele Loreti. 2023. Implementing a CTL Model Checker with μG, a Language for Programming Graph Neural Networks. In Formal Techniques for Distributed Objects, Components, and Systems: 43rd IFIP WG 6.1 International Conference, FORTE 2023, Held as Part of the 18th International Federated Conference on Distributed Computing Techniques, DisCoTec 2023, Lisbon, Portugal, June 19–23, 2023, Proceedings. Springer-Verlag, Berlin, Heidelberg, 37–54. https://doi.org/10.1007/978-3-031-35355-0_4. Preprint: https://www.researchgate.net/publication/371467699_Implementing_a_CTL_Model_Checker_with_mu_mathcal_G_a_Language_for_Programming_Graph_Neural_Networks