<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Scrapbook (Posts about machine-learning)</title><link>https://scrapbook.netlify.app/</link><description></description><atom:link href="https://scrapbook.netlify.app/categories/machine-learning.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:non@existent.com"&gt;author&lt;/a&gt; </copyright><lastBuildDate>Fri, 16 Oct 2026 16:23:45 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>ZeoNet How-tos</title><link>https://scrapbook.netlify.app/posts/zeonet-how-tos.html</link><dc:creator>author</dc:creator><description>&lt;nav id="TOC" role="doc-toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#tutorials" id="toc-tutorials"&gt;Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#running_jobs_on_hpc_systems_using_shotgun" id="toc-running_jobs_on_hpc_systems_using_shotgun"&gt;Running jobs on HPC
systems using Shotgun&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#setup_on_group_server" id="toc-setup_on_group_server"&gt;Setup on group server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#setup_on_hpc" id="toc-setup_on_hpc"&gt;Setup on HPC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#submitting_jobs" id="toc-submitting_jobs"&gt;Submitting
jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#running_an_interactive_job_on_hpc_systems" id="toc-running_an_interactive_job_on_hpc_systems"&gt;Running an
interactive job on HPC systems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;h2 id="tutorials"&gt;Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Introduction to ZeoNet (slides SharePoint folder, &lt;a href="https://doi.org/10.1039/D3TA01911J"&gt;paper&lt;/a&gt;, &lt;a href="https://gitlab.com/baigroup/zeonet"&gt;GitLab repository&lt;/a&gt;), a
representation learning framework using convolutional neural networks
and 3D volumetric representations for predicting adsorption Henry in
more than 330k zeolites.&lt;/li&gt;
&lt;li&gt;Documentation to &lt;a href="https://pytorch.org/docs/stable/index.html"&gt;PyTorch&lt;/a&gt;, the main
library we used for deep learning tasks.&lt;/li&gt;
&lt;li&gt;Tutorials to &lt;a href="https://pymatgen.org/"&gt;Pymatgen&lt;/a&gt;, a robust
python library for materials analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="running_jobs_on_hpc_systems_using_shotgun"&gt;Running jobs on HPC
systems using Shotgun&lt;/h2&gt;
&lt;h3 id="setup_on_group_server"&gt;Setup on group server&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/Shotgun_job_management_system#Set_up_shotgun_on_group_server" title="wikilink"&gt;Set up shotgun on group server&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Complete Step 1 in the &lt;a href="https://scrapbook.netlify.app/posts/Shotgun_job_management_system#Basic_workflow" title="wikilink"&gt;Shotgun workflow&lt;/a&gt;. For our ZeoNet project, the
&lt;code&gt;local_job_root&lt;/code&gt; is &lt;code&gt;$HOME/projects/zeonet&lt;/code&gt;. The
&lt;code&gt;local_asset_dir&lt;/code&gt; is &lt;code&gt;$HOME/projects/zeonet/bin&lt;/code&gt;.
In the &lt;code&gt;local_job_root&lt;/code&gt;, clone the &lt;a href="https://gitlab.com/baigroup/zeonet"&gt;ZeoNet&lt;/a&gt; repository from the
&lt;a href="https://gitlab.com/baigroup/zeonet"&gt;GitLab repository&lt;/a&gt; to
the &lt;code&gt;local_asset_dir&lt;/code&gt;.
&lt;div class="sourceCode" id="cb1"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb1-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb1-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;mkdir&lt;/span&gt; &lt;span class="at"&gt;-p&lt;/span&gt; &lt;span class="va"&gt;$HOME&lt;/span&gt;/projects/zeonet &lt;span class="kw"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="bu"&gt;cd&lt;/span&gt; &lt;span class="va"&gt;$HOME&lt;/span&gt;/projects/zeonet&lt;/span&gt;
&lt;span id="cb1-2"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb1-2" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;shotgun&lt;/span&gt; new-project  &lt;span class="co"&gt;# and edit shotgun.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span id="cb1-3"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb1-3" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;git&lt;/span&gt; clone git@gitlab.com:baigroup/zeonet.git bin&lt;/span&gt;
&lt;span id="cb1-4"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb1-4" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;rm&lt;/span&gt; &lt;span class="at"&gt;-r&lt;/span&gt; bin/ML-Zeolites &lt;span class="co"&gt;# remove sample dataset files&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Create symbolic links for the dataset from the shared group
directory.
&lt;div class="sourceCode" id="cb2"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb2-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb2-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ln&lt;/span&gt; &lt;span class="at"&gt;-sf&lt;/span&gt; /home/user/NOBAK_projects/ML-Zeolites .&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Upload the &lt;code&gt;local_asset_dir&lt;/code&gt; to the HPC. Different HPCs
have their own file systems, and we first need to figure out an
appropriate filesystem location to be used as the primary location for
running HPC jobs. Take Unity as an example, we first SSH to Unity to
create a &lt;a href="https://docs.unity.rc.umass.edu/documentation/managing-files/hpc-workspace/"&gt;Scratch
Workspace&lt;/a&gt; (the command below will create
&lt;code&gt;/scratch/workspace/user_umass_edu-ABC&lt;/code&gt;) to host the work
directory. Edit &lt;code&gt;shotgun.yaml&lt;/code&gt; to specify this work directory
(e.g., &lt;code&gt;/scratch/workspace/user_umass_edu-ABC/zeonet&lt;/code&gt;) as
&lt;code&gt;job_root&lt;/code&gt;.
&lt;div class="sourceCode" id="cb3"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb3-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb3-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ssh&lt;/span&gt; unity ws_allocate ABC  &lt;span class="co"&gt;# For Unity only&lt;/span&gt;&lt;/span&gt;
&lt;span id="cb3-2"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb3-2" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;shotgun&lt;/span&gt; upload-asset &lt;span class="at"&gt;-t&lt;/span&gt; unity-24C-8G&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="setup_on_hpc"&gt;Setup on HPC&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;We need to verify dataset including CIF structure files, volumetric
grids HDF5 files, dataset split TXT files, and the zeolite property CSV
file existing on HPC. On HPC systems where directories can be shared
with the group, the target files usually already existed
(e.g., &lt;code&gt;/work/pi_pengbai_umass_edu/ML-Zeolites&lt;/code&gt; exist on
unity) and, if not, we need to rsync everything ourselves (make sure to
read step 4 of &lt;a href="https://scrapbook.netlify.app/posts/Shotgun_job_management_system#Basic_workflow" title="wikilink"&gt;Shotgun basic workflow&lt;/a&gt; and please contact
administrator then.&lt;/li&gt;
&lt;li&gt;SSH to the HPC. &lt;a href="https://scrapbook.netlify.app/posts/Install_Conda" title="wikilink"&gt;Install
Conda&lt;/a&gt; and create a new &lt;a href="https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-from-an-environment-yml-file"&gt;Conda
environment&lt;/a&gt; from the &lt;code&gt;environment-linux64-cuda121.txt&lt;/code&gt;
file.
&lt;div class="sourceCode" id="cb4"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb4-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb4-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ssh&lt;/span&gt; unity&lt;/span&gt;
&lt;span id="cb4-2"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb4-2" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="bu"&gt;cd&lt;/span&gt; /scratch/workspace/&lt;span class="va"&gt;$USER&lt;/span&gt;-ABC/zeonet &lt;span class="co"&gt;# For Unity&lt;/span&gt;&lt;/span&gt;
&lt;span id="cb4-3"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb4-3" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;module&lt;/span&gt; load conda/latest  &lt;span class="co"&gt;# The conda version may be different for other HPCs&lt;/span&gt;&lt;/span&gt;
&lt;span id="cb4-4"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb4-4" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;module&lt;/span&gt; load cuda/12.1&lt;/span&gt;
&lt;span id="cb4-5"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb4-5" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;conda&lt;/span&gt; env create &lt;span class="at"&gt;-f&lt;/span&gt; environment-linux64-cuda121.yml&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;The following steps must be done once. Since the dataset was already
put in the shared group directory (e.g.,
&lt;code&gt;/work/pi_pengbai_umass_edu/ML-Zeolites/&lt;/code&gt;), we only need to
create symbolic links.
&lt;div class="sourceCode" id="cb5"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb5-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb5-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ln&lt;/span&gt; &lt;span class="at"&gt;-sf&lt;/span&gt; /work/pi_pengbai_umass_edu/ML-Zeolites .&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="submitting_jobs"&gt;Submitting jobs&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Prepare the job submission script. The best practice is to write a
generic submission script and put it in the local asset directory (e.g.,
&lt;code&gt;$HOME/projects/zeonet/bin&lt;/code&gt;), and then create symbolic links
in each job directory:
&lt;div class="sourceCode" id="cb6"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb6-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb6-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ln&lt;/span&gt; &lt;span class="at"&gt;-sf&lt;/span&gt; ../bin/sub-zeonet.script .  &lt;span class="co"&gt;# Run in current directory, e.g., $HOME/projects/zeonet/BatchSize16-LR0.001-OptAdam&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Create a &lt;code&gt;config.yaml&lt;/code&gt; file. Refer to the configuration
files in &lt;code&gt;configs&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;Submit the job using Shotgun.
&lt;div class="sourceCode" id="cb7"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb7-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb7-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;shotgun&lt;/span&gt; submit &lt;span class="at"&gt;-c&lt;/span&gt; 1 &lt;span class="at"&gt;-g&lt;/span&gt; 1 &lt;span class="at"&gt;-n&lt;/span&gt; 1 &lt;span class="at"&gt;-t&lt;/span&gt; 336 &lt;span class="at"&gt;-e&lt;/span&gt; 20G &lt;span class="at"&gt;-r&lt;/span&gt; unity-24C-8G &lt;span class="at"&gt;-j&lt;/span&gt; ../bin/sub-zeonet-unity.script&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="running_an_interactive_job_on_hpc_systems"&gt;Running an
interactive job on HPC systems&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;With an interactive job, we request time and resources to work on a
compute node directly. In this way, we can interact with applications,
execute scripts, or run other commands in real time within an HPC
environment, which are convenient for debugging, designing workflows,
and doing small tests. First SSH to the HPC and then request an
interactive job.
&lt;div class="sourceCode" id="cb8"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb8-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb8-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="fu"&gt;ssh&lt;/span&gt; unity&lt;/span&gt;
&lt;span id="cb8-2"&gt;&lt;a href="https://scrapbook.netlify.app/posts/zeonet-how-tos.html#cb8-2" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;srun&lt;/span&gt; &lt;span class="at"&gt;--nodes&lt;/span&gt;&lt;span class="op"&gt;=&lt;/span&gt;1 &lt;span class="at"&gt;--ntasks-per-node&lt;/span&gt;&lt;span class="op"&gt;=&lt;/span&gt;1 &lt;span class="at"&gt;--cpus-per-task&lt;/span&gt;&lt;span class="op"&gt;=&lt;/span&gt;1 &lt;span class="at"&gt;--gpus&lt;/span&gt;&lt;span class="op"&gt;=&lt;/span&gt;1 time=1:00:00 &lt;span class="at"&gt;--job-name&lt;/span&gt; ML &lt;span class="at"&gt;--partition&lt;/span&gt; ials-gpu &lt;span class="at"&gt;--pty&lt;/span&gt; bash  &lt;span class="co"&gt;# For Unity&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>machine-learning</category><category>research</category><guid>https://scrapbook.netlify.app/posts/zeonet-how-tos.html</guid><pubDate>Mon, 11 Mar 2024 17:04:09 GMT</pubDate></item><item><title>Machine-Learning Forcefields</title><link>https://scrapbook.netlify.app/posts/machine-learning-forcefields.html</link><dc:creator>author</dc:creator><description>&lt;nav id="TOC" role="doc-toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#cambridge_gabor_csanyi" id="toc-cambridge_gabor_csanyi"&gt;Cambridge Gabor Csanyi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#harvard_boris_kozinsky" id="toc-harvard_boris_kozinsky"&gt;Harvard Boris Kozinsky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#m3gnet" id="toc-m3gnet"&gt;M3GNet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#deepmd_kit" id="toc-deepmd_kit"&gt;DeePMD-kit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#miscellaneous_1" id="toc-miscellaneous_1"&gt;Miscellaneous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#deepmd_notes" id="toc-deepmd_notes"&gt;DeePMD Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;h3 id="cambridge_gabor_csanyi"&gt;Cambridge Gabor Csanyi&lt;/h3&gt;
&lt;h4 id="mace"&gt;MACE&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ACEsuit/mace"&gt;https://github.com/ACEsuit/mace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mace-docs.readthedocs.io/_/downloads/en/latest/pdf/"&gt;https://mace-docs.readthedocs.io/_/downloads/en/latest/pdf/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Batatia, I.; Batzner, S.; Kovács, D. P.; Musaelian, A.; Simm, G. N.
C.; Drautz, R.; Ortner, C.; Kozinsky, B.; Csányi, G. The Design Space of
E(3)-Equivariant Atom-Centered Interatomic Potentials,' &lt;a href="https://www.nature.com/articles/s42256-024-00956-x"&gt;Nat. Mach.
Intell. 7 56-67 (2025)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Batatia, I.; Kovacs, D. P.; Simm, G.; Ortner, C.; Csanyi, G. MACE:
Higher Order Equivariant Message Passing Neural Networks for Fast and
Accurate Force Fields,' &lt;a href="https://openreview.net/forum?id=YPpSngE-ZU"&gt;Adv. Neural Inf.
Process. Syst. 35 11423–11436 (2022)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="quip"&gt;QUIP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/libAtoms/QUIP"&gt;https://github.com/libAtoms/QUIP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Csányi, G.; Winfield, S.; Kermode, J. R.; De Vita, A.; Comisso, A.;
Bernstein, N.; Payne, M. C. Expressive Programming for Computational
Physics in Fortran 95+,' &lt;a href="https://kclpure.kcl.ac.uk/portal/en/publications/expressive-programming-for-computational-physics-in-fortran-950"&gt;IoP
Comput. Phys. Newsletter Spring 2007 (2007)&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Bartók, A. P., Payne, M. C., Kondor, R., &amp;amp; Csányi, G. Gaussian
approximation potentials: The accuracy of quantum mechanics, without the
electrons,' &lt;a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.104.136403"&gt;Phys.
Rev. Lett. 104 136403 (2010)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="miscellaneous"&gt;Miscellaneous&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Deringer, V. L., &amp;amp; Csányi, G. Gaussian Approximation Potentials:
The Accuracy of Quantum Mechanics, without the Electrons,' &lt;a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.104.136403"&gt;Phys.
Rev. Lett. 104 136403 (2010)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Bartók, A. P., Kondor, R., &amp;amp; Csányi, G. On representing chemical
environments,' &lt;a href="https://journals.aps.org/prb/abstract/10.1103/PhysRevB.87.184115"&gt;Phys.
Rev. B 87 219902 (2013)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="harvard_boris_kozinsky"&gt;Harvard Boris Kozinsky&lt;/h3&gt;
&lt;h4 id="flare"&gt;FLARE&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mir-group/flare"&gt;https://github.com/mir-group/flare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vandermause, J., Torrisi, S.B., Batzner, S. et al. On-the-fly active
learning of interpretable Bayesian force fields for atomistic rare
events. &lt;a href="https://doi.org/10.1038/s41524-020-0283-z"&gt;npj Comput
Mater 6, 20 (2020)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Vandermause, J., Xie, Y., Lim, J.S. et al. Active learning of
reactive Bayesian force fields applied to heterogeneous catalysis
dynamics of H/Pt. &lt;a href="https://doi.org/10.1038/s41467-022-32294-0"&gt;Nat Commun 13, 5183
(2022)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="nequip"&gt;NequIP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mir-group/nequip"&gt;https://github.com/mir-group/nequip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Batzner, S., Musaelian, A., Sun, L. et al. E(3)-equivariant graph
neural networks for data-efficient and accurate interatomic potentials.
&lt;a href="https://doi.org/10.1038/s41467-022-29939-5"&gt;Nat Commun 13, 2453
(2022).&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="allegro"&gt;Allegro&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mir-group/allegro"&gt;https://github.com/mir-group/allegro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Musaelian, A., Batzner, S., Johansson, A. et al. Learning local
equivariant representations for large-scale atomistic dynamics. &lt;a href="https://doi.org/10.1038/s41467-023-36329-y"&gt;Nat Commun 14, 579
(2023)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="m3gnet"&gt;M3GNet&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/materialsvirtuallab/matgl"&gt;https://github.com/materialsvirtuallab/matgl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/materialsvirtuallab/maml"&gt;https://github.com/materialsvirtuallab/maml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chen, C., Ong, S.P. A universal graph deep learning interatomic
potential for the periodic table. &lt;a href="https://doi.org/10.1038/s43588-022-00349-3"&gt;Nat Comput Sci 2,
718–728 (2022).&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deepmd_kit"&gt;DeePMD-kit&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/deepmodeling/deepmd-kit"&gt;https://github.com/deepmodeling/deepmd-kit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wang, H.; Zhang, L.; Han, J.; E, W. DeePMD-kit: A Deep Learning
Package for Many-Body Potential Energy Representation and Molecular
Dynamics, &lt;a href="https://doi.org/10.1016/j.cpc.2018.03.016"&gt;Comput.
Phys. Commun. 228 178-184 (2018)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Zeng, J.; Zhang, D.; Lu, D.; Mo, P.; Li, Z.; Chen, Y.; Rynik, M.;
Huang, L.; Li, Z.; Shi, S.; Wang, Y.; Ye, H.; Tuo, P.; Yang, J.; Ding,
Y.; Li, Y.; Tisi, D.; Zeng, Q.; Bao, H.; Xia, Y., et al. DeePMD-kit v2:
A Software Package for Deep Potential Models, &lt;a href="https://doi.org/10.1063/5.0155600"&gt;J. Chem. Phys. 159 054801
(2023)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Zeng, J.; Zhang, D.; Peng, A.; Zhang, X.; He, S.; Wang, Y.; Liu, X.;
Bi, H.; Li, Y.; Cai, C.; Zhang, C.; Du, Y.; Zhu, J.-X.; Mo, P.; Huang,
Z.; Zeng, Q.; Shi, S.; Qin, X.; Yu, Z.; Luo, C., et al. DeePMD-kit v3: A
Multiple-Backend Framework for Machine Learning Potentials. &lt;a href="https://doi.org/10.1021/acs.jctc.5c00340"&gt;J. Chem. Theory Comput.
21, 4375–4385 (2025)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepmodeling/dpgen"&gt;https://github.com/deepmodeling/dpgen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepmodeling/dpgen2"&gt;https://github.com/deepmodeling/dpgen2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zhang, Y.; Wang, H.; Chen, W.; Zeng, J.; Zhang, L.; Wang, H.; E, W.
DP-GEN: A concurrent learning platform for the generation of reliable
deep learning based potential energy models,' &lt;a href="https://doi.org/10.1016/j.cpc.2020.107206"&gt;Comput. Phys. Commun.
253, 107206 (2020)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="miscellaneous_1"&gt;Miscellaneous&lt;/h3&gt;
&lt;h4 id="behler_parinello"&gt;Behler-Parinello&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Physical review letters, 98(14):146401, 2007&lt;/li&gt;
&lt;li&gt;Physical Chemistry Chemical Physics, 13(40):17930–17955, 2011&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="ani_1"&gt;ANI-1&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Chemical science, 8(4):3192–3203, 2017&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="snap"&gt;SNAP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Journal of Computational Physics, 285:316–330, 2015&lt;/li&gt;
&lt;li&gt;Journal of chemical physics, 148(24):241721, 2018&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="mtp"&gt;MTP&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Multiscale Modeling &amp;amp; Simulation, 14(3):1153–1173, 2016&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="ace"&gt;ACE&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Physical Review B, 99(1):014104, 2019.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deepmd_notes"&gt;DeePMD Notes&lt;/h3&gt;
&lt;p&gt;1. A good starting point is to run the water examples. There are JSON
input files available for various descriptors.&lt;/p&gt;
&lt;p&gt;📦 &lt;a href="https://github.com/deepmodeling/deepmd-kit/tree/master/examples/water"&gt;https://github.com/deepmodeling/deepmd-kit/tree/master/examples/water&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;se_e2_a&lt;/code&gt; should be one of the standard descriptors to
try. It is short for the Deep Potential Smooth Edition (DeepPot-SE),
which is constructed from the angular and radial features of atomic
configurations. Later model frameworks, such as
&lt;code&gt;dpa-1, 2, 3&lt;/code&gt;, stand for Deep Potential models with an
attention mechanism using the descriptor &lt;code&gt;se_atten&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;2. &lt;code&gt;sel&lt;/code&gt; is an important parameter, which means the
expected maximum number of the neighbors of a type of atom. DeePMD-kit
will allocate memory according to &lt;code&gt;sel&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;📖 &lt;a href="https://docs.deepmodeling.com/projects/deepmd/en/stable/model/sel.html"&gt;https://docs.deepmodeling.com/projects/deepmd/en/stable/model/sel.html&lt;/a&gt;&lt;/p&gt;
&lt;div class="sourceCode" id="cb1"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb1-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#cb1-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;dp&lt;/span&gt; &lt;span class="at"&gt;--pt&lt;/span&gt; neighbor-stat &lt;span class="at"&gt;-s&lt;/span&gt; data &lt;span class="at"&gt;-r&lt;/span&gt; 6.0 &lt;span class="at"&gt;-t&lt;/span&gt; O H&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;3. There is no available option to save the best model from the
validation performance currently, Related posts as following:&lt;/p&gt;
&lt;p&gt;💬 &lt;a href="https://github.com/deepmodeling/deepmd-kit/discussions/3728"&gt;How
to save the best model on validation data during model training?
(Unanswered)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;💬 &lt;a href="https://github.com/deepmodeling/deepmd-kit/discussions/2713"&gt;Save
model with best validation Error&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is a training parameter &lt;code&gt;max_ckpt_keep&lt;/code&gt; can change
the latest maximum number of the checkpoints to keep. We can adjust this
larger and check the learning curve output data to choose the best model
from validation performance metrics.&lt;/p&gt;
&lt;p&gt;4. &lt;code&gt;dpdata&lt;/code&gt; can be used to perform the conversion and
generate the npy data, which is the recommended format in DeepMD, with
the following command:&lt;/p&gt;
&lt;div class="sourceCode" id="cb2"&gt;&lt;pre class="sourceCode bash"&gt;&lt;code class="sourceCode bash"&gt;&lt;span id="cb2-1"&gt;&lt;a href="https://scrapbook.netlify.app/posts/machine-learning-forcefields.html#cb2-1" aria-hidden="true" tabindex="-1"&gt;&lt;/a&gt;&lt;span class="ex"&gt;dpdata&lt;/span&gt; OUTCAR &lt;span class="at"&gt;-i&lt;/span&gt; vasp/outcar &lt;span class="at"&gt;-o&lt;/span&gt; deepmd/npy &lt;span class="at"&gt;-O&lt;/span&gt; deepmd_data&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If the training input is from single point energy calculations, there
is one post from the discussion forum, but it seems they did not give a
clear reply.&lt;/p&gt;
&lt;p&gt;💬 &lt;a href="https://github.com/deepmodeling/deepmd-kit/discussions/3416"&gt;DeepMD
training model with Single Point energy calculations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can simply concatenate the &lt;code&gt;OUTCAR&lt;/code&gt; files (e.g.,
&lt;code&gt;OUTCAR_1&lt;/code&gt;, &lt;code&gt;OUTCAR_2&lt;/code&gt;, …) into a single OUTCAR
and run this command to produce a dataset as if dealing with the AIMD
&lt;code&gt;OUTCAR&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;However, it assumes that all images have the same atom types and
counts (for example, AIMD &lt;code&gt;OUTCAR&lt;/code&gt; outputs). This may not be
valid for cases where the number and order of elements vary across
different images. In that case, we should convert one-by-one with dpdata
on the single point energy &lt;code&gt;OUTCAR&lt;/code&gt;. The following is a
related to-do enhancement from the deepmd-kit:&lt;/p&gt;
&lt;p&gt;💬 &lt;a href="https://github.com/deepmodeling/deepmd-kit/issues/4745"&gt;Support
batched inference with different natoms&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5. There is a provided script to plot the learning curve log data
from their documentation.&lt;/p&gt;
&lt;p&gt;📖 &lt;a href="https://tutorials.deepmodeling.com/en/latest/Tutorials/DeePMD-kit/learnDoc/Handson-Tutorial%28v2.0.3%29.html#train-process"&gt;https://tutorials.deepmodeling.com/en/latest/Tutorials/DeePMD-kit/learnDoc/Handson-Tutorial%28v2.0.3%29.html#train-process&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. There is no limit on the radius cutoff to be less than half box
size, which is explained as following:&lt;/p&gt;
&lt;p&gt;📖 &lt;a href="https://docs.deepmodeling.com/projects/deepmd/en/stable/troubleshooting/howtoset_rcut.html"&gt;https://docs.deepmodeling.com/projects/deepmd/en/stable/troubleshooting/howtoset_rcut.html&lt;/a&gt;&lt;/p&gt;</description><category>forcefield</category><category>machine-learning</category><category>molecular-simulation</category><category>research</category><guid>https://scrapbook.netlify.app/posts/machine-learning-forcefields.html</guid><pubDate>Wed, 06 Mar 2024 20:06:32 GMT</pubDate></item></channel></rss>