This release contains the following changes:
- Updating the
O3MessagePassingBlockused by MACE and NequIP to usee3j.core.Convolution, which enables fused convolution kernels on GPU and TPU but requires an explicit edge ordering to be set. - Adding the
Graph.orderingfield to specify the edge ordering explicitly, and theGraph.sort_edges()helper. All graphs created within the library are now sender-ordered by default, matching the default setting inO3MessagePassingBlock. - Changing the default
target_irrepsinNequipConfigto use 32 channels for l=2 features (previously 4), increasing the default model size. - Adding
num_reader_workerstoGraphDatasetBuilderConfigto enable reading data using a worker pool. Used to read multiple datasets or splits in parallel, and to also parallelize over groups inside HDF5 files. - Changing the default setting of
Graph.edges.shiftsfrom all-zeros toNonewhen a system does not have PBCs. This can greatly reduce the memory required to hold a processed dataset in RAM during training. - Fixing a bug where the
property_name_mappingwas not correctly handled in theASEAtomsReader. - Reducing the runtime of the
GraphDatasetpreparation workflow by reducing device-to-host memory transfers when shuffling, removing unnecessary iterables over the batched dataset, and simplifying the computation of per-element atomic energies. - Filtering out graphs with no edges during dataset building, and guarding the minimum-neighbor-distance statistic against edgeless graphs.
- Adding a
terminate_on_nanoption toTrainingLoopConfigthat stops training as soon as an epoch's mean loss or gradient norm becomes NaN/Inf. - Upgrading
e3jdependency to minimum version of 0.1.1.