nielsr HF Staff commited on
Commit
588f963
·
verified ·
1 Parent(s): 8f6bf0a

Improve model card: Add graph-ml tag, Apache-2.0 license, abstract, correct links & usage

Browse files

This 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.

Files changed (1) hide show
  1. README.md +61 -16
README.md CHANGED
@@ -1,7 +1,30 @@
 
 
 
 
 
1
  # Molecular Hessians Without Derivatives
2
 
3
- See https://github.com/BurgerAndreas/gad-ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- Use our model, that
17
  ```bash
18
- # download checkpoints from HuggingFace
19
- cd gadff/ckpt/
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 gadff.equiformer_torch_calculator import EquiformerTorchCalculator
27
- from gadff.equiformer_ase_calculator import EquiformerASECalculator # also try this
28
- from gadff.inference_utils import get_dataloader
29
- from gadff.frequency_analysis import analyze_frequencies_torch
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("\nExample 1:")
 
50
  print(f" Energy: {results['energy'].shape}")
51
  print(f" Forces: {results['forces'].shape}")
52
  print(f" Hessian: {results['hessian'].shape}")
53
 
54
- print("\nGAD:")
 
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("\nExample 2:")
 
65
  print(f" Energy: {results['energy'].shape}")
66
  print(f" Forces: {results['forces'].shape}")
67
  print(f" Hessian: {results['hessian'].shape}")
68
 
69
- print("\nFrequency analysis:")
 
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
- TODO
 
 
 
 
 
 
 
 
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
  ```