deepchem / deepchem

Democratizing Deep-Learning for Drug Discovery, Quantum Chemistry, Materials Science and Biology
https://deepchem.io/
MIT License
5.27k stars 1.64k forks source link

Implementing FermiNet #1676

Open rbharath opened 4 years ago

rbharath commented 4 years ago

There's a very interesting new paper out from DeepMind about FermiNet, a new deep architecture for quantum chemistry:

https://arxiv.org/pdf/1909.02487.pdf

A reference implementation in DeepChem might be interesting.

jhrmnn commented 3 years ago

We have just released DeepQMC, which contains a lot of machinery necessary to run FermiNet, so implementing FermiNet (in Pytorch) for DeepQMC should be relatively straightforward. DeepQMC is structured to support external wave function ansatzes, so such a FermiNet implementation could even live in DeepChem, if someone preferred that.

In the opposite direction, if there is something that could be done on the DeepQMC's side to make it play nicely with DeepChem in some way (say, understand DeepChem's objects representing molecular geometries), I'd be happy to do that.

rbharath commented 3 years ago

@jhrmnn DeepQMC looks really cool! I'd absolutely love to get a FermiNet implementation in DeepChem that leveraged DeepQMC.

As a couple questions for clarification, is there already a FermiNet implementation in DeepQMC? If so, we could just write a DeepChem wrapper class that calls the DeepQMC implementation under the hood. I think the main bits of work on the DeepChem end needed would be to write a Model class that wraps DeepQMC machinery so as to interface with DeepChem datasets/splitters/etc.

jhrmnn commented 3 years ago

No, FermiNet is not in DeepQMC at the moment. In principle, it doesn't matter where such a FermiNet implementation would live, it could be in DeepChem, in DeepQMC, or a standalone package, in all cases it could leverage the DeepQMC backend. I pointed it out here since the issue already existed.

I should also point out that this whole QMC business might not exactly fit into the existing framework here? Not sure. In particular, there is no need for an external dataset, the approach is ab-initio, and you train a given model for a wave function of one particular molecule, not for a whole set of them.

rbharath commented 3 years ago

Speaking for myself, I'm primarily interested in putting together a reference implementation since FermiNet looks really cool :). We maintain the MoleculeNet benchmark suite which has some quantum chemistry datasets in it already, so it would be neat if we could help facilitate the benchmarking of deep methods for quantum chemistry. That said, as you point out the method is ab-initio and we've primarily focused on benchmarking of supervised datasets so our machinery might not be a great fit right now.

It would be very cool to get a good open source FermiNet implementation going somewhere though! I'm also pretty agnostic as to where an implementation actually lives

CompRhys commented 3 years ago

@rbharath a reference tensorflow implementation of ferminet is now available open source from deepmind. @jhrmnn do you have plans to transpose it into pytorch for deepqmc? I would be happy to help on the PR.

jhrmnn commented 3 years ago

Only in the sense that it would be great to have it in, mentioned in deepqmc/deepqmc#19. But no immediate plan on actually doing it myself, so if you want to contribute a PR, that would be amazing

CompRhys commented 3 years ago

@jhrmnn I will have a look at how brainless the transposition might be, if it's one-to-one I may have a go.

rbharath commented 3 years ago

Just catching up on old messages, and realized I never responded on this thread! I'd love to see a FermiNet implementation make its way into DeepQMC :). I don't have too much bandwidth to work on it directly myself for now but might have some bandwidth in the future.