|
| 1 | +# Descriptor DPA-3 {{ pytorch_icon }} {{ jax_icon }} {{ dpmodel_icon }} |
| 2 | + |
| 3 | +:::{note} |
| 4 | +**Supported backends**: PyTorch {{ pytorch_icon }}, JAX {{ jax_icon }}, DP {{ dpmodel_icon }} |
| 5 | +::: |
| 6 | + |
| 7 | +DPA-3 is an advanced interatomic potential leveraging the message passing architecture. |
| 8 | +Designed as a large atomic model (LAM), DPA-3 is tailored to integrate and simultaneously train on datasets from various disciplines, |
| 9 | +encompassing diverse chemical and materials systems across different research domains. |
| 10 | +Its model design ensures exceptional fitting accuracy and robust generalization both within and beyond the training domain. |
| 11 | +Furthermore, DPA-3 maintains energy conservation and respects the physical symmetries of the potential energy surface, |
| 12 | +making it a dependable tool for a wide range of scientific applications. |
| 13 | + |
| 14 | +Reference: will be released soon. |
| 15 | + |
| 16 | +Training example: `examples/water/dpa3/input_torch.json`. |
| 17 | + |
| 18 | +## Hyperparameter tests |
| 19 | + |
| 20 | +We systematically conducted DPA-3 training on six representative DFT datasets (available at [AIS-Square](https://www.aissquare.com/datasets/detail?pageType=datasets&name=DPA3_hyperparameter_search&id=316)): |
| 21 | +metallic systems (`Alloy`, `AlMgCu`, `W`), covalent material (`Boron`), molecular system (`Drug`), and liquid water (`Water`). |
| 22 | +Under consistent training conditions (0.5M training steps, batch_size "auto:128"), |
| 23 | +we rigorously evaluated the impacts of some critical hyperparameters on validation accuracy. |
| 24 | + |
| 25 | +The comparative analysis focused on average RMSEs (Root Mean Square Error) for both energy, force and virial predictions across all six systems, |
| 26 | +with results tabulated below to guide scenario-specific hyperparameter selection: |
| 27 | + |
| 28 | +| Model | comment | nlayers | n_dim | e_dim | a_dim | e_sel | a_sel | start_lr | stop_lr | loss prefactors | rmse_e (meV/atom) | rmse_f (meV/Å) | rmse_v (meV/atom) | Training wall time (h) | |
| 29 | +| ---------------- | --------------- | ------- | ------- | ------ | ----- | ------- | ------ | -------- | -------- | ------------------------- | ----------------- | -------------- | ----------------- | ---------------------- | |
| 30 | +| DPA3-L3 | Default | 3 | 256 | 128 | 32 | 120 | 30 | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 5.74 | 85.4 | 43.1 | 9.8 | |
| 31 | +| | Small dimension | 3 | **128** | **64** | 32 | 120 | 30 | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 6.99 | 93.6 | 46.7 | 8.0 | |
| 32 | +| | Large sel | 3 | 256 | 128 | 32 | **154** | **48** | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 5.70 | 83.7 | 43.4 | 14.1 | |
| 33 | +| DPA3-L6 | Default | 6 | 256 | 128 | 32 | 120 | 30 | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 4.85 | 79.9 | 39.7 | 19.2 | |
| 34 | +| | Small dimension | 6 | **128** | **64** | 32 | 120 | 30 | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 5.11 | 77.7 | 41.2 | 14.1 | |
| 35 | +| | Large sel | 6 | 256 | 128 | 32 | **154** | **48** | 1e-3 | 3e-5 | 0.2\|20, 100\|60, 0.02\|1 | 4.76 | 78.4 | 40.2 | 31.8 | |
| 36 | +| DPA2-L6 (medium) | Default | 6 | - | - | - | - | - | 1e-3 | 3.51e-08 | 0.02\|1, 1000\|1, 0.02\|1 | 12.12 | 109.3 | 83.1 | 12.2 | |
| 37 | + |
| 38 | +The loss prefactors (0.2|20, 100|60, 0.02|1) correspond to (`start_pref_e`|`limit_pref_e`, `start_pref_f`|`limit_pref_f`, `start_pref_v`|`limit_pref_v`) respectively. |
| 39 | +Virial RMSEs were averaged exclusively for systems containing virial labels (`Alloy`, `AlMgCu`, `W`, and `Boron`). |
| 40 | + |
| 41 | +Note that we set `float32` in all DPA-3 models, while `float64` in other models by default. |
| 42 | + |
| 43 | +## Requirements of installation from source code {{ pytorch_icon }} |
| 44 | + |
| 45 | +To run the DPA-3 model on LAMMPS via source code installation |
| 46 | +(users can skip this step if using [easy installation](../install/easy-install.md)), |
| 47 | +the custom OP library for Python interface integration must be compiled and linked |
| 48 | +during the [model freezing process](../freeze/freeze.md). |
| 49 | + |
| 50 | +The customized OP library for the Python interface can be installed by setting environment variable {envvar}`DP_ENABLE_PYTORCH` to `1` during installation. |
| 51 | + |
| 52 | +If one runs LAMMPS with MPI, the customized OP library for the C++ interface should be compiled against the same MPI library as the runtime MPI. |
| 53 | +If one runs LAMMPS with MPI and CUDA devices, it is recommended to compile the customized OP library for the C++ interface with a [CUDA-Aware MPI](https://developer.nvidia.com/mpi-solutions-gpus) library and CUDA, |
| 54 | +otherwise the communication between GPU cards falls back to the slower CPU implementation. |
| 55 | + |
| 56 | +## Limitations of the JAX backend with LAMMPS {{ jax_icon }} |
| 57 | + |
| 58 | +When using the JAX backend, 2 or more MPI ranks are not supported. One must set `map` to `yes` using the [`atom_modify`](https://docs.lammps.org/atom_modify.html) command. |
| 59 | + |
| 60 | +```lammps |
| 61 | +atom_modify map yes |
| 62 | +``` |
| 63 | + |
| 64 | +See the example `examples/water/lmp/jax_dpa.lammps`. |
| 65 | + |
| 66 | +## Data format |
| 67 | + |
| 68 | +DPA-3 supports both the [standard data format](../data/system.md) and the [mixed type data format](../data/system.md#mixed-type). |
| 69 | + |
| 70 | +## Type embedding |
| 71 | + |
| 72 | +Type embedding is within this descriptor with the same dimension as the node embedding: {ref}`n_dim <model[standard]/descriptor[dpa3]/repflow/n_dim>` argument. |
| 73 | + |
| 74 | +## Model compression |
| 75 | + |
| 76 | +Model compression is not supported in this descriptor. |
0 commit comments