Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qhnet #21

Merged
merged 61 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
40e35ac
fix for delta db gen
BerAnton Mar 5, 2024
8b68a0b
Merge branch 'painn_pyg' into delta_learning
BerAnton Mar 5, 2024
b1db069
huge datasets rework
BerAnton Mar 12, 2024
28c8b83
make dataset processing more verbose
BerAnton Mar 12, 2024
9c917bb
make dataset download more verbose
BerAnton Mar 12, 2024
5f4de37
fixes
BerAnton Mar 12, 2024
348b6fe
fix imports
BerAnton Mar 12, 2024
9fca72d
qhnet initial commit
BerAnton Mar 12, 2024
a8885e2
move schedulers, introduce new hyperparam for qhnet etc.
BerAnton Mar 13, 2024
910ddab
move scheduler
BerAnton Mar 13, 2024
0bdc4c7
qhnet update
BerAnton Mar 14, 2024
0c572f7
change scheduler+ change scheduler for qhnet
BerAnton Mar 15, 2024
304508f
modified setup.py: precise versions for crucial dependencies
BerAnton Mar 15, 2024
0e4f8ec
add dependencies for PyG
BerAnton Mar 15, 2024
26ef096
remove old links, updated names
BerAnton Mar 15, 2024
47fb67f
datasets links updated
BerAnton Mar 15, 2024
46f1a42
fix setup
BerAnton Mar 15, 2024
d294eb8
fix setup
BerAnton Mar 15, 2024
527c3f0
Merge branch 'qhnet' into misc
BerAnton Mar 16, 2024
58d8965
fix graphormer3d cfg
BerAnton Mar 18, 2024
900a5e7
make model download more verbose
BerAnton Mar 18, 2024
a870b7d
rename equiformer model name
BerAnton Mar 18, 2024
66894d9
remove temp workaround for dataset w/o forces
BerAnton Mar 18, 2024
571de42
updated models checkpoints links
BerAnton Mar 18, 2024
57256b6
qhnet fixes
BerAnton Mar 18, 2024
c757a9d
qhnet fix
BerAnton Mar 18, 2024
3ca2077
qhnet layers fix
BerAnton Mar 18, 2024
b6f5b45
make hamiltonian dataset reading from disk
BerAnton Mar 19, 2024
89be191
Merge pull request #19 from AIRI-Institute/misc
BerAnton Mar 19, 2024
0c7a344
fix dimenet links
BerAnton Mar 19, 2024
0764edb
add graphormer links, rename graphormer model for consistency
BerAnton Mar 19, 2024
8496d7e
remove delta stuff
BerAnton Mar 21, 2024
0d341ce
qhnet cfg changes
BerAnton Mar 21, 2024
9ce57d3
updated hamiltonian links
BerAnton Mar 22, 2024
34c5f20
fix links for ase db
BerAnton Mar 22, 2024
2b43b4a
qhnet fix predict step
BerAnton Mar 22, 2024
109daa7
edit get method to remove warnings
BerAnton Mar 26, 2024
5b3b819
fixed hamiltonian dataset cfg, ema models, qhnet inference hamiltonia…
BerAnton Mar 26, 2024
18a5d5b
fix checkpoint save for qhnet
BerAnton Mar 26, 2024
12fcdf7
fix gemnet/equiformer/escn/qhnet ema during test and predict
BerAnton Mar 27, 2024
a367136
modified setup: up to py3.8, attempt to infer py version during setup
BerAnton Mar 28, 2024
10e97c2
updated manifest to include equiformer and escn jd files
BerAnton Mar 28, 2024
382f017
rework ase task due to ipykernel bug
BerAnton Mar 28, 2024
700d5e6
minor changes to painn
BerAnton Apr 2, 2024
2d32361
fixed bug when no postprocessors are present
BerAnton Apr 15, 2024
aba850c
fixed bug for hamiltonian dataset for DDP
BerAnton Apr 15, 2024
3caa55f
fixed PyG PaiNN implementation
BerAnton Apr 15, 2024
dedc4e5
remove import
BerAnton Apr 15, 2024
928cc86
rework graphormer preds functions
BerAnton Apr 16, 2024
3c80540
updated docstrings, change HamiltonianDatabase interface
BerAnton Apr 23, 2024
ffb3283
revert some changes
BerAnton Apr 23, 2024
4c3f6e9
fixed test hamiltonian datasets download
BerAnton Apr 23, 2024
922842d
change graphormer scheduler instantiation
BerAnton Apr 24, 2024
14cbd60
updated qhnet ckpts links
BerAnton May 2, 2024
97b4cae
fix hamiltonian batch
BerAnton May 2, 2024
995e806
qhnet 100k link
BerAnton May 7, 2024
b63d6aa
fixed qhnet metrics
BerAnton May 7, 2024
cbf5aa7
dataset names updated from 2k/5k/10/100k to tiny/small/medium/large
BerAnton May 13, 2024
7a64b09
painn-oc cfg to default
BerAnton May 13, 2024
3a69aa2
suppres warning during dataset preprocessing
BerAnton May 13, 2024
220d5f9
Merge branch 'main' into qhnet
BerAnton May 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
include nablaDFT/links/*
include nablaDFT/data/*
include nablaDFT/equiformer_v2/Jd.pt
include nablaDFT/escn/Jd.pt
3 changes: 1 addition & 2 deletions config/datamodule/nablaDFT_ase.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Dataset config for ASE nablaDFT
_target_: nablaDFT.dataset.NablaDFT
_target_: nablaDFT.dataset.ASENablaDFT

type_of_nn: ASE
split: ${job_type}
datapath: ./datasets/nablaDFT/train/raw
dataset_name: ${dataset_name}
Expand Down
3 changes: 1 addition & 2 deletions config/datamodule/nablaDFT_ase_test.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Dataset config for ASE nablaDFT
_target_: nablaDFT.dataset.NablaDFT
_target_: nablaDFT.dataset.ASENablaDFT

type_of_nn: ASE
split: ${job_type}
datapath: ./datasets/nablaDFT/test/raw
dataset_name: ${dataset_name}
Expand Down
13 changes: 13 additions & 0 deletions config/datamodule/nablaDFT_hamiltonian.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Dataset config for torch geometric nablaDFT
_target_: nablaDFT.dataset.PyGHamiltonianDataModule

root: ./datasets/nablaDFT/hamiltonian
dataset_name: ${dataset_name}
train_size: 0.9
val_size: 0.1
seed: 23
# Dataloader args
batch_size: 8
num_workers: 4
persistent_workers: True
pin_memory: True
11 changes: 11 additions & 0 deletions config/datamodule/nablaDFT_hamiltonian_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Dataset config for torch geometric nablaDFT
_target_: nablaDFT.dataset.PyGHamiltonianDataModule

root: ./datasets/nablaDFT/hamiltonian
dataset_name: ${dataset_name}
seed: 23
# Dataloader args
batch_size: 2
num_workers: 4
persistent_workers: True
pin_memory: True
10 changes: 6 additions & 4 deletions config/datamodule/nablaDFT_pyg.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Dataset config for torch geometric nablaDFT
_target_: nablaDFT.dataset.NablaDFT
_target_: nablaDFT.dataset.PyGNablaDFTDataModule

type_of_nn: PyG
split: ${job_type}
root: ./datasets/nablaDFT/train
dataset_name: ${dataset_name}
train_size: 0.9
val_size: 0.1
seed: 23
# Dataloader args
batch_size: 32
num_workers: 8
seed: 23
persistent_workers: True
pin_memory: True

9 changes: 5 additions & 4 deletions config/datamodule/nablaDFT_pyg_test.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Dataset config for torch geometric nablaDFT
_target_: nablaDFT.dataset.NablaDFT
_target_: nablaDFT.dataset.PyGNablaDFTDataModule

type_of_nn: PyG
split: ${job_type}
root: ./datasets/nablaDFT/test
dataset_name: ${dataset_name}
# Dataloader args
batch_size: 32
num_workers: 12
num_workers: 12
persistent_workers: True
pin_memory: True
2 changes: 1 addition & 1 deletion config/dimenetplusplus.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: DimeNet++
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
job_type: train
pretrained: False
Expand Down
4 changes: 2 additions & 2 deletions config/equiformer_v2_oc20.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: Equiformer_v2_OC20
dataset_name: dataset_train_2k
name: Equiformer_v2
dataset_name: dataset_train_tiny
max_steps: 1000000
warmup_steps: 0
job_type: train
Expand Down
2 changes: 1 addition & 1 deletion config/escn-oc.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: ESCN-OC
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
warmup_steps: 0
job_type: train
Expand Down
2 changes: 1 addition & 1 deletion config/gemnet-oc.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: GemNet-OC
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
warmup_steps: 0
job_type: train
Expand Down
2 changes: 1 addition & 1 deletion config/gemnet-oc_test.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: GemNet-OC
dataset_name: dataset_test_conformations_2k
dataset_name: dataset_test_conformations_tiny
max_steps: 1000000
warmup_steps: 0
job_type: test
Expand Down
4 changes: 2 additions & 2 deletions config/graphormer3d.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: Graphormer3D-half
dataset_name: dataset_train_2k
name: Graphormer3D-small
dataset_name: dataset_train_tiny
max_steps: 1000000
warmup_steps: 60000
job_type: train
Expand Down
2 changes: 1 addition & 1 deletion config/model/graphormer3d-base.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ optimizer:
lr: 3e-4

lr_scheduler:
_target_: nablaDFT.graphormer.schedulers.get_linear_schedule_with_warmup
_target_: nablaDFT.schedulers.get_linear_schedule_with_warmup
_partial_: true
num_warmup_steps: ${warmup_steps}
num_training_steps: ${max_steps}
Expand Down
2 changes: 1 addition & 1 deletion config/model/graphormer3d-half.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ optimizer:
lr: 3e-4

lr_scheduler:
_target_: nablaDFT.graphormer.schedulers.get_linear_schedule_with_warmup
_target_: nablaDFT.schedulers.get_linear_schedule_with_warmup
_partial_: true
num_warmup_steps: ${warmup_steps}
num_training_steps: ${max_steps}
Expand Down
2 changes: 1 addition & 1 deletion config/model/graphormer3d-large.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ optimizer:
weight_decay: 1e-3

lr_scheduler:
_target_: nablaDFT.graphormer.schedulers.get_linear_schedule_with_warmup
_target_: nablaDFT.schedulers.get_linear_schedule_with_warmup
_partial_: true
num_warmup_steps: ${warmup_steps}
num_training_steps: ${max_steps}
Expand Down
26 changes: 10 additions & 16 deletions config/model/painn-oc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ _target_: nablaDFT.painn_pyg.PaiNNLightning
model_name: "PAINN-OC"
net:
_target_: nablaDFT.painn_pyg.PaiNN
hidden_channels: 512
hidden_channels: 128
num_layers: 6
num_rbf: 128
cutoff: 12.0
max_neighbors: 50
num_rbf: 100
cutoff: 5.0
max_neighbors: 100
rbf:
name: 'gaussian'
envelope:
Expand All @@ -17,22 +17,21 @@ net:
direct_forces: false
use_pbc: false
otf_graph: true
num_elements: 65
num_elements: 100


optimizer:
_target_: torch.optim.AdamW
_partial_: true
amsgrad: true
betas: [0.9, 0.95]
lr: 1e-3
lr: 5e-4
weight_decay: 0

lr_scheduler:
_target_: torch.optim.lr_scheduler.ReduceLROnPlateau
_partial_: true
factor: 0.8
patience: 10
patience: 100
min_lr: 1e-6

losses:
energy:
Expand All @@ -41,12 +40,7 @@ losses:
_target_: nablaDFT.gemnet_oc.loss.L2Loss
loss_coefs:
energy: 1.0
forces: 100.0

ema:
_target_: torch_ema.ExponentialMovingAverage
_partial_: true
decay: 0.9999
forces: 1.0

metric:
_target_: torchmetrics.MultitaskWrapper
Expand All @@ -55,4 +49,4 @@ metric:
energy:
_target_: torchmetrics.MeanAbsoluteError
forces:
_target_: torchmetrics.MeanAbsoluteError
_target_: torchmetrics.MeanAbsoluteError
54 changes: 54 additions & 0 deletions config/model/qhnet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
_target_: nablaDFT.qhnet.QHNetLightning

model_name: "QHNet"
net:
_target_: nablaDFT.qhnet.QHNet
_convert_: partial
sh_lmax: 4
hidden_size: 128
bottle_hidden_size: 32
num_gnn_layers: 5
max_radius: 12
num_nodes: 83
radius_embed_dim: 32
orbitals:
1: [0, 0, 1]
6: [0, 0, 0, 1, 1, 2]
7: [0, 0, 0, 1, 1, 2]
8: [0, 0, 0, 1, 1, 2]
9: [0, 0, 0, 1, 1, 2]
16: [0, 0, 0, 0, 1, 1, 1, 2]
17: [0, 0, 0, 0, 1, 1, 1, 2]
35: [0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2]

optimizer:
_target_: torch.optim.AdamW
_partial_: true
amsgrad: true
betas: [0.9, 0.95]
lr: 5e-4

lr_scheduler:
_target_: torch.optim.lr_scheduler.ReduceLROnPlateau
_partial_: true
factor: 0.8
patience: 10
min_lr: 1e-6

losses:
hamiltonian:
_target_: nablaDFT.qhnet.loss.HamiltonianLoss
loss_coefs:
hamiltonian: 1.0

metric:
_target_: torchmetrics.MultitaskWrapper
_convert_: all
task_metrics:
hamiltonian:
_target_: nablaDFT.qhnet.MaskedMeanAbsoluteError

ema:
_target_: torch_ema.ExponentialMovingAverage
_partial_: true
decay: 0.9999
4 changes: 2 additions & 2 deletions config/painn-oc.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Global variables
name: PaiNN-OC
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
job_type: test
job_type: train
pretrained: False
ckpt_path: null # path to checkpoint for training resume or test run

Expand Down
2 changes: 1 addition & 1 deletion config/painn.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: PaiNN
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
job_type: train
pretrained: False
Expand Down
26 changes: 26 additions & 0 deletions config/qhnet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Global variables
name: QHNet
dataset_name: dataset_train_tiny
max_steps: 1000000
warmup_steps: 0
job_type: train
pretrained: False
ckpt_path: null # path to checkpoint for training resume or test run

# configs
defaults:
- _self_
- datamodule: nablaDFT_hamiltonian.yaml # dataset config
- model: qhnet.yaml # model config
- callbacks: default.yaml # pl callbacks config
- loggers: wandb.yaml # pl loggers config
- trainer: train.yaml # trainer config

# need this to set working dir as current dir
hydra:
output_subdir: null
run:
dir: .
original_work_dir: ${hydra:runtime.cwd}

seed: 23
2 changes: 1 addition & 1 deletion config/schnet.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: SchNet
dataset_name: dataset_train_2k
dataset_name: dataset_train_tiny
max_steps: 1000000
job_type: train
pretrained: False
Expand Down
2 changes: 1 addition & 1 deletion config/schnet_test.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Global variables
name: SchNet
dataset_name: dataset_test_conformations_2k
dataset_name: dataset_test_conformations_tiny
max_steps: 1000000
job_type: test
pretrained: False
Expand Down
3 changes: 2 additions & 1 deletion config/trainer/train.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ accelerator: "gpu"
devices: [0]
strategy:
_target_: pytorch_lightning.strategies.ddp.DDPStrategy

# QHNet has unused params, uncomment line for train
# find_unused_parameters: True
max_steps: ${max_steps}

# example of additional arguments for trainer
Expand Down
2 changes: 2 additions & 0 deletions nablaDFT/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@
from . import escn
from . import ase_model
from . import painn_pyg

from . import schedulers