Skip to main content

Machine Learning Interatomic Potentials in JAX

Project description

🪩 MLIP: Machine Learning Interatomic Potentials

uv Python 3.11 pre-commit Tests and Linters 🧪 badge

👀 Overview

mlip is a Python library for training and deploying Machine Learning Interatomic Potentials (MLIP) written in JAX. It provides the following functionality:

  • Multiple model architectures (for now: MACE, NequIP and ViSNet)
  • Dataset loading and preprocessing
  • Training and fine-tuning MLIP models
  • Batched inference with trained MLIP models
  • MD simulations with MLIP models using multiple simulation backends (for now: JAX-MD and ASE)
  • Batched MD simulations and energy minimizations with the JAX-MD simulation backend.
  • Energy minimizations with MLIP models using the same simulation backends as for MD.

The purpose of the library is to provide users with a toolbox to deal with MLIP models in true end-to-end fashion. Hereby we follow the key design principles of (1) easy-of-use also for non-expert users that mainly care about applying pre-trained models to relevant biological or material science applications, (2) extensibility and flexibility for users more experienced with MLIP and JAX, and (3) a focus on high inference speeds that enable running long MD simulations on large systems which we believe is necessary in order to bring MLIP to large-scale industrial application. See our inference speed benchmark below.

🎙️ For further information on the design principles and story behind the mlip library, also check out our Let's Talk Research podcast episode on the topic.

See the Installation section for details on how to install mlip and the example Jupyter notebooks linked below for a quick way to get started. For detailed instructions, visit our extensive code documentation.

This repository currently supports implementations of:

As the backend for equivariant operations, the current version of the code relies on the e3nn library.

📦 Installation

mlip can be installed via pip like this:

pip install mlip

However, this command only installs the regular CPU version of JAX. We recommend that the library is run on GPU. Use this command instead to install the GPU-compatible version:

pip install "mlip[cuda]"

This command installs the CUDA 12 version of JAX. For different versions, please install mlip without the cuda flag and install the desired JAX version via pip.

Note that using the TPU version of JAX is, in principle, also supported by this library. You need to install it separately via pip. However, it has not been thoroughly tested and should therefore be considered an experimental feature.

⚡ Examples

In addition to the in-depth tutorials provided as part of our documentation here, we also provide example Jupyter notebooks that can be used as simple templates to build your own MLIP pipelines:

To run the tutorials, just install Jupyter notebooks via pip and launch it from a directory that contains the notebooks:

pip install notebook && jupyter notebook

The installation of mlip itself is included within the notebooks. We recommend to run these notebooks with GPU acceleration enabled.

Alternatively, we provide a Dockerfile in this repository that you can use to run the tutorial notebooks. This can be achieved by executing the following lines from any directory that contains the downloaded Dockerfile:

docker build . -t mlip_tutorials
docker run -p 8888:8888 --gpus all mlip_tutorials

Note that this will only work on machines with NVIDIA GPUs. Once running, you can access the Jupyter notebook server by clicking on the URL displayed in the console of the form "http://127.0.0.1:8888/tree?token=abcdef...".

🤗 Pre-trained models (via HuggingFace)

We have prepared pre-trained models trained on a subset of the SPICE2 dataset for each of the models included in this repo. They can be accessed directly on InstaDeep's MLIP collection, along with our curated dataset or directly through the huggingface-hub Python API:

from huggingface_hub import hf_hub_download

hf_hub_download(repo_id="InstaDeepAI/mace-organics", filename="mace_organics_01.zip", local_dir="")
hf_hub_download(repo_id="InstaDeepAI/visnet-organics", filename="visnet_organics_01.zip", local_dir="")
hf_hub_download(repo_id="InstaDeepAI/nequip-organics", filename="nequip_organics_01.zip", local_dir="")
hf_hub_download(repo_id="InstaDeepAI/SPICE2-curated", filename="SPICE2_curated.zip", local_dir="")

