ACEsuit / ACEpotentials.jl

Machine Learning Interatomic Potentials with the Atomic Cluster Expansion
MIT License
49 stars 13 forks source link

LAMMPS alloy potential file too big and the minimization crashs after potential read-in #181

Closed hari-ushankar closed 3 months ago

hari-ushankar commented 1 year ago

Hi folks,

I wanted your help on seeing what is going wrong in .yace file that was created during the training process.

I use the following set of lines for my lammps calc:

pair_style hybrid/overlay pace table spline 6500
pair_coeff * * pace pot.yace Pt
pair_coeff 1 1 table pot_pairpot.table Pt_Pt

my .yace file is close to 35 MB and my lammps log reads the following:

LAMMPS (2 Aug 2023)
Reading data file ...
  orthogonal box = (0 0 0) to (32.984845 4 16.492422)
  8 by 1 by 4 MPI processor grid
  reading atoms ...
  136 atoms
  read_data CPU = 0.019 seconds
ACE version: 2022.6.27
Recursive evaluator is used
Loading pot.yace
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------

I presume @wcwitt you have some ideas why this is going wrong. I can send the potential files and my work dir via email if necessary.

CC: @cortner

wcwitt commented 1 year ago

I'm not immediately sure - would you send a full example please?

hari-ushankar commented 1 year ago

Hi @wcwitt , sure - is it ok if I send the example via email to you and cc @cortner ?

For the time being, I'm using Julia to load the .json file (which isn't too large in size for some reason..) and performing minimizations in Julia itself. But in the long term, I would like to use LAMMPS and carryout my simulations in there.

Please leave your e-mail id and you can close the issue for now.

cortner commented 1 year ago

Leave it open please and post your entire script. Also post the size of the ACE Basis.

hari-ushankar commented 1 year ago

Ok, I have found out what is wrong - I had two LAMMPS binaries, one which was compiled with the bug fix from @wcwitt and the other one is the default one from LAMMPS distribution (which had issues running because of YAML double conversion issue..).

I was stupid enough to run my ACE models on the binary which gives me the YAML error - hence this issue popped up!

My newly generated ACE potential is able to be read FINE in the binary which was compiled with the YAML bug fix. But, this leads to me on other question: is there an make equivalent script to what is available on the Tutorials page:

git clone -b release https://github.com/lammps/lammps
cd lammps
mkdir build
cd build
wget -O libpace.tar.gz https://github.com/wcwitt/lammps-user-pace/archive/main.tar.gz
cmake \
    -D PKG_ML-PACE=yes \
    -D PACELIB_MD5=$(md5sum libpace.tar.gz | awk '{print $1}') \
    ../cmake
make -j 4

what I could find from ICAMS docpage was (https://github.com/ICAMS/lammps-user-pace):

  1. Go to lammps/src folder
  2. Compile the ML-PACE library by running make lib-pace args="-b"
  3. Include ML-PACE in the compilation by running make yes-ml-pace
  4. Compile lammps as usual, i.e. make serial or make mpi.

I can supply args by providing version to be "-v"; but this version is not the same one from @wcwitt . Can you help me with this?

For some reason, I can only use make to create hte lammps binary - hence the request.

wcwitt commented 1 year ago

Great!

one which was compiled with the bug fix from @wcwitt

It's more of an extension/patch than a bug fix.

For some reason, I can only use make to create hte lammps binary - hence the request

My recipe uses make also, at the end - are you saying it's failing on the cmake step? If that's the case I would suggest installing cmake. Here is the LAMMPS page documenting cmake builds: https://docs.lammps.org/Build_cmake.html.

hari-ushankar commented 1 year ago

No, I meant to say is there an make equivalent to the cmake build that you described in the tutorials:https://acesuit.github.io/ACEpotentials.jl/dev/tutorials/lammps/? In particular this step:

cmake \
    -D PKG_ML-PACE=yes \
    -D PACELIB_MD5=$(md5sum libpace.tar.gz | awk '{print $1}') \
    ../cmake

From the LAMMPS docs, there is cmake build and Traditional make build for compiling ML-PACE with LAMMPS like so:

https://docs.lammps.org/Build_extras.html#ml-pace

I want to use the traditional make build route to build the ML-PACE package (with the patch that you provided..). But, using the traditional make build instructions on the above lammps doc page always pulls the ICAMS repo for ML-PACE and not your patched version. So that route does not give me the correct LAMMPS install that works with .yace files from Julia. this is my problem! :/

wcwitt commented 1 year ago

I do understand - but I'm saying the solution is to use cmake, installing it if necessary. Note that both options use make for compilation; the difference is in pre-processing.

hari-ushankar commented 3 months ago

Hi @wcwitt ,

Sorry to bother you again - but I had run into this issue once more. I have a fresh installation of 17 Apr 2024 - Development - patch_17Apr2024-505-g8ce284f125 of LAMMPS and I install the ML-PACE as you mention here on the tutorials page:

https://acesuit.github.io/ACEpotentials.jl/dev/tutorials/lammps/

With loading the potential like this on LAMMPS:

pair_style      hybrid/overlay pace table spline 6500
pair_coeff      * * pace diff.yace Au Pt
pair_coeff      1 1 table diff_pairpot.table Au_Au
pair_coeff      2 1 table diff_pairpot.table Pt_Au
pair_coeff      2 2 table diff_pairpot.table Pt_Pt

I get the following log:

read_data CPU = 0.004 seconds
ACE version: 2023.11.25
Recursive evaluator is used
Loading diff.yace
Exception: bad conversion
-----------------------------------------------------------------------
---

Uploaded are my structure files, ACE potentials and then my lammps input scripts into a zip file. lammps_files.zip

MD5SUM for my ML-PACE (libpace.tar.gz) is: 4f0b3b5b14456fe9a73b447de3765caa

Basically I cannot do structural/geometry optimization using LAMMPS now. Please provide suggestions on what is going wrong.

EDIT these are the versions of julia packages that were used to create my model.json/model.yace potential:


JuLIP v0.14.8
ACEbase v0.4.3
ACE1x v0.1.10
ACE1 v0.12.3
ACEmd v0.1.13
ACEpotentials v0.6.7
ACEfit v0.1.5
wcwitt commented 3 months ago

Have you followed the instructions exactly as written here? I did a fresh install with those instructions and tried your example - it worked for me.

git clone -b release https://github.com/lammps/lammps
cd lammps
mkdir build
cd build
wget -O libpace.tar.gz https://github.com/wcwitt/lammps-user-pace/archive/main.tar.gz
cmake \
    -D PKG_ML-PACE=yes \
    -D PACELIB_MD5=$(md5sum libpace.tar.gz | awk '{print $1}') \
    ../cmake
make -j 4
hari-ushankar commented 3 months ago

You are right ! I was messing around with different versions of ML-PACE so there was an issue with that. I started with a clean repo and the instructions helped me.

My geometry optimization works very well now - thank you so much @wcwitt !!! 🙏

Closing this issue now.