Recent Releases of nequip
nequip - v0.14.0
[0.14.0]
Added
- CuEquivariance acceleration for NequIP GNN models
- ScheduleFreeLightningModule: New LightningModule subclass that integrates Facebook's Schedule-Free optimizer to enable schedule-free training in NequIP by @vu-blaze-12
TestTimeXYZFileWriternow acceptsextra_fieldsargument- Add
WaterDataModuleandCOLLDataModule
Changed
- NequIP GNN models now exploit ghost node truncation in LAMMPS ML-IAP (optimization)
- Better ML-IAP error handling
- [Breaking] Disallow list input for per-type energy scales and shifts (only scalars or dicts allowed)
- [Breaking] Ignore
global_optionsin config file;TF32Scheduleris the only way to configure TF32 settings during training
Fixed
nequip-compile --mode aotinductorfailure with PyTorch 2.8 (because of constant-folding -- so AOTI constant-folding is always off now)
- Python
Published by cw-tan 9 months ago
nequip - v0.13.0: LAMMPS ML-IAP Interface
[0.13.0]: LAMMPS ML-IAP Interface
Before, the only LAMMPS plugin for NequIP GNN models or Allegro models was the pairnequipallegro repository, which hosts the pair_nequip and pair_allegro LAMMPS pair styles. While pair_allegro offers multirank scalability of molecular dynamics simulations, with the possibility of using accelerations such as our custom Triton tensor product kernel, pair_nequip only offers single-rank inference and no acceleration options.
This release introduces the LAMMPS ML-IAP integration for NequIP framework models, including NequIP GNN and Allegro models (including torch.compile support by default). A summary of differences between pair_nequip_allegro and our LAMMPS ML-IAP interface is provided here. Notable features include the
- possibility of multirank LAMMPS simulations with the message-passing NequIP GNN model through the LAMMPS ML-IAP interface
- usage of inference acceleration options not presently supported by
pair_nequip_allegro, such as theenable_OpenEquivariancemodifier for NequIP GNN models and theenable_CuEquivarianceContractermodifier for Allegro models
Note that the enable_TritonContracter modifier for Allegro models is available for both pair_nequip_allegro and this LAMMPS ML-IAP interface.
Using LAMMPS ML-IAP
You are directed to our user guide to learn how to use the NequIP framework's LAMMPS ML-IAP integration. At a glance, after building LAMMPS with ML-IAP support and installing it in your Python environment, one can prepare a LAMMPS ML-IAP model as follows.
bash
nequip-prepare-lmp-mliap \
$PWD/ckpt_file_or_package_file \
$PWD/output.nequip.lmp.pt \
--modifiers modifier_to_apply
Note how acceleration modifiers (such as enable_OpenEquivariance modifier for NequIP GNN models and the enable_CuEquivarianceContracter modifier for Allegro models) are configured during model preparation with nequip-prepare-lmp-mliap.
Then, use the prepared model artefact in your LAMMPS input files
bash
pair_style mliap unified output.nequip.lmp.pt 0
pair_coeff * * H O
Added
- LAMMPS ML-IAP integration
LinearLossCoefficientSchedulercallbackTF32Schedulercallback by @tullebulle
Changed
EMTTestDatasetnow uses orthorhombic cells
- Python
Published by cw-tan 10 months ago
nequip - v0.12.1
[0.12.1]
Added
MaximumAbsoluteErrormetric
Changed
- Update
SoftAdaptcallback to weight loss coefficient updates by the chosen (initial) loss coefficients.
Fixed
PerTypeScaleShiftmodel modifier shape bugWandbWatchcallback typo in docstring- Broken links to get
fcu.xyzexample dataset for tutorials/examples nequip-packagewill now always pick up OEQ file even if OEQ is not installed at package time
- Python
Published by cw-tan 11 months ago
nequip - v0.11.1
[0.11.1]
Fixed
- Fixed per-edge-type cutoff metadata parsing when loading compiled models
Changed
- Change to make train-time compile work with PyTorch 2.8.0 -- train-time compile won't work with PyTorch 2.8.0 and NequIP versions before v0.11.1
- Python
Published by cw-tan 11 months ago
nequip - v0.11.0
[0.11.0]
We now provide dedicated energy-only model and training support.
CHANGELOG
Added
- Energy-only training support:
NequIPGNNEnergyModel,EnergyOnlyDataStatisticsManager,EnergyOnlyLoss, andEnergyOnlyMetricsfor datasets without force labels - Per-edge-type cutoff handling in ASE Calculator
Removed
- [Future] Python 3.9 support will be removed in the coming releases. For now, users will be warned to upgrade if using NequIP with Python 3.9.
Changed
- [Breaking] Hide
NequIPCalculator.from_checkpoint_modelandNequIPCalculator.from_packaged_modelmethods by making them private; users should only ever useNequIPCalculator.from_compiled_model
- Python
Published by cw-tan 12 months ago
nequip - v0.10.0: OpenEquivariance Support
[0.10.0]
We are proud to announce the integration of OpenEquivariance, presented in “An Efficient Sparse Kernel Generator for O(3)-Equivariant Deep Networks” to the NequIP framework for accelerating NequIP GNN models, thanks to @vbharadwaj-bk and @asglover.
Information on how to use it can be found in the OpenEquivariance guide page.
At a glance, OpenEquivariance can be used for accelerating training by using nequip.model.modify in the config file:
```yaml
trainingmodule:
_target: nequip.train.EMALightningModule
# ... other training module configurations ...
model: target: nequip.model.modify modifiers: - modifier: enableOpenEquivariance model: _target: nequip.model.NequIPGNNModel seed: 123 modeldtype: float32 typenames: [C, H, O, Cu] rmax: 5.0 numlayers: 4 lmax: 2 numfeatures: 32 # ... your standard model configuration ... ```
OpenEquivariance can be used to accelerate TorchScript inference in ASE by doing nequip-compile with --modifiers enable_OpenEquivariance:
yaml
nequip-compile /path/to/model.ckpt /path/to/compiled_model.nequip.pth \
--mode torchscript \
--device cuda \
--target ase \
--modifiers enable_OpenEquivariance
Changed
- Restructured user guide docs
Added
- OpenEquivariance acceleration for NequIP GNN models
SortedNeighborListTransformfor sorted neighborlists with permutation indices to get a sorted transpose- Per-edge-type cutoff-aware neighborlist transform
- Python
Published by cw-tan 12 months ago
nequip - v0.8.0
[0.8.0]
Added
- MD22 datamodule
PerTypeScaleShiftmodel modifier to enable changing the per-type atomic energy scales and shifts of a pretrained model for fine-tuning
Changed
- [Breaking] packaged model file metadata format: NOTE that packaged models before this version will no longer be compatible, and models must be repackaged from checkpoints
- [Breaking]
nequip-packageAPI: users must now specifynequip-package buildto construct packaged model files ornequip-package infoto inspect the metadata of packaged model files per_type_energy_scalesandper_type_energy_shiftsare expected to be in dict format; warnings will be thrown if they are provided as lists, and this will become errors in later major releases- [Breaking]
InteractionBlockof NequIP model refactored such that checkpoint files from previous versions will not work with this version
Removed
- [Breaking] train-time TorchScript
- Python
Published by cw-tan about 1 year ago
nequip - v0.7.1
[0.7.1]
Fixed
- Update outdated descriptions for
parity_plot.py
Added
- Increase docs coverage
StressSignFlipTransformas a data transform to flip the sign of datasets that come with the opposite stress sign convention as used in the NequIP frameworkint_divandint_mulresolvers for integer arithmetic in config files, e.g.half_width: ${int_div:${width},2}
Changed
- Renamed
examples->miscdirectory
- Python
Published by cw-tan about 1 year ago
nequip - v0.7.0 - major update
A major update to the NequIP framework discussed in this preprint.
The docs contain information on the new user interface.
Please note that this update is not backwards compatible.
- Python
Published by Linux-cpp-lisp about 1 year ago
nequip - 0.6.1
[0.6.1] - 2024-7-9
Added
- add support for equivariance testing of arbitrary Cartesian tensor outputs
- [Breaking] use entry points for
nequip.extensions (e.g. for field registration) - alternate neighborlist support enabled with
NEQUIP_NLenvironment variable, which can be set toase(default),matscipyorvesin - Allow
n_trainandn_valto be specified as percentages of datasets. - Only attempt training restart if
trainer.pthfile present (prevents unnecessary crashes due to file-not-found errors in some cases)
Changed
- [Breaking]
NEQUIP_MATSCIPY_NLenvironment variable no longer supported
Fixed
- Fixed
flake8install location inpre-commit-config.yaml
- Python
Published by cw-tan almost 2 years ago
nequip - 0.6.0
Please note that this release includes a number of breaking changes from 0.5.6. It also corresponds to the develop branch discussed in a number of recent Issues and Discussions.
[0.6.0] - 2024-5-10
Added
- add Tensorboard as logger option
- [Breaking] Refactor overall model logic into
GraphModeltop-level module - [Breaking] Added
model_dtype BATCH_PTR_KEYinAtomicDataDictAtomicInMemoryDataset.rdf()andexamples/rdf.pytype_to_chemical_symbol- Pair potential terms
nequip-evaluate --output-fields-from-original-dataset- Error (or warn) on unused options in YAML that likely indicate typos
dataset_*_absmaxstatistics optionHDF5Dataset(#227)include_file_as_baseline_configfor simple modifications of existing configsnequip-deploy --using-datasetto support data-dependent deployment steps- Support for Gaussian Mixture Model uncertainty quantification (https://doi.org/10.1063/5.0136574)
start_of_epoch_callbacksnequip.train.callbacks.loss_schedule.SimpleLossSchedulefor changing the loss coefficients at specified epochsnequip-deploy build --checkpointand--overrideto avoid many largely duplicated YAML files- matscipy neighborlist support enabled with
NEQUIP_MATSCIPY_NLenvironment variable
Changed
- Always require explicit
seed - [Breaking] Set
dataset_seedtoseedif it is not explicitly provided - Don't log as often by default
- [Breaking] Default nonlinearities are
silu(e) andtanh(o) - Will not reproduce previous versions' data shuffling order (for all practical purposes this does not matter, the
shuffleoption is unchanged) - [Breaking]
default_dtypedefaults tofloat64(model_dtypedefaultfloat32,allow_tf32: trueby default--- see https://arxiv.org/abs/2304.10061) nequip-benchmarknow only uses--n-dataframes to build the model- [Breaking] By default models now use
StressForceOutput, notForceOutput - Added
edge_energytoALL_ENERGY_KEYSsubjecting it to global rescale
Fixed
- Work with
wandb>=0.13.8 - Better error for standard deviation with too few data
load_model_stateGPU -> CPU- No negative volumes in rare cases
Removed
- [Breaking]
fixed_fieldsmachinery (npz_fixed_field_keysis still supported, but through a more straightforward implementation) - Default run name/WandB project name of
NequIP, they must now always be provided explicitly - [Breaking] Removed
_paramsas an allowable subconfiguration suffix (i.e. instead ofoptimizer_paramsnow onlyoptimizer_kwargsis valid, not both) - [Breaking] Removed
per_species_rescale_arguments_in_dataset_units
- Python
Published by Linux-cpp-lisp about 2 years ago
nequip - v0.5.6
[0.5.6] - 2022-12-19
Added
- sklearn dependency removed
nequip-benchmarkandnequip-trainreport number of weights and number of trainable weightsnequip-benchmark --no-compileand--verboseand--memory-summarynequip-benchmark --pdbfor debugging model (builder) errors- More information in
nequip-deploy info
Changed
- Minimum e3nn is now 0.4.4
--equivariance-testnow prints much more information, especially when there is a failure
Fixed
- Git utilities when installed as ZIPed
.egg(#264)
- Python
Published by Linux-cpp-lisp over 3 years ago
nequip - v0.5.5
[0.5.5] - 2022-06-20
Added
- BETA! Support for stress in training and inference
EMTTestDatasetfor quick synthetic fake PBC data- multiprocessing for ASE dataset loading/processing
nequip-benchmarktimes dataset loading, model creation, and compilationvalidation_batch_size- support multiple metrics on same field with different
functionals - allow custom metrics names
- allow
e3nn==0.5.0 --verboseoption tonequip-deploy- print data statistics in
nequip-benchmark normalized_sumreduction inAtomwiseReduce
Changed
- abbreviate
node_features->hin loss titles - failure of permutation equivariance tests no longer short-circuts o3 equivariance tests
NequIPCalculatornow stores all relevant properties computed by the model regardless of requestedproperties, and does not try to access those not computed by the model, allowing models that only compute energy or forces but not both
Fixed
- Equivariance testing correctly handles output cells
- Equivariance testing correctly handles one-node or one-edge data
report_init_validationnow runs on validation set instead of training set- crash when unable to find
os.sched_getaffinityon some systems - don't incorrectly log per-species scales/shifts when loading model (such as for deployment)
nequip-benchmarknow picks data frames deterministically- useful error message for
metrics_key: training_*withreport_init_validation: True(#213)
- Python
Published by Linux-cpp-lisp almost 4 years ago
nequip - v0.5.4
[0.5.4] - 2022-04-12
Added
NequIPCalculatornow handles per-atom energies- Added
initial_model_state_strictYAML option load_model_statebuilder- fusion strategy support
cumulative_wallfor early stopping- Deploy model from YAML file directly
Changed
- Disallow PyTorch 1.9, which has some JIT bugs.
nequip-deploy buildnow requires--train-diroption when specifying the training session- Minimum Python version is now 3.7
Fixed
- Better error in
Dataset.statisticswhen field is missing NequIPCalculatornow outputs energy as scalar rather than(1, 1)arraydataset: asenow treats automatically addskey_mappingkeys toinclude_keys, which is consistant with the npz dataset- fixed reloading models with
per_species_rescale_scales/shiftsset tonull/None - graceful exit for
-n 0innequip-benchmark - Strictly correct CSV headers for metrics (#198)
- Python
Published by Linux-cpp-lisp about 4 years ago
nequip - v0.5.3
[0.5.3] - 2022-02-23
Added
nequip-evaluate --repeatoption- Report number of weights to wandb
Changed
- defaults and commments in example.yaml and full.yaml, in particular longer default training and correct comment for E:F-weighting
- better metrics config in example.yaml and full.yaml, in particular will total F-MAE/F-RMSE instead of mean over per-species
- default value for
report_init_validationis nowTrue all_*_*metrics rename to ->psavg_*_*avg_num_neighborsdefaultNone->auto
Fixed
- error if both per-species and global shift are used together
- Python
Published by Linux-cpp-lisp over 4 years ago
nequip - v0.5.2
[0.5.2] - 2022-02-04
Added
- Model builders may now process only the configuration
- Allow irreps to optionally be specified through the simplified keys
l_max,parity, andnum_features wandb.watchviawandb_watchoption- Allow polynomial cutoff p values besides 6.0
nequip-evaluatenow sets a defaultr_maxtaken from the model for the dataset config- Support multiple rescale layers in trainer
AtomicData.to_asesupports arbitrary fieldsnequip-evaluatecan now output arbitrary fields to an XYZ filenequip-evaluatereports which frame in the original dataset was used as input for each output frame
Changed
minimal.yaml,minimal_eng.yaml, andexample.yamlnow use the simplified irreps optionsl_max,parity, andnum_features- Default value for
resnetis nowFalse
Fixed
- Handle one of
per_species_shifts/scalesbeingnullwhen the other is a dataset statistc include_framesnow works with ASE datasets- no training data labels in input_data
- Average number of neighbors no longer crashes sometimes when not all nodes have neighbors (small cutoffs)
- Handle field registrations correctly in
nequip-evaluate
Removed
compile_model
- Python
Published by Linux-cpp-lisp over 4 years ago
nequip - v0.5.1
[0.5.1] - 2022-01-13
Added
NequIPCalculatorcan now be built via anequip_calculator()function. This adds a minimal compatibility with vibes- Added
avg_num_neighbors: autooption - Asynchronous IO: during training, models are written asynchronously. Enable this with environment variable
NEQUIP_ASYNC_IO=true. dataset_seedto separately control randomness used to select training data (and their order).- The types may now be specified with a simpler
chemical_symbolsoption - Equivariance testing reports per-field errors
--equivariance-test ntests equivariance onnframes from the training dataset
Changed
- All fields now have consistant [N, dim] shaping
- Changed default
seedanddataset_seedin example YAMLs - Equivariance testing can only use training frames now
Fixed
- Equivariance testing no longer unintentionally skips translation
- Correct cat dim for all registered per-graph fields
PerSpeciesScaleShiftnow correctly outputs when scales, but not shifts, are enabled— previously it was broken and would only output updated values when both were enabled.nequip-evaluateoutputs correct species to theextxyzfile when a chemical symbol <-> type mapping exists for the test dataset
- Python
Published by Linux-cpp-lisp over 4 years ago
nequip - v0.5.0
[0.5.0] - 2021-11-24
Changed
- Allow e3nn 0.4.*, which changes the default normalization of
TensorProducts; this change should not affect typical NequIP networks - Deployed are now frozen on load, rather than compile
Fixed
load_deployed_modelrespects global JIT settings
[0.4.0] - not released
Added
- Support for
e3nn'ssoft_one_hot_linspaceas radial bases - Support for parallel dataloader workers with
dataloader_num_workers - Optionally independently configure validation and training datasets
- Save dataset parameters along with processed data
- Gradient clipping
- Arbitrary atom type support
- Unified, modular model building and initialization architecture
- Added
nequip-benchmarkscript for benchmarking and profiling models - Add before option to SequentialGraphNetwork.insert
- Normalize total energy loss by the number of atoms via PerAtomLoss
- Model builder to initialize training from previous checkpoint
- Better error when instantiation fails
- Rename
npz_keystoinclude_keys - Allow user to register
graph_fields,node_fields, andedge_fieldsvia yaml - Deployed models save the e3nn and torch versions they were created with
Changed
- Update example.yaml to use wandb by default, to only use 100 epochs of training, to set a very large batch logging frequency and to change Validationloss to validationloss
- Name processed datasets based on a hash of their parameters to ensure only valid cached data is used
- Do not use TensorFloat32 by default on Ampere GPUs until we understand it better
- No atomic numbers in networks
dataset_energy_std/dataset_energy_meantodataset_total_energy_*nequip.dynamics->nequip.ase- update example.yaml and full.yaml with better defaults, new loss function, and switched to toluene-ccsd(t) as example data
use_scdefaults toTrueregister_fieldsis now innequip.data- Default total energy scaling is changed from global mode to per species mode.
- Renamed
trainable_global_rescale_scaletoglobal_rescale_scale_trainble - Renamed
trainable_global_rescale_shifttoglobal_rescale_shift_trainble - Renamed
PerSpeciesScaleShift_toper_species_rescale - Change default and allowed values of
metrics_keyfromlosstovalidation_loss. The old defaultlosswill no longer be accepted. - Renamed
per_species_rescale_trainabletoper_species_rescale_scales_trainableandper_species_rescale_shifts_trainable
Fixed
- The first 20 epochs/calls of inference are no longer painfully slow for recompilation
- Set global options like TF32, dtype in
nequip-evaluate - Avoid possilbe race condition in caching of processed datasets across multiple training runs
Removed
- Removed
allowed_species - Removed
--update-config; start a new training and load old state instead - Removed dependency on
pytorch_geometric nequip-trainno longer prints the full config, which can be found in the training dir asconfig.yaml.nequip.datasets.AspirinDataset&nequip.datasets.WaterDataset- Dependency on
pytorch_scatter
- Python
Published by Linux-cpp-lisp over 4 years ago
nequip - v0.3.3
[0.3.3] - 2021-08-11
Added
to_asemethod inAtomicData.pyto convertAtomicDataobject to (list of)ase.Atomsobject(s)SequentialGraphNetworknow has insertion methodsnn.SaveForOutputnequip-evaluatecommand for evaluating (metrics on) trained modelsAtomicData.from_asenow catchesenergy/energiesarrays
Changed
- Nonlinearities now specified with
eandoinstead of1and-1 - Update interfaces for
torch_geometric1.7.1 ande3nn0.3.3 nonlinearity_scalarsnow also affects the nonlinearity used in the radial net ofInteractionBlock- Cleaned up naming of initializers
Fixed
- Fix specifying nonlinearities when wandb enabled
Finalbackport for <3.8 compatability- Fixed
nequip-*commands when usingpip install - Default models rescale per-atom energies, and not just total
- Fixed Python <3.8 backward compatability with
atomic_save
- Python
Published by Linux-cpp-lisp almost 5 years ago
nequip - v0.3.2
[0.3.2] - 2021-06-09
Added
- Option for which nonlinearities to use
- Option to save models every n epochs in training
- Option to specify optimization defaults for
e3nn
Fixed
- Using
wandbno longer breaks the inclusion of special objects like callables in configs
- Python
Published by Linux-cpp-lisp almost 5 years ago
nequip - v0.3.1
[0.3.1]
Fixed
iepochis no longer off-by-one when restarting a training run that hitmax_epochs- Builders, and not just sub-builders, use the class name as a default prefix ### Added
early_stopping_xxxarguments added to enable early stop for platued values or values that out of lower/upper bounds.
- Python
Published by Linux-cpp-lisp about 5 years ago
nequip - v0.3.0
[0.3.0] - 2021-05-07
Added
- Sub-builders can be skipped in
instantiateby setting them toNone - More flexible model initialization
- Add MD w/ Nequip-ASE-calculator + run-MD script w/ custom Nose-Hoover
Changed
- PBC must be explicit if a cell is provided
- Training now uses atomic file writes to avoid corruption if interupted
feature_embeddingrenamed tochemical_embeddingin default models
Fixed
BesselBasisnow works on GPU whentrainable=False- Dataset
extra_fixed_fieldsare now added even ifget_data()returnsAtomicDataobjects
- Python
Published by Linux-cpp-lisp about 5 years ago