MACE

MACE is a framework for building interatomic potentials using higher-order equivariant message-passing neural networks. The methodology is described in detail in the literature by Batatia et al. (2022).

Note: Running MACE requires a CP2K build with LibTorch support

Like the NequIP/Allegro interface, CP2K runs MACE models through the generic LibTorch interface: a trained MACE model is exported once to a self-contained TorchScript file (.pth), which CP2K then loads and evaluates at runtime. No Python interpreter is involved during the simulation.

Exporting a MACE model for CP2K

Wraps a trained MACE model (.model) and compiles it to CP2K-loadable TorchScrip file with the helper script cp2k/tools/mace/create_cp2k_model.py:

python create_cp2k_model.py my_mace.model --dtype float64
# -> writes my_mace.model-cp2k.pth

This conversion only needs to be performed once on a machine with both torch and mace installed. The resulting *.pth file uses the same tensor and metadata format as the NequIP interface (inputs pos, edge_index, edge_cell_shift, cell, atom_types; outputs atomic_energy, forces, virial) and embeds the metadata (num_types, r_max, type_names, model_dtype) that CP2K reads to build the neighbour graph. The torch version used for export must be compatible with the LibTorch version linked into CP2K.

Input Section

Inference is configured through the MACE section within the &NONBONDED forcefield parameters:

&FORCEFIELD
  &NONBONDED
    &MACE
      ATOMS Cu
      POT_FILE_NAME MACE/my_mace.model-cp2k.pth
    &END MACE
  &END NONBONDED
&END FORCEFIELD
  • ATOMS: a list of elements/kinds; the mapping to the model type list must be consistent with the coordinates in &COORDS/&TOPOLOGY.

  • POT_FILE_NAME: path to the exported MACE model.

MACE is a message-passing model with a non-local receptive field. As with NequIP, the interface evaluates the full system on every MPI rank and divides the energy, forces, and virial by the number of ranks.

Further Resources