File size: 8,389 Bytes
3e02ab8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | ---
license: apache-2.0
tasks:
- materials-simulation
- molecular-dynamics
- energy-prediction
- force-prediction
frameworks:
- pytorch
language:
- en
tags:
- OneScience
- NequIP
- machine-learning-potential
- molecular-simulation
- materials-computing
- graph-neural-network
- equivariant-neural-network
- training
- fine-tuning
- inference
datasets:
- OneScience-Group/FCC_Cu
---
<p align="center">
<strong>
<span style="font-size: 30px;">NequIP</span>
</strong>
</p>
# Model Introduction
NequIP is a machine-learning interatomic potential (MLIP) for molecular and materials systems. Built on an E(3)-equivariant graph neural network, it predicts the energies and forces of atomic structures.
Reference implementation: https://github.com/mir-group/nequip
# Model Description
This repository provides the OneScience-integrated NequIP model code, OAM-L model weights, and runnable examples for training, fine-tuning, and inference. The `model/` directory corresponds only to `src/onescience/models/nequip/` in the main OneScience repository; training utilities, data-processing tools, and other shared modules are provided by the installed OneScience package.
The included OAM-L weights are:
| File | Purpose |
| --- | --- |
| `weight/NequIP-OAM-L-0.1.nequip.pth` | Compiled model for ASE single-point energy, atomic force, and stress inference |
| `weight/NequIP-OAM-L-0.1.nequip.zip` | NequIP package for OAM-L fine-tuning and checkpoint inference |
# Use Cases
| Use case | Description |
| :---: | :--- |
| Interatomic-potential training | Train a NequIP model using the example configurations and ASE extxyz data |
| Pretrained-model fine-tuning | Fine-tune the OAM-L package using data labeled with energy and forces |
| Single-point energy and force inference | Predict the energy, atomic forces, and stress of a structure with a compiled model or fine-tuned checkpoint |
| Structure relaxation | Optimize atomic positions with ASE |
| Energy-volume curve | Scan the volume of a periodic crystal and calculate the corresponding energy |
| Slurm/DCU training | Submit single-device or multi-device jobs using the included configurations and launch scripts |
# Usage
## 1. Using OneCode
Try intelligent, one-click AI4S programming in the OneCode online environment:
[Try intelligent, one-click AI4S programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)
## 2. Manual Installation and Usage
**Hardware requirements**
- A GPU or DCU is recommended for training.
- A CPU can be used for import checks and small-configuration connectivity tests, but full training will be slow.
- DCU users must install DTK in advance. DTK 25.04.2 or later, or the OneScience-recommended version matching the current cluster, is recommended.
### Download the Model Package
```bash
hf download --model OneScience-Group/NequIP --local-dir ./NequIP
cd NequIP
```
### Install the Runtime Environment
**DCU environment**
```bash
# Activate DTK and Conda first
conda create -n onescience311 python=3.11 -y
conda activate onescience311
# uv installation is also supported
pip install onescience[matchem-dcu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
```
**GPU environment**
```bash
# Activate Conda first
conda create -n onescience311 python=3.11 -y libstdcxx-ng=12 libgcc-ng=12 gcc_linux-64=12 gxx_linux-64=12
conda activate onescience311
# uv installation is also supported
pip install onescience[matchem-gpu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
```
### Training Data
Training data is not bundled with this repository. Using the introductory FCC Cu dataset as an example, download it from Hugging Face to `data/` in the repository root:
```bash
hf download --dataset OneScience-Group/FCC_Cu --local-dir ./data
```
After downloading, the raw data is located at `data/data/FCC_Cu/raw/fcu.xyz`. The dataset contains 6,855 structures, each with 52 atoms of C, H, O, and Cu. It uses an ASE-readable extxyz format and includes periodic cells together with energy and force labels. For production training or fine-tuning, use data consistent with the target system, label definitions, and units.
The training scripts read models and data from shared directories. Set the paths for your cluster before training or fine-tuning:
```bash
export ONESCIENCE_MODELS_DIR=/path/to/onescience-models
export ONESCIENCE_DATASETS_DIR=/path/to/onescience-datasets
```
To use the OAM-L weights included in this repository, copy them into the shared model directory:
```bash
mkdir -p "$ONESCIENCE_MODELS_DIR/NequIP"
cp weight/NequIP-OAM-L-0.1.nequip.pth "$ONESCIENCE_MODELS_DIR/NequIP/"
cp weight/NequIP-OAM-L-0.1.nequip.zip "$ONESCIENCE_MODELS_DIR/NequIP/"
```
### Training
Generate minimal smoke-test data and run local training:
```bash
python demo/prepare_smoke_data.py
bash demo/run.sh --config configs/tutorial_smoke.yaml
```
Download the official FCU tutorial data and submit a training job:
```bash
python demo/download_tutorial_data.py
bash demo/run.sh --config configs/tutorial_fcu.yaml --submit
```
The eight-DCU configurations run locally or submit to Slurm automatically, depending on the currently available resources:
```bash
bash demo/run.sh --config configs/tutorial_smoke_8dcu.yaml
bash demo/run.sh --config configs/tutorial_fcu_8dcu.yaml
```
Outputs are written to `outputs/` by default. The actual wait time for a training job depends on the cluster queue and available resources.
### Model Weights
This repository includes the OAM-L trained weights:
```text
e83a1d656f8b19b55d2f05708c83e054612f713e9a1b06266aa010db58e56517 weight/NequIP-OAM-L-0.1.nequip.pth
5d01a4fab228abb3cdb6ace0033f93993729956bca6a42234a2a8816825b9a0f weight/NequIP-OAM-L-0.1.nequip.zip
```
### Fine-Tuning
Validate the OAM-L fine-tuning workflow with generated smoke-test data:
```bash
python demo/prepare_smoke_data.py
bash demo/run.sh --config configs/oam_l_finetune_smoke.yaml --submit
```
Use the production fine-tuning configuration:
```bash
bash demo/run.sh --config configs/oam_l_finetune.yaml --submit
```
Provide production fine-tuning data through `ONESCIENCE_DATASETS_DIR` in an ASE-readable extxyz format. Every frame must contain at least `energy` and `forces`; element types, units, and label definitions must be consistent with the OAM-L package and configuration.
### Inference
Use the compiled model for single-point energy, atomic force, and stress prediction:
```bash
python single_point.py --compiled-model weight/NequIP-OAM-L-0.1.nequip.pth
python single_point.py \
--compiled-model weight/NequIP-OAM-L-0.1.nequip.pth \
--input structure.cif \
--output outputs/single_point.json
```
Calculate an energy-volume curve and perform structure relaxation:
```bash
python energy_volume.py
python structure_relaxation.py --fmax 0.05 --steps 100 --output-dir outputs/oam_l_relax
```
Run inference with a checkpoint produced by fine-tuning:
```bash
python single_point.py \
--checkpoint outputs/<run>/checkpoints/best.ckpt \
--package weight/NequIP-OAM-L-0.1.nequip.zip \
--output outputs/<run>/single_point.json
```
# Official OneScience Resources
| Platform | OneScience Main Repository | Skills Repository |
| --- | --- | --- |
| Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills |
| GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills |
# Citation and License
- The NequIP-related code comes from the OneScience MatChem integration and refers to the upstream NequIP project (https://github.com/mir-group/nequip). The OneScience integration code follows the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) used by the main repository.
- If you use NequIP or OAM-L training results in research, please cite the original NequIP paper, the relevant OneScience projects, and the datasets used.
- Redistribution rights for the OAM-L model weights are governed by the original OneScience/OAM-L release terms. Confirm the applicable rights and restrictions before use.
- The FCC Cu dataset is published separately at [OneScience-Group/FCC_Cu](https://huggingface.co/datasets/OneScience-Group/FCC_Cu). Its license and provenance are documented on the dataset card and by its upstream source.
|