NequIP / README.md
dadadaxi's picture
Upload folder using huggingface_hub
3e02ab8 verified
|
Raw
History Blame Contribute Delete
8.39 kB
---
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.