Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue in ML NEB Run (cattsunami) #946

Open
K-Manan opened this issue Dec 18, 2024 · 5 comments
Open

Issue in ML NEB Run (cattsunami) #946

K-Manan opened this issue Dec 18, 2024 · 5 comments
Assignees
Labels
question Further information is requested

Comments

@K-Manan
Copy link

K-Manan commented Dec 18, 2024

Working on CO dissociation with higher coverage on Cu111 catalyst surface, fmax in the NEB calculation (as attached) converges in a single step which seems highly unlikely. What could be the causation for this? Please suggest which part of the script maybe causing this issue and how to rectify it.

Output: fmax_NEB

Script: neb_frame_set.txt

@lbluque lbluque assigned lbluque and brookwander and unassigned lbluque Dec 20, 2024
Copy link

This issue has been marked as stale because it has been open for 30 days with no activity.

@github-actions github-actions bot added the stale label Jan 20, 2025
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Feb 3, 2025
@zulissimeta zulissimeta reopened this Feb 12, 2025
@zulissimeta
Copy link
Collaborator

Hi @K-Manan - with some of the older models, you need to set the tags on the system so it knows which atoms are surface atoms (free), adsorbate atoms (free) or subsurface atoms (fixed, energies/forces not fitted, sometimes not used); these choices were made to help with model training early on in the project. The newer models like the EquiformerV2 checkpoints no longer require this and are much easier to use. As a starting point I would try the EquiformerV2-31M-S2EF-OC20-All+MD checkpoint.

Here's a guide on how to use the models for NEBs: https://fair-chem.github.io/tutorials/fairchem_models_for_nebs.html

Let me know if that doesn't fix the problem for you!

@zulissimeta zulissimeta added question Further information is requested and removed stale labels Feb 12, 2025
@K-Manan
Copy link
Author

K-Manan commented Feb 17, 2025

Thanks Zach, we tested the CO dissociation on Cu(111) surface using the EquiformerV2 and tagged each layer the slab (in reactant.traj and product.traj), but still the NEB calculation stopped without iterations. Is there something that we are missing out? Attached the files in zip.

Also, we generated checkpoints based on our training data (without atom tags) and end up with the same issue. In that case, do you suggest we also include atom tags in the configurations before training? We constrained the bottom two layers in the slab but how do we let the GNN know that these layers are frozen.

Or is there a way to construct checkpoints without tagging the atoms?

CO_dissoc.zip

@zulissi
Copy link
Collaborator

zulissi commented Feb 22, 2025

Hi - you don't need to tag the atoms when using the EquiformerV2 checkpoints. I'm a little confused about your comment re the GNN knowing some are frozen - ASE handles the constraints and should zero out the forces on the frozen atoms automatically. Similarly, using your favorite quantum chemistry calculator (e.g. VASP) wouldn't know about the constraints either.

I don't know exactly what's happening without your exact structures, but a couple things I would do to debug:

  1. Run relaxations for the initial / final frames, and make sure they work as you expect and relax
  2. Double check which atoms are fixed. Try calculating the forces on the images, or on the entire NEB, and see how they look
  3. Try using EMT as a calculator instead of equiformerv2; it won't be accurate, but it will help you make sure the rest of the script is working ok

@brookwander
Copy link
Collaborator

Hello, I was able to reproduce on my end but I think there isn't an issue? It looks like initial_guess.traj is actually just optimized already? I created a new interpolation using reactant_tag.traj (0) and product_tag.traj(0) as the initial and final frames and the fmax to start is 7eV/Ang.
Some side notes

  1. your convergence criteria is very strict. I would recommend 0.05 eV/Ang otherwise I have noticed the MLP just oscillates. If you would like to optimize further, you can try using Sella like https://pubs.acs.org/doi/abs/10.1021/acs.jpcc.4c07477
  2. Maybe you plan to but you should use a climbing image scheme

Maybe I am missing something, but I hope this is helpful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

6 participants