@@ -38,18 +38,6 @@ atomic forces (kcal/mol/Å).
3838| Toluene | 1000 | 1000 | 440790 | 15 |
3939| Uracil | 1000 | 1000 | 131770 | 12 |
4040
41- ** Data format** : Each molecule is stored as a single ` .npz ` file with keys
42- ` E ` (energies), ` F ` (forces), ` R ` (positions), and ` z ` (atomic numbers).
43-
44- The configs expect each molecule file under ` ./data/md17/ ` and split indices
45- under ` ./data/md17/splits/<molecule>_<split>_idx.npy ` . For example, the
46- aspirin config reads ` ./data/md17/md17_aspirin.npz ` .
47-
48- Each MD17 config stores the training-split total-energy mean in the SphereNet
49- model with ` data_std: 1.0 ` . The model learns centered energy, restores physical
50- energy internally, and differentiates the restored energy to obtain forces.
51- Dataset labels therefore remain in their original physical units.
52-
5341## Model
5442
5543SphereNet is a spherical message passing neural network for 3D molecular
@@ -175,51 +163,18 @@ and $d_{kj}$ is expanded using a 3D spherical Fourier-Bessel basis.
175163 </body>
176164</table >
177165
178- The table reports MAE on each complete fixed MD17 test split.
179- Trainer-best and final-latest checkpoints are ranked using only validation
180- loss. In that fixed order, the complete test split is used as a release gate
181- for numerical stability and a force MAE no worse than 1.25x the
182- official DIG checkpoint. For retrained ethanol and malonaldehyde,
183- the larger 1.05x independent official-code Torch scratch threshold
184- is also accepted.
185- If a final-latest checkpoint is numerically unstable, a validated stable
186- early-stop checkpoint may be published as both best and latest.
187- The package log records this policy, and both checkpoint triplets
188- must be byte-identical.
189-
190- The optimizer and split protocol follows the official DIG MD17 release: split
191- seed 42 with 1,000 training frames, 1,000 validation frames, and all remaining
192- frames for testing; training batch size 1; Adam with an initial learning rate
193- of 5e-4; ` energy_mae + 100 * force_mae ` ; and StepLR decay by 0.5 every 200
194- epochs. The primary ethanol and malonaldehyde seed sweep runs for
195- 1,300 and 1,100 epochs so that it covers the official release's best
196- epochs, 1,148 and 864. Auxiliary ethanol seeds 47-55 run for 600
197- epochs to cover the independent Torch scratch convergence region.
198- The selected package config records its candidate's planned training horizon;
199- the package log records the selected epoch when early stopping is used.
200- Training time is elapsed single-run time from the recorded training logs.
201-
202- SphereNet Table 3 force MAEs in the row order above are `0.430, 0.178, 0.208,
203- 0.340, 0.178, 0.360, 0.155, 0.267`. The official DIG release checkpoints
204- evaluated on these fixed full test splits give `0.375, 0.181, 0.187, 0.273,
205- 0.139, 0.284, 0.142, 0.245`.
206-
207- On NVIDIA Ampere and newer GPUs, run SphereNet with ` NVIDIA_TF32_OVERRIDE=0 `
208- to keep matrix multiplication in full FP32 precision. This is required to match
209- the reference implementation when predicting large absolute MD17 energies.
210-
211166### Training
212167
213168``` bash
214169# Single-GPU training — MD17 aspirin (energy + force)
215- NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/train.py \
170+ python interatomic_potentials/train.py \
216171 -c interatomic_potentials/configs/spherenet/spherenet_md17_aspirin.yaml
217172```
218173
219174### Validation
220175
221176``` bash
222- NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/train.py \
177+ python interatomic_potentials/train.py \
223178 -c interatomic_potentials/configs/spherenet/spherenet_md17_aspirin.yaml \
224179 Global.do_eval=True Global.do_train=False Global.do_test=False \
225180 Trainer.pretrained_model_path=' your_model.pdparams'
@@ -228,7 +183,7 @@ NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/train.py \
228183### Testing
229184
230185``` bash
231- NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/train.py \
186+ python interatomic_potentials/train.py \
232187 -c interatomic_potentials/configs/spherenet/spherenet_md17_aspirin.yaml \
233188 Global.do_test=True Global.do_train=False Global.do_eval=False \
234189 Trainer.pretrained_model_path=' your_model.pdparams'
@@ -238,12 +193,12 @@ NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/train.py \
238193
239194``` bash
240195# Molecular prediction
241- NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/predict.py \
196+ python interatomic_potentials/predict.py \
242197 --model_name spherenet_md17_aspirin \
243198 --xyz_file_path ./interatomic_potentials/example_data/xyz/md17_aspirin.xyz
244199
245200# Using a local checkpoint
246- NVIDIA_TF32_OVERRIDE=0 python interatomic_potentials/predict.py \
201+ python interatomic_potentials/predict.py \
247202 --config_path ./interatomic_potentials/configs/spherenet/spherenet_md17_aspirin.yaml \
248203 --checkpoint_path ./output/spherenet_aspirin/checkpoints/best.pdparams \
249204 --xyz_file_path ./interatomic_potentials/example_data/xyz/md17_aspirin.xyz
0 commit comments