Using CURATOR with LAMMPS ML-IAP package

ML-IAP provided an unified interface for message-passing models and can optimize the performance of these models on GPUs. It is possible to run large-scale simulations in LAMMPS with this pacakge.

Now models trained with CURATOR can be used in LAMMPS through the original GPU package and ML-IAP interface.

In the following we will focus on the installation and usage of this new ML-IAP interface, which calls the model directly from python and supports cuEquivariance acceleration, multi-GPU simulation, and atomic virials.

Install LAMMPS with ML-IAP package

Requirements

In addition to standard CURATOR dependencies, you will also need:

Preparing the model for ML-IAP

ML-IAP uses atomic energies and pair-wise forces to calculate the energy, forces, and virials of a simulation system. Therefore we need to convert the original model to output atomic energies and pair-wise forces. This can be done with the following command.

curator-deploy <path_to_model.ckpt> --lammps --elements <element1> <element2>

The element list must contain all elements that you will use in your lammps simulation. By default, the converted model will be deployed to lmp_model.pt at current directory. You can also specify the path by using --target_path <path_to_lmp_model.pt>.

Using CURATOR with ML-IAP in LAMMPS

LAMMPS input file

Your LAMMPS input should begin with standard settings:

units         metal
atom_style    atomic
atom_modify   map yes
newton        on

Then define the ML-IAP pair style with your converted model:

pair_style      mliap unified lmp_model.pt 0
pair_coeff      * * C H O N

Note

The 0 after the model filename is a required parameter for the unified ML-IAP interface.

The element list after pair_coeff * * should be ordered as you want them to appear in LAMMPS, and must be a subset of the elements your model was trained on.

Command line inputs

When running LAMMPS with MACE/ML-IAP, use these command line options for GPU acceleration:

lmp -k on g 1 -sf kk -pk kokkos newton on neigh half -in your_input.in

This enables 1 GPU with Kokkos. You can change g 1 to use multiple GPUs if your system supports it.

For multi-GPU simulations with MPI, use:

mpirun -np 2 lmp -k on g 2 -sf kk -pk kokkos newton on neigh half -in input.in

This example uses 2 MPI processes with 2 GPUs. Adjust the number of processes (-np) and GPUs (g) based on your hardware.

Example LAMMPS script

Here’s a complete example LAMMPS script for using CURATOR models with ML-IAP:

# MACE ML-IAP example
units         metal
atom_style    atomic
atom_modify   map yes
newton        on

# Read structure
read_data     structure.data

# Set up MACE potential
pair_style    mliap unified lmp_model.pt 0
pair_coeff    * * C H O N

# Run settings
timestep      0.0001
thermo        100

# MD run
fix           1 all nvt temp 300 300 100
run           1000

Run this script with:

lmp -k on g 1 -sf kk -pk kokkos newton on neigh half -in input.in