cp2k/docs/methods/machine_learning/nequip.md

86 lines
3.4 KiB
Markdown

# NequIP and Allegro
NequIP and Allegro are frameworks designed for developing interatomic potentials for molecular
dynamics simulations using deep equivariant neural networks. The methodology and recent
high-performance upgrades are described in detail in the literature ([](#Batzner2022),
[](#Musaelian2023), [](#Tan2025)).
The CP2K interface is compatible with models trained and compiled with NequIP version >= 0.7.0, and
it is consistent with the LAMMPS `pair_nequip_allegro` (v0.7.0) integration.
## Input Section
Inference in CP2K has been unified and is configured entirely through the
[NEQUIP](#CP2K_INPUT.FORCE_EVAL.MM.FORCEFIELD.NONBONDED.NEQUIP) section within the `&NONBONDED`
forcefield parameters.
An example of the input configuration:
```text
&FORCEFIELD
&NONBONDED
&NEQUIP
MODEL_TYPE NEQUIP # possible choices are NEQUIP or ALLEGRO
ATOMS H O
POT_FILE_NAME NequIP/waterscan-neq0.16.nequip.pth
UNIT_ENERGY eV
UNIT_FORCES eV*angstrom^-1
UNIT_LENGTH angstrom
&END NEQUIP
&END NONBONDED
&END FORCEFIELD
```
- [MODEL_TYPE](#CP2K_INPUT.FORCE_EVAL.MM.FORCEFIELD.NONBONDED.NEQUIP.MODEL_TYPE): Specifies the
architecture of the loaded model (`NEQUIP` or `ALLEGRO`).
- [ATOMS](#CP2K_INPUT.FORCE_EVAL.MM.FORCEFIELD.NONBONDED.NEQUIP.ATOMS): Expects a list of
elements/kinds.
- [POT_FILE_NAME](#CP2K_INPUT.FORCE_EVAL.MM.FORCEFIELD.NONBONDED.NEQUIP.POT_FILE_NAME): The path to
the NequIP/Allegro model.
- **`UNIT_*`**: These tags explicitly define the units for the model's internal lengths, energies,
and forces.
Full example input files demonstrating production-ready molecular dynamics setups can be found in
the CP2K regression tests directory:
- `tests/Fist/regtest-nequip/water-bulk.inp`
- `tests/Fist/regtest-allegro/water-bulk.inp`
## Compiling CP2K with LibTorch
Running NequIP or Allegro requires compiling CP2K with the LibTorch library. Versions of LibTorch
(2.4 through 2.7) are supported.
For CP2K binaries running on CPUs, installing the toolchain using the flag `--with-libtorch` is
sufficient.
To benefit from GPU acceleration, either compile LibTorch from scratch or download the precompiled
LibTorch library for CUDA from [PyTorch](https://pytorch.org) and provide the appropriate path to
the toolchain script:
```shell
./install_cp2k_toolchain.sh --with-libtorch=<path-to-libtorch-cuda>
```
## Validation & Reproducibility
- **Comparison with LAMMPS:** We have verified that this implementation numerically reproduces the
results of the LAMMPS `pair_nequip_allegro` plugin.
- **Data:** The training datasets, model files inside `data/NequIP` and `data/Allegro`, input
scripts, and parity plots used for validation are available on Zenodo:
[doi:10.5281/zenodo.18848354](https://doi.org/10.5281/zenodo.18848354).
## Further Resources
For additional references on NequIP, Allegro, and equivariant neural networks (e3nn), see:
- **High-Performance Upgrades:** Paper [](#Tan2025) and source code at
[github.com/mir-group/pair_nequip_allegro](https://github.com/mir-group/pair_nequip_allegro).
- **Allegro:** Paper [](#Musaelian2023) and source code at
[github.com/mir-group/allegro](https://github.com/mir-group/allegro).
- **NequIP:** Paper [](#Batzner2022) and source code at
[github.com/mir-group/nequip](https://github.com/mir-group/nequip).
- **e3nn:** For an introduction to Euclidean neural networks, visit [e3nn.org](https://e3nn.org) and
[doi:10.5281/zenodo.7430260](https://dx.doi.org/10.5281/zenodo.7430260).