Improve model card: Add graph-ml tag, Apache-2.0 license, abstract, correct links & usage
Browse filesThis PR significantly enhances the model card for "Shoot from the HIP: Hessian Interatomic Potentials without derivatives" by:
- Adding the `pipeline_tag: graph-ml` for better discoverability.
- Setting the `license: apache-2.0` based on common practice for open-source repositories and colleague consensus.
- Adding the complete paper abstract for comprehensive context.
- Correcting the GitHub repository link to `https://github.com/BurgerAndreas/hip`.
- Incorporating key descriptive information and performance highlights from the GitHub README, including the comparison image.
- Refining the "Use our model" section by correcting `gadff` imports to `hip` in the Python snippet and simplifying the `bash` download command.
- Updating the citation section with the correct BibTeX entries for the paper and the HORM dataset.
Please review and merge if these improvements align with your expectations.
|
@@ -1,7 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# Molecular Hessians Without Derivatives
|
| 2 |
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
## Available checkpoints
|
| 7 |
|
|
@@ -10,23 +33,21 @@ See https://github.com/BurgerAndreas/gad-ff
|
|
| 10 |
- `hesspred_v3`: Potentially better Hessian prediction, less tested. Trained for longer.
|
| 11 |
- `ckpt/eqv2.ckpt`: HORM EquiformerV2 finetuned on the HORM Hessian dataset. Not trained to predict Hessians! Can be used for energies, forces, and autograd Hessian.
|
| 12 |
|
| 13 |
-
|
| 14 |
## Use our model
|
| 15 |
|
| 16 |
-
|
| 17 |
```bash
|
| 18 |
-
#
|
| 19 |
-
|
| 20 |
-
wget https://huggingface.co/andreasburger/heigen/resolve/main/ckpt/hesspred_v1.ckpt?download=true -O hesspred_v1.ckpt
|
| 21 |
```
|
| 22 |
|
| 23 |
```python
|
| 24 |
import os
|
| 25 |
import torch
|
| 26 |
-
from
|
| 27 |
-
from
|
| 28 |
-
from
|
| 29 |
-
from
|
| 30 |
|
| 31 |
|
| 32 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
@@ -46,12 +67,14 @@ dataloader = get_dataloader(
|
|
| 46 |
)
|
| 47 |
batch = next(iter(dataloader))
|
| 48 |
results = calculator.predict(batch)
|
| 49 |
-
print("
|
|
|
|
| 50 |
print(f" Energy: {results['energy'].shape}")
|
| 51 |
print(f" Forces: {results['forces'].shape}")
|
| 52 |
print(f" Hessian: {results['hessian'].shape}")
|
| 53 |
|
| 54 |
-
print("
|
|
|
|
| 55 |
gad = calculator.get_gad(batch)
|
| 56 |
print(f" GAD: {gad['gad'].shape}")
|
| 57 |
|
|
@@ -61,12 +84,14 @@ elements = torch.tensor([1, 6, 7, 8]) # H, C, N, O
|
|
| 61 |
pos = torch.randn(n_atoms, 3) # (N, 3)
|
| 62 |
atomic_nums = elements[torch.randint(0, 4, (n_atoms,))] # (N,)
|
| 63 |
results = calculator.predict(coords=pos, atomic_nums=atomic_nums)
|
| 64 |
-
print("
|
|
|
|
| 65 |
print(f" Energy: {results['energy'].shape}")
|
| 66 |
print(f" Forces: {results['forces'].shape}")
|
| 67 |
print(f" Hessian: {results['hessian'].shape}")
|
| 68 |
|
| 69 |
-
print("
|
|
|
|
| 70 |
hessian = results["hessian"]
|
| 71 |
frequency_analysis = analyze_frequencies_torch(hessian, pos, atomic_nums)
|
| 72 |
print(f"eigvals: {frequency_analysis['eigvals'].shape}")
|
|
@@ -75,9 +100,29 @@ print(f"neg_num: {frequency_analysis['neg_num']}")
|
|
| 75 |
print(f"natoms: {frequency_analysis['natoms']}")
|
| 76 |
```
|
| 77 |
|
| 78 |
-
|
| 79 |
## Citation
|
| 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
```bibtex
|
| 82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
```
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
pipeline_tag: graph-ml
|
| 4 |
+
---
|
| 5 |
+
|
| 6 |
# Molecular Hessians Without Derivatives
|
| 7 |
|
| 8 |
+
This repository contains the model presented in the paper [Shoot from the HIP: Hessian Interatomic Potentials without derivatives](https://huggingface.co/papers/2509.21624).
|
| 9 |
+
|
| 10 |
+
**Abstract:**
|
| 11 |
+
Fundamental tasks in computational chemistry, from transition state search to vibrational analysis, rely on molecular Hessians, which are the second derivatives of the potential energy. Yet, Hessians are computationally expensive to calculate and scale poorly with system size, with both quantum mechanical methods and neural networks. In this work, we demonstrate that Hessians can be predicted directly from a deep learning model, without relying on automatic differentiation or finite differences. We observe that one can construct SE(3)-equivariant, symmetric Hessians from irreducible representations (irrep) features up to degree $l$=2 computed during message passing in graph neural networks. This makes HIP Hessians one to two orders of magnitude faster, more accurate, more memory efficient, easier to train, and enables more favorable scaling with system size. We validate our predictions across a wide range of downstream tasks, demonstrating consistently superior performance for transition state search, accelerated geometry optimization, zero-point energy corrections, and vibrational analysis benchmarks. We open-source the HIP codebase and model weights to enable further development of the direct prediction of Hessians at this https URL
|
| 12 |
+
|
| 13 |
+
The official codebase is open-sourced and available at: [https://github.com/BurgerAndreas/hip](https://github.com/BurgerAndreas/hip)
|
| 14 |
+
|
| 15 |
+
This work introduces Hessian Interatomic Potentials (HIP), a novel deep learning approach to directly predict molecular Hessians (second derivatives of potential energy) without relying on automatic differentiation or finite differences. This approach addresses the computational expense and poor scaling of traditional Hessian calculation methods.
|
| 16 |
+
Trained on the [HORM Hessian dataset](https://github.com/deepprinciple/HORM), which consists of off-equilibrium geometries of small, neutral organic molecules, contained H, C, N, O, based on the T1x and RGD1 datasets, at the $\omega$B97X/6-31G(d) level of theory.
|
| 17 |
+
|
| 18 |
+
Compared to autograd Hessians:
|
| 19 |
+
- 10-70x faster for a single molecule of 5-30 atoms
|
| 20 |
+
- 70x faster for a typical T1x batch in batched prediction
|
| 21 |
+
- 3x memory reduction
|
| 22 |
+
- Better accuracy (Hessian, Hessian eigenvalues and eigenvectors)
|
| 23 |
+
- Better downstream accuracy (relaxation, transition state search, frequency analysis)
|
| 24 |
|
| 25 |
+
<div align="center">
|
| 26 |
+
<img src="https://github.com/BurgerAndreas/hip/raw/main/static/combined_speed_memory_batchsize.png" alt="Speed and memory comparison" width="100%">
|
| 27 |
+
</div>
|
| 28 |
|
| 29 |
## Available checkpoints
|
| 30 |
|
|
|
|
| 33 |
- `hesspred_v3`: Potentially better Hessian prediction, less tested. Trained for longer.
|
| 34 |
- `ckpt/eqv2.ckpt`: HORM EquiformerV2 finetuned on the HORM Hessian dataset. Not trained to predict Hessians! Can be used for energies, forces, and autograd Hessian.
|
| 35 |
|
|
|
|
| 36 |
## Use our model
|
| 37 |
|
| 38 |
+
Download the checkpoint from Hugging Face:
|
| 39 |
```bash
|
| 40 |
+
# assuming you are in the cloned hip directory
|
| 41 |
+
wget https://huggingface.co/andreasburger/heigen/resolve/main/ckpt/hesspred_v1.ckpt -O ckpt/hesspred_v1.ckpt
|
|
|
|
| 42 |
```
|
| 43 |
|
| 44 |
```python
|
| 45 |
import os
|
| 46 |
import torch
|
| 47 |
+
from hip.equiformer_torch_calculator import EquiformerTorchCalculator
|
| 48 |
+
from hip.equiformer_ase_calculator import EquiformerASECalculator # also try this
|
| 49 |
+
from hip.inference_utils import get_dataloader
|
| 50 |
+
from hip.frequency_analysis import analyze_frequencies_torch
|
| 51 |
|
| 52 |
|
| 53 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
|
|
| 67 |
)
|
| 68 |
batch = next(iter(dataloader))
|
| 69 |
results = calculator.predict(batch)
|
| 70 |
+
print("
|
| 71 |
+
Example 1:")
|
| 72 |
print(f" Energy: {results['energy'].shape}")
|
| 73 |
print(f" Forces: {results['forces'].shape}")
|
| 74 |
print(f" Hessian: {results['hessian'].shape}")
|
| 75 |
|
| 76 |
+
print("
|
| 77 |
+
GAD:")
|
| 78 |
gad = calculator.get_gad(batch)
|
| 79 |
print(f" GAD: {gad['gad'].shape}")
|
| 80 |
|
|
|
|
| 84 |
pos = torch.randn(n_atoms, 3) # (N, 3)
|
| 85 |
atomic_nums = elements[torch.randint(0, 4, (n_atoms,))] # (N,)
|
| 86 |
results = calculator.predict(coords=pos, atomic_nums=atomic_nums)
|
| 87 |
+
print("
|
| 88 |
+
Example 2:")
|
| 89 |
print(f" Energy: {results['energy'].shape}")
|
| 90 |
print(f" Forces: {results['forces'].shape}")
|
| 91 |
print(f" Hessian: {results['hessian'].shape}")
|
| 92 |
|
| 93 |
+
print("
|
| 94 |
+
Frequency analysis:")
|
| 95 |
hessian = results["hessian"]
|
| 96 |
frequency_analysis = analyze_frequencies_torch(hessian, pos, atomic_nums)
|
| 97 |
print(f"eigvals: {frequency_analysis['eigvals'].shape}")
|
|
|
|
| 100 |
print(f"natoms: {frequency_analysis['natoms']}")
|
| 101 |
```
|
| 102 |
|
|
|
|
| 103 |
## Citation
|
| 104 |
|
| 105 |
+
If you found this code useful, please consider citing:
|
| 106 |
+
```bibtex
|
| 107 |
+
@inproceedings{
|
| 108 |
+
burger2025hessians,
|
| 109 |
+
title={Molecular Hessians Without Derivatives},
|
| 110 |
+
author={Andreas Burger and Luca Thiede and Nikolaj Rønne and Nandita Vijaykumar and Tejs Vegge and Arghya Bhowmik and Alan Aspuru-Guzik},
|
| 111 |
+
booktitle={The Fourteenth International Conference on Learning Representations},
|
| 112 |
+
year={2026},
|
| 113 |
+
url={https://openreview.net/forum?id=CNLC4ZkLmW}
|
| 114 |
+
}
|
| 115 |
+
```
|
| 116 |
+
The training code and the dataset are based on the HORM [paper](https://arxiv.org/abs/2505.12447), [dataset](https://www.kaggle.com/datasets/yunhonghan/hessian-dataset-for-optimizing-reactive-mliphorm/data), and [code](https://github.com/deepprinciple/HORM).
|
| 117 |
+
We thank the authors from DeepPrinciple for making their code and data openly available.
|
| 118 |
```bibtex
|
| 119 |
+
@misc{cui2025hormlargescalemolecular,
|
| 120 |
+
title={HORM: A Large Scale Molecular Hessian Database for Optimizing Reactive Machine Learning Interatomic Potentials},
|
| 121 |
+
author={Taoyong Cui and Yunhong Han and Haojun Jia and Chenru Duan and Qiyuan Zhao},
|
| 122 |
+
year={2025},
|
| 123 |
+
eprint={2505.12447},
|
| 124 |
+
archivePrefix={arXiv},
|
| 125 |
+
primaryClass={physics.chem-ph},
|
| 126 |
+
url={https://arxiv.org/abs/2505.12447},
|
| 127 |
+
}
|
| 128 |
```
|