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

Adapt Makers to use pydantic models instead of yamls #307

Merged
merged 85 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
acb670d
load yamls using postin > no need to copy to remote server
naik-aakash Dec 22, 2024
3b9dbde
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 4, 2025
113ab43
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 6, 2025
05416e4
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 7, 2025
354fbd6
add CONFIG as const to maker
naik-aakash Jan 7, 2025
0a90c9f
add simple tests for RSSMaker __post_init__
naik-aakash Jan 8, 2025
fa842fe
update doc
naik-aakash Jan 8, 2025
777fa8c
add strict Path checks
naik-aakash Jan 9, 2025
3ddfb14
make limitations of config file clear and update code snippets
naik-aakash Jan 9, 2025
52a8fdb
remove print
naik-aakash Jan 9, 2025
0205e7d
add initial pydantic config for RSS
naik-aakash Jan 9, 2025
5bd40bb
update test
naik-aakash Jan 9, 2025
2982dba
update test config file
naik-aakash Jan 9, 2025
4ee2e2c
restore rss_default config to initial
naik-aakash Jan 9, 2025
3e77720
remove config_file arg and use pydantic model instead
naik-aakash Jan 9, 2025
50f5854
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 9, 2025
58e6b2a
add MLIP hypers models
naik-aakash Jan 9, 2025
b918db8
add MODULE_DIR
naik-aakash Jan 9, 2025
83b54b8
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 9, 2025
b0913e1
make RssConfig and MLIPHYPERs at root level
naik-aakash Jan 10, 2025
30e7cf6
remove load_hypers function and use models instead
naik-aakash Jan 10, 2025
8cab4fb
adapt machine_learning_fit (GAP, J-ACE)
naik-aakash Jan 10, 2025
b94ba98
update utils tests for gap constructor
naik-aakash Jan 10, 2025
c8f2f8e
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 10, 2025
2d79c34
fix imports error
naik-aakash Jan 10, 2025
f87161f
use deep copy
naik-aakash Jan 10, 2025
4faeebd
temp disable ValueError raise behaviour
naik-aakash Jan 10, 2025
3b3ee47
fix rssmaker issue
naik-aakash Jan 10, 2025
6013e40
add from_file method and rename update_fields>update_parameters
naik-aakash Jan 12, 2025
1bc2be7
extend use of MLIP hypers model to M3GNET, MACE, NEQUIP
naik-aakash Jan 12, 2025
5a15564
method rename not applied > fix failing test
naik-aakash Jan 12, 2025
a713593
method rename not applied > fix failing test
naik-aakash Jan 12, 2025
6e7886d
add MACE kwargs
naik-aakash Jan 15, 2025
0b253f7
update MACE finetuning tests
naik-aakash Jan 15, 2025
355ff75
move database_dir back to make
naik-aakash Jan 15, 2025
cb2eaf3
adapt tests
naik-aakash Jan 15, 2025
7e8c65e
remove use_defaults arg
naik-aakash Jan 15, 2025
37752a3
update NEQUIP hypers
naik-aakash Jan 17, 2025
72758de
update NEQUIP hypers
naik-aakash Jan 17, 2025
618eb56
add hyperparameter arg
naik-aakash Jan 17, 2025
37e83b5
minor change in tests
naik-aakash Jan 17, 2025
834d553
extend m3gnet hypers and make finetuning m3gnet possible
naik-aakash Jan 17, 2025
13dfbe8
cleanup json/yaml load remanants
naik-aakash Jan 17, 2025
e071cef
remove unused imports
naik-aakash Jan 17, 2025
09b2f6d
update docs
naik-aakash Jan 17, 2025
07e686b
add note to AIRSS install instructions
naik-aakash Jan 17, 2025
0eabca3
add example script to root
naik-aakash Jan 17, 2025
aa3e10c
delete unused yaml and jsons from src
naik-aakash Jan 17, 2025
ab71920
disable package data section
naik-aakash Jan 17, 2025
902b982
update doc-strings
naik-aakash Jan 19, 2025
a38b461
update rss config models
naik-aakash Jan 19, 2025
6f311e2
use config yaml from tutorial
naik-aakash Jan 19, 2025
bc8a05e
add __all__
naik-aakash Jan 19, 2025
d2f2222
add pending M3GNET parameters
naik-aakash Jan 20, 2025
ffb5ee8
fix kwargs in tests of m3gnet
naik-aakash Jan 20, 2025
8545d4d
correct kwargs in m3gnet
naik-aakash Jan 20, 2025
99b13d7
remove typechecking
naik-aakash Jan 20, 2025
c38104c
add missing kwarg
naik-aakash Jan 21, 2025
75db906
add missing m3gnet finetuning tests
naik-aakash Jan 21, 2025
68798cf
small fix for kwargs updates and rename field name
naik-aakash Jan 21, 2025
55490a6
adapt test for config read
naik-aakash Jan 21, 2025
5f6e3e3
update doc of rss maker
naik-aakash Jan 21, 2025
224630e
fix none type return issue
naik-aakash Jan 21, 2025
5a069b5
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Jan 21, 2025
0ab9fa4
update RssConfig model , add backward compatiblity
naik-aakash Jan 30, 2025
3bcd392
adapt config processing to new format
naik-aakash Jan 30, 2025
bb83042
adapt rss tutorials to new changes
naik-aakash Jan 30, 2025
09cffbf
update example config files
naik-aakash Jan 30, 2025
a64bb35
minor change in nequip phonon tests
naik-aakash Jan 30, 2025
7a60c5d
update buildcell install instructions
naik-aakash Jan 30, 2025
63450bf
fix logic of backward compatiblity with rss config yaml
naik-aakash Jan 30, 2025
a9dcd30
remove redundant variable creation
naik-aakash Jan 30, 2025
0b18cfd
add as_dict and from_dict method to pydantic models, address review c…
naik-aakash Jan 31, 2025
484d585
add as_dict and from_dict method to pydantic models, address review c…
naik-aakash Jan 31, 2025
36d5888
pre-commit auto-fixes
pre-commit-ci[bot] Jan 31, 2025
112b1e0
update example config to show all options
naik-aakash Jan 31, 2025
a368920
add set option to buildcell_options>SYSTEM
naik-aakash Jan 31, 2025
29fd84b
fix mlip_path errors
naik-aakash Jan 31, 2025
71cb7b4
fix doc-strings
naik-aakash Jan 31, 2025
5c31936
minor change to m3gnet finetuning arg name
naik-aakash Jan 31, 2025
cc538b7
adapt m3gnet finetuning test arg
naik-aakash Jan 31, 2025
45996cf
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Feb 3, 2025
29a9abf
Merge branch 'autoatml:main' into fix_custom_yaml_loading
naik-aakash Feb 4, 2025
3813b84
add label to automated prs
naik-aakash Feb 5, 2025
30b9404
add note for workflow managers
naik-aakash Feb 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ jobs:
title: Update test durations file
body: Auto update test durations file
branch: update-test-durations
labels: |
automated-pr
delete-branch: true
base: main

Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,12 @@ julia -e 'using Pkg; Pkg.Registry.add("General"); Pkg.Registry.add(Pkg.Registry.

