Page 1 of 1

How to check if ML_FF refitting is successful?

Posted: Mon Jan 20, 2025 10:25 am
by akretschmer

Hi,

I have built a force field with VASP and am currently in the process of refitting to enable the fast prediction mode. I have started the work with the force fields with the version 6.3.2 and have not yet upgraded my script to the latest version, which I should do.

Now, how do I see whether the refitting was successful or what happened in general? According to the wiki, there is the ASCII header of the ML_FFN file, but this is only available from version 6.4.3 onwards. I do not see any information in any of the ouput files that the refitting was done or successful or anything. Are there some signs that tell me whether the refitting was performed and whether the force field is good to use now, or do I have to try a prediction mode only run and see what comes out?


Re: How to check if ML_FF refitting is successful?

Posted: Mon Jan 20, 2025 3:28 pm
by andreas.singraber

Hello!

Please note that the fast prediction mode is only supported as of VASP.6.4.0 or higher. Hence, you cannot refit with VASP.6.3.2 in such way that an ML_FF file suitable for fast prediction mode is generated. In addition, also the ML_FF file header mentioned on the Wiki was introduced in VASP.6.4.0.

Basically, the workflow to generate a "fast-prediction-mode"-capable ML_FF is to take your existing ML_AB database (from VASP.6.3.2 training) and run with VASP.6.4.0+ with the following INCAR tags present:

Code: Select all

ML_LMLFF = .TRUE.
ML_MODE  = refit    # Replaces ML_ISTART (do not use any more), "refit" sets ML_LFAST = .TRUE. automatically.
# Optionally more ML_ related tags...

Then, a new ML_FFN file should be generated. This file should contain a header which you can check for the value of the ML_LFAST tag (under Linux use this command: head -n 1 ML_FFN). Here is an example header (from VASP.6.5.0):

Code: Select all

ML_FF 0.2.4 binary { "date" : "2025-01-20T15:33:56.757", "ML_LFAST" : true, "ML_DESC_TYPE" :   0, "types" : [ "Li", "F", "Ca", "O" ], "training_structures" : 6, "local_reference_cfgs" : [ 12, 13, 11, 11 ], "descriptors" : [ 1856, 1856, 1856, 1856 ], "ML_IALGO_LINREG" : 4, "ML_RCUT1" :  8.0000E+00, "ML_RCUT2" :  5.0000E+00, "ML_W1" :  1.0000E-01, "ML_SION1" :  5.0000E-01, "ML_SION2" :  5.0000E-01, "ML_LMAX2" : 3, "ML_MRB1" : 12, "ML_MRB2" : 8, "ML_IWEIGHT" : 3, "ML_WTOTEN" :  1.0000E+00, "ML_WTIFOR" :  1.0000E+00, "ML_WTSIF" :  1.0000E+00 }

In addition, the ML_LOGFILE should also mention the selected ML_MODE and ML_LFAST values in its "MACHINE LEARNING SETTINGS" section. If you search for STATUS there should be a block describing a learning step where the actual refitting is done. A bit below you should also see a line starting with FFOUT where you can find the time stamp of the ML_FFN. This should match the time stamp given in the ML_FFN header. Here is an example (from VASP.6.5.0):

Code: Select all

...
--------------------------------------------------------------------------------
STATUS                  0  learning  3      T      F         0         0
SPRSC                   0         6         6 Li        12        12 F         13        13 Ca        11        11 O         11        11
REGRF                   0    4    1   0.00000000E+00   0.00000000E+00   0.00000000E+00   0.00000000E+00    2.08283763E+09   9.50257178E+04
NDESC                   0        48 Li      1808 F       1808 Ca      1808 O       1808
STDAB                   0   1.23917504E-03   8.55869920E-02   3.57372296E-01
ERR                     0   3.11887768E-04   5.01332550E-02   4.90157593E-01
BEEF                    0   0.00000000E+00   0.00000000E+00   0.00000000E+00   2.00000000E-03   0.00000000E+00   0.00000000E+00
SFF                     0   0.00000000E+00   0.00000000E+00   0.00000000E+00   0.00000000E+00   2.00000000E-03
--------------------------------------------------------------------------------
STATUS                  1  accurate  1      F      T         1         1
BEEF                    1   0.00000000E+00   0.00000000E+00   0.00000000E+00   2.00000000E-03   0.00000000E+00   0.00000000E+00
SFF                     1   4.40950083E-08   2.29713581E-09   1.99330699E-08   1.21395555E-16   2.00000000E-03
FFOUT                   1 2025-01-20T15:33:56.757
...

I hope that clarifies a bit what output to expect upon refitting... let me just add that I would highly recommend to upgrade if feasible in your case. VASP.6.3.2 is from mid-2022 and a lot of updates, features and bug fixes were included in the machine learning code since then.

All the best,
Andreas Singraber


Re: How to check if ML_FF refitting is successful?

Posted: Fri Jan 24, 2025 10:45 am
by akretschmer

Thank you, that clears it up. It would be great to add this information on the wiki. Specifically, these two pages mention using the fast prediction mode, but not the version requirement:

https://www.vasp.at/wiki/index.php/Mach ... ns:_Basics
https://www.vasp.at/wiki/index.php/Best ... rce_fields


Re: How to check if ML_FF refitting is successful?

Posted: Fri Jan 24, 2025 12:55 pm
by ahampel

Yes we will definitely add these information on the wiki. Thank you for bringing this up. I will now lock the topic. Please open a new one if you have any further questions.

Best,
Alex H.