From f060d0f0280cef2b3b1e93dce63a968d217988e8 Mon Sep 17 00:00:00 2001 From: Guillaume Fraux Date: Tue, 3 Sep 2024 16:33:24 +0200 Subject: [PATCH] Update to metatensor-torch v0.5.5 The main change is that there is now an official "features" output that we can use to pass CV, instead of the custom "plumed::cv" output. The code still accepts models using the previous names, but outputs a deprecation warning. --- regtest/metatensor/rt-basic/cv.py | 43 ++++++--- .../metatensor/rt-basic/scalar-per-atom.pt | Bin 30019 -> 37194 bytes .../metatensor/rt-basic/vector-per-atom.pt | Bin 30019 -> 37194 bytes src/metatensor/README.md | 9 +- src/metatensor/metatensor.cpp | 86 ++++++++++-------- user-doc/METATENSORMOD.md | 4 +- 6 files changed, 86 insertions(+), 56 deletions(-) diff --git a/regtest/metatensor/rt-basic/cv.py b/regtest/metatensor/rt-basic/cv.py index 192343d375..d577e3181d 100644 --- a/regtest/metatensor/rt-basic/cv.py +++ b/regtest/metatensor/rt-basic/cv.py @@ -31,11 +31,12 @@ class TestCollectiveVariable(torch.nn.Module): CV^2 are returned. """ - def __init__(self, cutoff, multiple_properties): + def __init__(self, cutoff, multiple_properties, output_name): super().__init__() self._nl_request = NeighborListOptions(cutoff=cutoff, full_list=True) self._multiple_properties = multiple_properties + self._output_name = output_name def forward( self, @@ -44,7 +45,7 @@ def forward( selected_atoms: Optional[Labels], ) -> Dict[str, TensorMap]: - if "plumed::cv" not in outputs: + if self._output_name not in outputs: return {} device = torch.device("cpu") @@ -54,7 +55,7 @@ def forward( if selected_atoms is not None: raise ValueError("selected atoms is not supported") - output = outputs["plumed::cv"] + output = outputs[self._output_name] if output.per_atom: samples_list: List[List[int]] = [] @@ -117,7 +118,7 @@ def forward( blocks=[block], ) - return {"plumed::cv": cv} + return {self._output_name: cv} def requested_neighbor_lists(self) -> List[NeighborListOptions]: return [self._nl_request] @@ -126,7 +127,7 @@ def requested_neighbor_lists(self) -> List[NeighborListOptions]: CUTOFF = 3.5 capabilities = ModelCapabilities( - outputs={"plumed::cv": ModelOutput(per_atom=True)}, + outputs={"features": ModelOutput(per_atom=True)}, interaction_range=CUTOFF, supported_devices=["cpu", "mps", "cuda"], length_unit="A", @@ -135,15 +136,23 @@ def requested_neighbor_lists(self) -> List[NeighborListOptions]: ) # export all variations of the model -cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=False) +cv = TestCollectiveVariable( + cutoff=CUTOFF, + multiple_properties=False, + output_name="features", +) cv.eval() model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) -model.export("scalar-per-atom.pt") +model.save("scalar-per-atom.pt") -cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=True) +cv = TestCollectiveVariable( + cutoff=CUTOFF, + multiple_properties=True, + output_name="features", +) cv.eval() model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) -model.export("vector-per-atom.pt") +model.save("vector-per-atom.pt") capabilities = ModelCapabilities( outputs={"plumed::cv": ModelOutput(per_atom=False)}, @@ -154,12 +163,20 @@ def requested_neighbor_lists(self) -> List[NeighborListOptions]: dtype="float32", ) -cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=False) +cv = TestCollectiveVariable( + cutoff=CUTOFF, + multiple_properties=False, + output_name="plumed::cv", +) cv.eval() model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) -model.export("scalar-global.pt") +model.save("scalar-global.pt") -cv = TestCollectiveVariable(cutoff=CUTOFF, multiple_properties=True) +cv = TestCollectiveVariable( + cutoff=CUTOFF, + multiple_properties=True, + output_name="plumed::cv", +) cv.eval() model = MetatensorAtomisticModel(cv, ModelMetadata(), capabilities) -model.export("vector-global.pt") +model.save("vector-global.pt") diff --git a/regtest/metatensor/rt-basic/scalar-per-atom.pt b/regtest/metatensor/rt-basic/scalar-per-atom.pt index a8075e77f6b2ec817de18457c9b144e0692c6497..b38b0d83d1322091c14cbc4b292f30ed3d770042 100644 GIT binary patch delta 31163 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 delta 25039 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 B47~sV diff --git a/regtest/metatensor/rt-basic/vector-per-atom.pt b/regtest/metatensor/rt-basic/vector-per-atom.pt index 919831b43a364a596827d0ab054002b265f4cd0e..c9a1b2e38522f8e280393f773f69d3263dd6bb03 100644 GIT binary patch delta 31163 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 delta 25039 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 B5nTWP diff --git a/src/metatensor/README.md b/src/metatensor/README.md index 6672f16250..1e4ef7da48 100644 --- a/src/metatensor/README.md +++ b/src/metatensor/README.md @@ -7,4 +7,11 @@ See [the main documentation](../../user-doc/METATENSORMOD.md) for more information on how to compile and use this module. - +This module uses [vesin](https://github.com/Luthaf/vesin) to compute neighbor +lists. If you need to update it, you should use the `import.sh` script: + +```bash +git clone https://github.com/Luthaf/vesin +cd /path/to/plumed2/src/metatensor +./import.sh /path/to/vesin +``` diff --git a/src/metatensor/metatensor.cpp b/src/metatensor/metatensor.cpp index 7052d38f08..b1fbbd29e8 100644 --- a/src/metatensor/metatensor.cpp +++ b/src/metatensor/metatensor.cpp @@ -51,9 +51,7 @@ directory defines a custom machine learning CV that can be used with PLUMED. The following input shows how you can call metatensor and evaluate the model that is described in the file `custom_cv.pt` from PLUMED. -\plumedfile -metatensor_cv: METATENSOR ... - MODEL=custom_cv.pt +\plumedfile metatensor_cv: METATENSOR ... MODEL=custom_cv.pt SPECIES1=1-26 SPECIES2=27-62 @@ -75,7 +73,7 @@ using the `SPECIES2` flag and so on. TorchScript extensions (as shared libraries) that are required to load and execute the model. This matches the `collect_extensions` argument to `MetatensorAtomisticModel.export` in Python. -- `NO_CONSISTENCY_CHECK` can be used to disable internal consistency checks; +- `CHECK_CONSISTENCY` can be used to enable internal consistency checks; - `SELECTED_ATOMS` can be used to signal the metatensor models that it should only run its calculation for the selected subset of atoms. The model still need to know about all the atoms in the system (through the `SPECIES` @@ -87,11 +85,8 @@ using the `SPECIES2` flag and so on. Here is another example with all the possible keywords: -\plumedfile -soap: METATENSOR ... - MODEL=soap.pt - EXTENSION_DIRECTORY=extensions - NO_CONSISTENCY_CHECK +\plumedfile soap: METATENSOR ... MODEL=soap.pt EXTENSION_DIRECTORY=extensions +CHECK_CONSISTENCY SPECIES1=1-10 SPECIES2=11-20 @@ -105,29 +100,18 @@ soap: METATENSOR ... \par Collective variables and metatensor models -Collective variables are not yet part of the [known outputs][mts_outputs] for -metatensor models. Until the output format is standardized, this action expects -the following: - -- the output name should be `"plumed::cv"`; -- the output should contain a single [block][mts_block]; -- the output samples should be named `["system", "atom"]` for per-atom outputs; - or `["system"]` for global outputs. The `"system"` index should always be 0, - and the `"atom"` index should be the index of the atom (between 0 and the - total number of atoms); -- the output should not have any components; -- the output can have arbitrary properties; -- the output should not have any explicit gradients, all gradient calculations - are done using autograd. +PLUMED can use the [`"features"` output][features_output] of metatensor +atomistic models as a collective variables. Alternatively, the code also accepts +an output named `"plumed::cv"`, with the same metadata structure as the +`"features"` output. */ /* [TorchScript]: https://pytorch.org/docs/stable/jit.html [mts_models]: https://docs.metatensor.org/latest/atomistic/index.html [mts_tutorials]: https://docs.metatensor.org/latest/examples/atomistic/index.html -[mts_outputs]: https://docs.metatensor.org/latest/atomistic/outputs.html [mts_block]: https://docs.metatensor.org/latest/torch/reference/block.html - +[features_output]: https://docs.metatensor.org/latest/examples/atomistic/outputs/features.html */ //+ENDPLUMEDOC @@ -224,8 +208,10 @@ class MetatensorPlumedAction: public ActionAtomistic, public ActionWithValue { torch::jit::Module model_; - // neighbor lists requests made by the model metatensor_torch::ModelCapabilities capabilities_; + std::string model_output_; + + // neighbor lists requests made by the model std::vector nl_requests_; // dtype/device to use to execute the model @@ -360,9 +346,8 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): this->atomic_types_ = torch::tensor(std::move(atomic_types)); this->requestAtoms(all_atoms); - bool no_consistency_check = false; - this->parseFlag("NO_CONSISTENCY_CHECK", no_consistency_check); - this->check_consistency_ = !no_consistency_check; + this->check_consistency_ = false; + this->parseFlag("CHECK_CONSISTENCY", this->check_consistency_); if (this->check_consistency_) { log.printf(" checking for internal consistency of the model\n"); } @@ -372,26 +357,48 @@ MetatensorPlumedAction::MetatensorPlumedAction(const ActionOptions& options): evaluations_options_ = torch::make_intrusive(); evaluations_options_->set_length_unit(getUnits().getLengthString()); - if (!this->capabilities_->outputs().contains("plumed::cv")) { + auto outputs = this->capabilities_->outputs(); + if (outputs.contains("features")) { + this->model_output_ = "features"; + } + + if (outputs.contains("plumed::cv")) { + if (outputs.contains("features")) { + this->warning( + "this model exposes both 'features' and 'plumed::cv' outputs, " + "we will use 'features'. 'plumed::cv' is deprecated, please " + "remove it from your models" + ); + } else { + this->warning( + "this model is using 'plumed::cv' output, which is deprecated. " + "Please replace it with a 'features' output" + ); + this->model_output_ = "plumed::cv"; + } + } + + + if (this->model_output_.empty()) { auto existing_outputs = std::vector(); for (const auto& it: this->capabilities_->outputs()) { existing_outputs.push_back(it.key()); } this->error( - "expected 'plumed::cv' in the capabilities of the model, could not find it. " - "the following outputs exist: " + torch::str(existing_outputs) + "expected 'features' or 'plumed::cv' in the capabilities of the model, " + "could not find it. the following outputs exist: " + torch::str(existing_outputs) ); } auto output = torch::make_intrusive(); // this output has no quantity or unit to set - output->per_atom = this->capabilities_->outputs().at("plumed::cv")->per_atom; + output->per_atom = this->capabilities_->outputs().at(this->model_output_)->per_atom; // we are using torch autograd system to compute gradients, // so we don't need any explicit gradients. output->explicit_gradients = {}; - evaluations_options_->outputs.insert("plumed::cv", output); + evaluations_options_->outputs.insert(this->model_output_, output); // Determine which device we should use based on user input, what the model // supports and what's available @@ -595,8 +602,6 @@ void MetatensorPlumedAction::createSystem() { auto cpu_f64_tensor = torch::TensorOptions().dtype(torch::kFloat64).device(torch::kCPU); auto torch_cell = torch::zeros({3, 3}, cpu_f64_tensor); - // TODO: check if cell is stored in row or column major order - // TODO: check if cell is zero for non-periodic systems torch_cell[0][0] = cell(0, 0); torch_cell[0][1] = cell(0, 1); torch_cell[0][2] = cell(0, 2); @@ -747,7 +752,7 @@ metatensor_torch::TorchTensorBlock MetatensorPlumedAction::executeModel(metatens }); auto dict_output = ivalue_output.toGenericDict(); - auto cv = dict_output.at("plumed::cv"); + auto cv = dict_output.at(this->model_output_); this->output_ = cv.toCustomClass(); } catch (const std::exception& e) { plumed_merror("failed to evaluate the model: " + std::string(e.what())); @@ -944,8 +949,7 @@ void MetatensorPlumedAction::registerKeywords(Keywords& keys) { keys.add("optional", "EXTENSIONS_DIRECTORY", "path to the directory containing TorchScript extensions to load"); keys.add("optional", "DEVICE", "Torch device to use for the calculation"); - // TODO: change the default? - keys.addFlag("NO_CONSISTENCY_CHECK", false, "Should we disable internal consistency of the model"); + keys.addFlag("CHECK_CONSISTENCY", false, "Should we enable internal consistency of the model"); keys.add("numbered", "SPECIES", "the atoms in each PLUMED species"); keys.reset_style("SPECIES", "atoms"); @@ -955,7 +959,9 @@ void MetatensorPlumedAction::registerKeywords(Keywords& keys) { keys.add("optional", "SPECIES_TO_TYPES", "mapping from PLUMED SPECIES to metatensor's atomic types"); - keys.addOutputComponent("outputs", "default", "collective variable created by the model"); + keys.addOutputComponent("outputs", "default", "collective variable created by the metatensor model"); + + keys.setValueDescription("collective variable created by the metatensor model"); } PLUMED_REGISTER_ACTION(MetatensorPlumedAction, "METATENSOR") diff --git a/user-doc/METATENSORMOD.md b/user-doc/METATENSORMOD.md index 08c4944dec..81f31d01bd 100644 --- a/user-doc/METATENSORMOD.md +++ b/user-doc/METATENSORMOD.md @@ -29,7 +29,7 @@ pre-built Python wheels with `pip`. This is the same set of wheels you will need to define custom models. ```bash -pip install "metatensor-torch ==0.5.1" # change this version to get newer releases +pip install "metatensor-torch ==0.5.5" # change this version to get newer releases # optional: get the other metatensor tools to define models (these are only usable from Python). pip install metatensor-operations metatensor-learn @@ -100,7 +100,7 @@ METATENSOR_TORCH_PREFIX="$METATENSOR_PREFIX" git clone https://github.com/lab-cosmo/metatensor # or a more recent release of metatensor-torch -git checkout metatensor-torch-v0.5.0 +git checkout metatensor-torch-v0.5.5 cd metatensor mkdir build && cd build