Additionally, `buildcell` as a part of `AIRSS` needs to be installed if one wants to use the RSS functionality:

> ℹ️ To be able to build the AIRSS utilities one needs gcc and gfortran version 5 and above. Other compiler families (such as ifort) are not supported.
> These compilers are usually available on HPCs and one can simply load them if needed. On Ubuntu/Debian systems, one can install the necessary compilers with the following command:
````bash
apt install -y build-essential gfortran
````

```bash
curl -O https://www.mtg.msm.cam.ac.uk/files/airss-0.9.3.tgz; tar -xf airss-0.9.3.tgz; rm airss-0.9.3.tgz; cd airss; make ; make install ; make neat; cd ..
```
Expand Down
11 changes: 11 additions & 0 deletions configs/create_configs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""Example script to create hyperparameters and rss config objects using json/yaml files."""

from autoplex.settings import MLIPHypers, RssConfig

# create a custom hyperparameters object using json file
custom_hyperparameters = MLIPHypers.from_file("mlip_hypers.json")

# create a custom rss config object using json file
custom_rss_config = RssConfig.from_file(
"rss_config.yaml"
) # rss_config_all.yaml contains list of all hypers and supported MLIPs
306 changes: 306 additions & 0 deletions configs/mlip_hypers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
{
"GAP": {
"general": {
"at_file": "train.extxyz",
"default_sigma": "{0.0001 0.05 0.05 0}",
"energy_parameter_name": "REF_energy",
"force_parameter_name": "REF_forces",
"virial_parameter_name": "REF_virial",
"sparse_jitter": 1e-08,
"do_copy_at_file": "F",
"openmp_chunk_size": 10000,
"gp_file": "gap_file.xml",
"e0_offset": 0.0,
"two_body": false,
"three_body": false,
"soap": true
},
"twob": {
"distance_Nb order": 2,
"f0": 0.0,
"add_species": "T",
"cutoff": 5.0,
"n_sparse": 15,
"covariance_type": "ard_se",
"delta": 2.0,
"theta_uniform": 0.5,
"sparse_method": "uniform",
"compact_clusters": "T"
},
"threeb": {
"distance_Nb order": 3,
"f0": 0.0,
"add_species": "T",
"cutoff": 3.25,
"n_sparse": 100,
"covariance_type": "ard_se",
"delta": 2.0,
"theta_uniform": 1.0,
"sparse_method": "uniform",
"compact_clusters": "T"
},
"soap": {
"add_species": "T",
"l_max": 10,
"n_max": 12,
"atom_sigma": 0.5,
"zeta": 4,
"cutoff": 5.0,
"cutoff_transition_width": 1.0,
"central_weight": 1.0,
"n_sparse": 6000,
"delta": 1.0,
"f0": 0.0,
"covariance_type": "dot_product",
"sparse_method": "cur_points"
}
},
"J-ACE": {
"order": 3,
"totaldegree": 6,
"cutoff": 2.0,
"solver": "BLR"
},
"NEQUIP": {
"root": "results",
"run_name": "autoplex",
"seed": 123,
"dataset_seed": 123,
"append": false,
"default_dtype": "float64",
"model_dtype": "float64",
"allow_tf32": true,
"r_max": 4.0,
"num_layers": 4,
"l_max": 2,
"parity": true,
"num_features": 32,
"nonlinearity_type": "gate",
"nonlinearity_scalars": {
"e": "silu",
"o": "tanh"
},
"nonlinearity_gates": {
"e": "silu",
"o": "tanh"
},
"num_basis": 8,
"BesselBasis_trainable": true,
"PolynomialCutoff_p": 5,
"invariant_layers": 2,
"invariant_neurons": 64,
"avg_num_neighbors": "auto",
"use_sc": true,
"dataset": "ase",
"validation_dataset": "ase",
"dataset_file_name": "./train_nequip.extxyz",
"validation_dataset_file_name": "./test.extxyz",
"ase_args": {
"format": "extxyz"
},
"dataset_key_mapping": {
"forces": "forces",
"energy": "total_energy"
},
"validation_dataset_key_mapping": {
"forces": "forces",
"energy": "total_energy"
},
"chemical_symbols": [],
"wandb": false,
"verbose": "info",
"log_batch_freq": 10,
"log_epoch_freq": 1,
"save_checkpoint_freq": -1,
"save_ema_checkpoint_freq": -1,
"n_train": 1000,
"n_val": 1000,
"learning_rate": 0.005,
"batch_size": 5,
"validation_batch_size": 10,
"max_epochs": 10000,
"shuffle": true,
"metrics_key": "validation_loss",
"use_ema": true,
"ema_decay": 0.99,
"ema_use_num_updates": true,
"report_init_validation": true,
"early_stopping_patiences": {
"validation_loss": 50
},
"early_stopping_lower_bounds": {
"LR": 1e-05
},
"loss_coeffs": {
"forces": 1,
"total_energy": [
1,
"PerAtomMSELoss"
]
},
"metrics_components": [
[
"forces",
"mae"
],
[
"forces",
"rmse"
],
[
"forces",
"mae",
{
"PerSpecies": true,
"report_per_component": false
}
],
[
"forces",
"rmse",
{
"PerSpecies": true,
"report_per_component": false
}
],
[
"total_energy",
"mae"
],
[
"total_energy",
"mae",
{
"PerAtom": true
}
]
],
"optimizer_name": "Adam",
"optimizer_amsgrad": true,
"lr_scheduler_name": "ReduceLROnPlateau",
"lr_scheduler_patience": 100,
"lr_scheduler_factor": 0.5,
"per_species_rescale_shifts_trainable": false,
"per_species_rescale_scales_trainable": false,
"per_species_rescale_shifts": "dataset_per_atom_total_energy_mean",
"per_species_rescale_scales": "dataset_per_species_forces_rms"
},
"M3GNET": {
"exp_name": "training",
"results_dir": "m3gnet_results",
"pretrained_model": null,
"allow_missing_labels": false,
"cutoff": 5.0,
"threebody_cutoff": 4.0,
"batch_size": 10,
"max_epochs": 1000,
"include_stresses": true,
"data_mean": 0.0,
"data_std": 1.0,
"decay_steps": 1000,
"decay_alpha": 0.96,
"dim_node_embedding": 128,
"dim_edge_embedding": 128,
"dim_state_embedding": 0,
"energy_weight": 1.0,
"element_refs": null,
"force_weight": 1.0,
"include_line_graph": true,
"loss": "mse_loss",
"loss_params": null,
"lr": 0.001,
"magmom_target": "absolute",
"magmom_weight": 0.0,
"max_l": 4,
"max_n": 4,
"nblocks": 3,
"optimizer": null,
"rbf_type": "Gaussian",
"scheduler": null,
"stress_weight": 0.0,
"sync_dist": false,
"is_intensive": false,
"units": 128
},
"MACE": {
"model": "MACE",
"name": "MACE_model",
"amsgrad": true,
"batch_size": 10,
"compute_avg_num_neighbors": true,
"compute_forces": true,
"config_type_weights": "{'Default':1.0}",
"compute_stress": false,
"compute_statistics": false,
"correlation": 3,
"default_dtype": "float32",
"device": "cpu",
"distributed": false,
"energy_weight": 1.0,
"ema": true,
"ema_decay": 0.99,
"E0s": null,
"forces_weight": 100.0,
"foundation_filter_elements": true,
"foundation_model": null,
"foundation_model_readout": true,
"keep_checkpoint": false,
"keep_isolated_atoms": false,
"hidden_irreps": "128x0e + 128x1o",
"loss": "huber",
"lr": 0.001,
"multiheads_finetuning": false,
"max_num_epochs": 1500,
"pair_repulsion": false,
"patience": 2048,
"r_max": 5.0,
"restart_latest": false,
"seed": 123,
"save_cpu": true,
"save_all_checkpoints": false,
"scaling": "rms_forces_scaling",
"stress_weight": 1.0,
"start_stage_two": 1200,
"stage_two": true,
"valid_batch_size": 10,
"virials_weight": 1.0,
"wandb": false
},
"NEP": {
"version": 4,
"type": [
1,
"X"
],
"type_weight": 1.0,
"model_type": 0,
"prediction": 0,
"cutoff": [
6,
5
],
"n_max": [
4,
4
],
"basis_size": [
8,
8
],
"l_max": [
4,
2,
1
],
"neuron": 80,
"lambda_1": 0.0,
"lambda_e": 1.0,
"lambda_f": 1.0,
"lambda_v": 0.1,
"force_delta": 0,
"batch": 1000,
"population": 60,
"generation": 100000,
"zbl": 2
}
}
Loading