Note that the pre-trained models are released on a different license than this library, please refer to the model cards of the relevant HuggingFace repos.

🚀 Inference time benchmarks

To showcase the runtime efficiency, we conducted benchmarks across all three models on two different systems: Chignolin (1UAO, 138 atoms) and Alpha-bungarotoxin (1ABT, 1205 atoms), both run for 1 ns of MD simulation on a H100 NVIDIA GPU. All these JAX-based model implementations are our own and should not be considered representative of the performance of the code developed by the original authors of the methods. In the table below, we compare our integrations with the JAX-MD and the ASE simulation engines, respectively. Further details can be found in our white paper (see below).

MACE (2,139,152 parameters):

Systems JAX-MD ASE
1UAO 6.3 ms/step 11.6 ms/step
1ABT 66.8 ms/step 99.5 ms/step

ViSNet (1,137,922 parameters):

Systems JAX-MD ASE
1UAO 2.9 ms/step 6.2 ms/step
1ABT 25.4 ms/step 46.4 ms/step

NequIP (1,327,792 parameters):

Systems JAX-MD ASE
1UAO 3.8 ms/step 8.5 ms/step
1ABT 67.0 ms/step 105.7 ms/step

🙏 Acknowledgments

We would like to acknowledge beta testers for this library: Isabel Wilkinson, Nick Venanzi, Hassan Sirelkhatim, Leon Wehrhan, Sebastien Boyer, Massimo Bortone, Scott Cameron, Louis Robinson, Tom Barrett, and Alex Laterre.

📚 Citing our work

We kindly request that you to cite our white paper when using this library:

C. Brunken, O. Peltre, H. Chomet, L. Walewski, M. McAuliffe, V. Heyraud, S. Attias, M. Maarand, Y. Khanfir, E. Toledo, F. Falcioni, M. Bluntzer, S. Acosta-Gutiérrez and J. Tilly, Machine Learning Interatomic Potentials: library for efficient training, model development and simulation of molecular systems, arXiv, 2025, arXiv:2505.22397.

The BibTeX formatted citation:

@misc{brunken2025mlip,
      title={Machine Learning Interatomic Potentials: library for efficient training,
             model development and simulation of molecular systems},
      author={Christoph Brunken and Olivier Peltre and Heloise Chomet and
              Lucien Walewski and Manus McAuliffe and Valentin Heyraud and Solal Attias
              and Martin Maarand and Yessine Khanfir and Edan Toledo and Fabio Falcioni
              and Marie Bluntzer and Silvia Acosta-Gutiérrez and Jules Tilly},
      year={2025},
      eprint={2505.22397},
      archivePrefix={arXiv},
      primaryClass={physics.chem-ph},
      url={https://arxiv.org/abs/2505.22397},
}

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

mlip-0.1.8.tar.gz (370.5 kB view details)

Uploaded Source

Built Distribution

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

mlip-0.1.8-py3-none-any.whl (172.5 kB view details)

Uploaded Python 3

File details

Details for the file mlip-0.1.8.tar.gz.

File metadata

  • Download URL: mlip-0.1.8.tar.gz
  • Upload date:
  • Size: 370.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"11","id":"bullseye","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mlip-0.1.8.tar.gz
Algorithm Hash digest
SHA256 4a6cba3e2b698c17222da7c7e167e0f7060e9b8f29ba77f5f6af22cbd8cb433d
MD5 4040d009fe64ec72c927ecce34da2a11
BLAKE2b-256 0d7ce0ba50c93b28aa925be1ec72e89f92f2fbffae22df09c766e208c20e604d

See more details on using hashes here.

File details

Details for the file mlip-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: mlip-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 172.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"11","id":"bullseye","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mlip-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a184dd56ddf48e545b7b60a8c2cf9d58e00896bea63477d4a0cfd134f8ca64f1
MD5 28d09231ee74cf26c201033c4027c407
BLAKE2b-256 a7acdc950744a824ab0560381be7a0aa1a9669cddc282dddeb86d4274ddb62cb

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