Changelog

All notable changes to metatensor-torch are documented here, following the keep a changelog format. This project follows Semantic Versioning.

Unreleased

Changed

  • Custom data stored in System is now stored as TensorMap instead of TensorBlock. This allow for more kinds of data to be stored.

  • System can now be serialized and saved to a file using metatensor.torch.atomistic.save and metatensor.torch.atomistic.load_system. For the initial implementation, these functions are only accessible from Python.

Version 0.6.3 - 2024-12-11

Fixed

  • Fixed an issue with Python wheels building, where the underlying C++ library would get a different version from the Python library and fail to load.

Version 0.6.2 - 2024-12-11

Fixed

  • Selecting from empty Labels no longer fails (#792)

  • Models are exported with requires_grad=False for all parameters, which should make them faster when using autograd to compute forces and stress (#802)

Version 0.6.1 - 2024-11-7

Fixed

  • Added missing data to NeighborListOptions serialization (#784)

Changed

  • load_atomistic_model now returns a MetatensorAtomisticMode instead of a raw TorchScript model. This allows to reload, modify and re-export a model (#783).

Version 0.6.0 - 2024-10-29

Added

  • a is_atomistic_model (Python only) function to check if an loaded module is an metatensor atomistic model (#697, #766)

Changed

  • the System class now supports boundary conditions along some axes but not others. This is implemented via a new pbc attribute. Any non-periodic dimension in a System must have the corresponding cell vector set to zero.

  • NeighborListOptions can now request strict or non-strict neighbor lists (#770)

Version 0.5.5 - 2024-09-03

Added

  • a "features" standard output for atomistic models (#718)

Fixed

  • the Python wheels request the right versions of torch in their metadata (#724)

Version 0.5.4 - 2024-08-28

Added

  • read_model_metadata to load only the ModelMetadata from an exported atomistic model without having to load the whole model.

  • Users can now store arbitrary additional metadata in ModelMetadata.extra

  • Added Labels.select function to sub-select entries in labels

  • Added support for serialization of TensorBlock with TensorBlock::load, TensorBlock::load_buffer, TensorBlock::save, TensorBlock::save_buffer and the corresponding functions in metatensor.torch.

Version 0.5.3 - 2024-07-15

Changed

  • MetatensorAtomisticModel.save() always saves models on the CPU.

  • We now require Python >= 3.9

Fixed

  • Fixed a memory leak in register_autograd_neighbors (#684)

Version 0.5.2 - 2024-06-21

Added

  • MetatensorAtomisticModel.save() to save a wrapped model to a file.

  • TensorBlock.__len__ and TensorBlock.shape, which return the length and shape of the values in the block respectively (#640)

  • metatensor.torch.atomistic.ase_calculator.MetatensorCalculator can now use vesin for faster neighbor list calculations (#659)

  • When running atomistic models in the PyTorch profiler, different sections of the code now have meaningful names

Deprecated

  • MetatensorAtomisticModel.export() is deprecated in favor of MetatensorAtomisticModel.save()

Fixed

  • metatensor.torch.atomistic.ase_calculator.MetatensorCalculator uses the right device when computing stress/virial (#660)

Version 0.5.1 - 2024-05-14

Added

  • preprocessor macros containing the version number of metatensor-torch: METATENSOR_TORCH_VERSION, METATENSOR_TORCH_VERSION_MAJOR, METATENSOR_TORCH_VERSION_MINOR, and METATENSOR_TORCH_VERSION_PATCH.

Version 0.5.0 - 2024-05-02

Changed

  • We renamed neighbors_list to neighbor_list in all functions (#587)

metatensor-torch Python

Changed

  • The neighbor lists calculation in MetatensorCalculator (ASE calculator based on metatensor models) is now a lot faster (#586)

  • Multiple small improvements related to custom TorchScript extensions (#584)

  • There are reference output for neighbor list calculations, which should help writing interfaces to metatensor models in new simulation engines (#588)

  • The wheels for metatensor-torch on PyPI now declare which versions of torch they are compatible with (#592)

Version 0.4.0 - 2024-04-11

metatensor-torch C++

Added

  • ModelCapabilities::dtype, used by the model to communicate the dtype it wants to use for inputs and outputs.

  • The load_model_extensions() function to facilitate loading a model using TorchScript extensions.

Changed

  • System::add_data now has an override parameter to replace custom data with a new value.

metatensor-torch Python

Changed

  • We now release wheels compatible with multiple torch versions on PyPI, removing the need to compile C++ code when installing this package.

Added

  • ModelCapabilities.dtype, used by the model to communicate the dtype it wants to use for inputs and outputs.

  • The device that should be used by a model inside the ASE’s MetatensorCalculator can now be specified by the user.

  • The load_model_extensions() and load_atomistic_model functions to facilitate loading a model using TorchScript extensions

Version 0.3.0 - 2024-03-01

metatensor-torch C++

Added

  • ModelMetadata to record metadata about a specific model such as it’s name, authors, etc.

  • Added interaction_range and supported_devices to ModelCapabilities

Changed

  • System::species has been renamed to System::types.

metatensor-torch Python

Added

  • ModelMetadata to record metadata about a specific model such as it’s name, authors, etc.

  • Added interaction_range and supported_devices to ModelCapabilities

Changed

  • System.species has been renamed to System.types.

Version 0.2.1 - 2024-01-26

metatensor-torch C++

Added

  • Offer serialization functionality as member functions (i.e. TensorMap::load) in addition to the existing free standing functions (i.e. metatensor_torch::load) (#453)

  • In-memory serialization with TensorMap::save_buffer, TensorMap::load_buffer, and the respective free standing functions (#455)

  • Serialization of Labels, with the same API as TensorMap (#455)

metatensor-torch Python

Added

  • Offer serialization functionality as member functions (i.e. TensorMap.load) in addition to the existing free standing functions (i.e. metatensor.torch.load) (#453)

  • In-memory serialization with TensorMap.save_buffer, TensorMap.load_buffer, and the respective free standing functions (#455)

  • Serialization of Labels, with the same API as TensorMap (#455)

Version 0.2.0 - 2024-01-08

metatensor-torch C++

Added

  • New classes specifically tailored for atomistic models (#405):

    • System defines the input of a model;

    • NeighborsListOptions allow a model to request a specific neighbors list;

    • ModelRunOptions, ModelOutput and ModelCapabilities allow to statically describe capabilities of a model, and request specific outputs from it.

  • TensorBlock::to, TensorMap::to, and System::to to change the device or dtype of torch Tensor stored by metatensor

  • Labels::device, TensorBlock::device and TensorMap::device; as well as TensorMap::scalar_type, and TensorBlock::scalar_type to query the current device and scalar type/dtype used by the data.

  • metatensor_torch::version function, returning the version of the code as a string.

Fixed

  • We now check that all tensors in a TensorBlock/TensorMap have the same dtype and device (#414)

  • keys_to_properties, keys_to_samples and components_to_properties now keep the different Labels on the same device (#411)

metatensor-torch Python

Added

  • New classes specifically tailored for atomistic models (#405):

    • same classes as the C++ interfaces, in metatensor.torch.atomistic

    • MetatensorAtomisticModel as a way to wrap user-defined torch.nn.Module and export them in a unified way, handling unit conversions and metadata checks.

  • ASE calculator based on MetatensorAtomisticModel in metatensor.torch.atomistic.ase_calculator. This allow using arbitrary user-defined models to run simulations with ASE.

  • TensorBlock.to, TensorMap.to and System.to to change the device or dtype of torch Tensor stored by metatensor

  • Labels.device, TensorBlock.device and TensorMap.device; as well as TensorMap.dtype, and TensorBlock.dtype to query the current device and dtype used by the data.

Version 0.1.0 - 2023-10-11

metatensor-torch C++

Added

  • TorchScript bindings to all metatensor-core class: Labels, LabelsEntry, TensorBlock, and TensorMap;

  • Implementation of mts_array_t/metatensor::DataArrayBase for torch::Tensor;

metatensor-torch Python

Added

  • Expose TorchScript classes to Python;

  • Expose all functions from metatensor-operations as TorchScript compatible code;