From f5a0437c7f5510e4c081d5461bc086a82b1c7658 Mon Sep 17 00:00:00 2001 From: Mancn Date: Tue, 19 Mar 2024 20:30:50 +0800 Subject: [PATCH 01/15] Replace quick_start.ipynb with a new version. Aligned English tutorial with Chinese version for consistency in structure and content. --- doc/getting-started/quick_start.ipynb | 1300 +------------------------ 1 file changed, 1 insertion(+), 1299 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index ec939265fd..9946eb2ea5 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,1299 +1 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", - "metadata": {}, - "source": [ - "# DeePMD-kit Quick Start Tutorial\n", - "\n", - "\"Open" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "85b62e3d-dfae-402f-96a5-5672367d2d17", - "metadata": {}, - "source": [ - "**DeePMD-kit is a deep learning package for many-body potential energy representation and molecular dynamics.**\n", - "\n", - "> This tutorial can be directly run on **Bohrium Notebook**, you can click the `Open in Bohrium` button above to quickly run this document in Bohrium.\n", - ">\n", - "> After opening Bohrium Notebook, click the button `connect`, and choose `deepmd-kit:2.2.1-cuda11.6-notebook` as image and `c4_m8_cpu` as computing resources. Wait a minute and you can get started.\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f4416190-479c-4b2f-9e08-33690bc4941d", - "metadata": {}, - "source": [ - "## Task\n", - "\n", - "> **Mastering the paradigm cycle of using DeePMD-kit to establish deep potential molecular dynamics models, and following a complete case to learn how to apply it to molecular dynamics tasks.**\n", - "\n", - "By the end of this tutorial, you will be able to:\n", - "\n", - "* Prepare the formataive dataset and running scripts for training with DeePMD-kit;\n", - "* Train, freeze, and test DeePMD-kit models;\n", - "* Use DeePMD-kit in LAMMPS for calculations;\n", - "\n", - "Work through this tutorial. It will take you 20 minutes, max!" - ] - }, - { - "cell_type": "markdown", - "id": "8e6587cb-ba6e-42ba-a139-0595fc7f79d7", - "metadata": {}, - "source": [ - "## Table of contents\n", - "\n", - "* Get tutorial data via git\n", - "* General Introduction\n", - "* Data preparation\n", - "* Prepare input script\n", - "* Train a model\n", - "* Freeze a model\n", - "* Test a model\n", - "* Run MD with LAMMPS" - ] - }, - { - "cell_type": "markdown", - "id": "adc6bbb1-a51b-421d-88f6-eb8eef79f432", - "metadata": {}, - "source": [ - "## Get tutorial data via git" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "f493fdb7-7844-4152-8b8e-a4d9d1da58ff", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'colombo-academy-tutorials'...\n", - "remote: Enumerating objects: 7164, done.\u001b[K\n", - "remote: Counting objects: 100% (174/174), done.\u001b[K\n", - "remote: Compressing objects: 100% (138/138), done.\u001b[K\n", - "remote: Total 7164 (delta 78), reused 71 (delta 32), pack-reused 6990\u001b[K\n", - "Receiving objects: 100% (7164/7164), 45.31 MiB | 3.85 MiB/s, done.\n", - "Resolving deltas: 100% (3378/3378), done.\n", - "Updating files: 100% (185/185), done.\n" - ] - } - ], - "source": [ - "! if ! [ -e colombo-academy-tutorials ];then git clone https://gitee.com/deepmodeling/colombo-academy-tutorials.git;fi;" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f98ce5f8-fb36-4e00-962f-028011801a53", - "metadata": {}, - "source": [ - "## General Introduction\n", - "This tutorial will introduce you to the basic usage of the DeePMD-kit, taking a gas phase methane molecule as an example. [DeePMD-kit's documentation](../index.rst) is recommended as the complete reference.\n", - "\n", - "The DP model is generated using the DeePMD-kit package (v2.1.5). The training data is converted into the format of DeePMD-kit using a tool named dpdata (v0.2.14). \n", - "\n", - "Details of dpdata can be found in [the dpdata documentation](https://docs.deepmodeling.com/projects/dpdata). \n", - "\n", - "We've prepared initial data for $CH_4$ for you, and put them in the folder `colombo-academy-tutorials/DeePMD-kit/00.data`" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "cfbbb9cc-2d7a-40f6-b384-46c698b77162", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "prefix_path = os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "id": "209c5dd7-983a-468e-9406-652ade04be91", - "metadata": {}, - "source": [ - "Folder `abacus_md` is obtained by performing ab-initio molecular dynamics with ABACUS. Detailed instructions on ABACUS can be found in its [document](https://abacus.deepmodeling.com/). " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "533a4436-803b-45dd-91a3-2813d118df18", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['C_ONCV_PBE-1.2.upf',\n", - " 'C_gga_6au_100Ry_2s2p1d.orb',\n", - " 'H_ONCV_PBE-1.2.upf',\n", - " 'H_gga_6au_100Ry_2s1p.orb',\n", - " 'INPUT',\n", - " 'KPT',\n", - " 'OUT.ABACUS',\n", - " 'STRU']" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "os.chdir(\n", - " os.path.join(prefix_path, \"colombo-academy-tutorials\", \"DeePMD-kit\", \"00.data\")\n", - ")\n", - "os.listdir(\"abacus_md\")" - ] - }, - { - "cell_type": "markdown", - "id": "f630966f-379f-4140-8ce9-4df19f7c1cc6", - "metadata": {}, - "source": [ - "## Data preparation\n", - "\n", - "The training data utilized by DeePMD-kit comprises essential information such as atom type, simulation box, atom coordinate, atom force, system energy, and virial. A snapshot of a molecular system that includes this data is called a `frame`. Multiple frames with the same number of atoms and atom types make up a `system` of data. For instance, a molecular dynamics trajectory can be converted into a system of data, with each time step corresponding to a frame in the system.\n", - "\n", - "To simplify the process of converting data generated by popular simulation software like CP2K, Gaussian, Quantum-Espresso, ABACUS, and LAMMPS into the compressed format of DeePMD-kit, we offer a convenient tool called `dpdata`.\n" - ] - }, - { - "cell_type": "markdown", - "id": "f971d1d5-a90d-499f-92f2-b3c31f3e70ab", - "metadata": {}, - "source": [ - "Next, the data from AIMD is splited randomly as training and validation data." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "647bf5c0-4df1-4510-8444-51774295adc7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# the data contains 201 frames\n", - "# the training data contains 161 frames\n", - "# the validation data contains 40 frames\n" - ] - } - ], - "source": [ - "import dpdata\n", - "import numpy as np\n", - "\n", - "# load data of abacus/md format\n", - "data = dpdata.LabeledSystem(\"abacus_md\", fmt=\"abacus/md\")\n", - "print(\"# the data contains %d frames\" % len(data))\n", - "\n", - "# random choose 40 index for validation_data\n", - "rng = np.random.default_rng()\n", - "index_validation = rng.choice(201, size=40, replace=False)\n", - "\n", - "# other indexes are training_data\n", - "index_training = list(set(range(201)) - set(index_validation))\n", - "data_training = data.sub_system(index_training)\n", - "data_validation = data.sub_system(index_validation)\n", - "\n", - "# all training data put into directory:\"training_data\"\n", - "data_training.to_deepmd_npy(\"training_data\")\n", - "\n", - "# all validation data put into directory:\"validation_data\"\n", - "data_validation.to_deepmd_npy(\"validation_data\")\n", - "\n", - "print(\"# the training data contains %d frames\" % len(data_training))\n", - "print(\"# the validation data contains %d frames\" % len(data_validation))" - ] - }, - { - "cell_type": "markdown", - "id": "98719865-ab3d-4440-8c14-78a1c253c3a6", - "metadata": {}, - "source": [ - "As you can see, 161 frames are picked as training data, and the other 40 frames are validation dat." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "a999f41b-e343-4dc2-8499-84fee6e52221", - "metadata": {}, - "source": [ - "The DeePMD-kit adopts a compressed data format. All training data should first be converted into this format and can then be used by DeePMD-kit. The data format is explained in detail in the DeePMD-kit manual that can be found in [the DeePMD-kit Data Introduction](../data/index.md)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e5befaf5-c464-4e8f-8544-a2634f5fd1d2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[01;34mtraining_data\u001b[00m\n", - "├── \u001b[01;34mset.000\u001b[00m\n", - "│   ├── box.npy\n", - "│   ├── coord.npy\n", - "│   ├── energy.npy\n", - "│   ├── force.npy\n", - "│   └── virial.npy\n", - "├── type.raw\n", - "└── type_map.raw\n", - "\n", - "1 directory, 7 files\n" - ] - } - ], - "source": [ - "! tree training_data" - ] - }, - { - "cell_type": "markdown", - "id": "99770e51-4d9e-44db-bb93-1c7061c8862c", - "metadata": {}, - "source": [ - "Let's have a look at `type.raw`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a686585c-3e5b-4a5c-9cc7-4db7759b74b2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "0\n", - "0\n", - "0\n", - "1\n" - ] - } - ], - "source": [ - "! cat training_data/type.raw" - ] - }, - { - "cell_type": "markdown", - "id": "b5357cc5-9cdd-4c52-a611-a84cee739fb0", - "metadata": {}, - "source": [ - "This tells us there are 5 atoms in this example, 4 atoms represented by type \"0\", and 1 atom represented by type \"1\".\n", - "Sometimes one needs to map the integer types to atom name. The mapping can be given by the file `type_map.raw`" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "6216f02d-3a21-481f-99da-3f23b438a7c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H\n", - "C\n" - ] - } - ], - "source": [ - "! cat training_data/type_map.raw" - ] - }, - { - "cell_type": "markdown", - "id": "1196aa0f-22c5-4b96-8640-c82068fa7828", - "metadata": {}, - "source": [ - "This tells us the type \"0\" is named by \"H\", and the type \"1\" is named by \"C\".\n", - "\n", - "More detailed doc about Data conversion can be found [here](../data/data-conv.md)." - ] - }, - { - "cell_type": "markdown", - "id": "ac6c969b-10cb-49f0-9b84-7dc9ffa38c61", - "metadata": {}, - "source": [ - "## Prepare input script \n", - "Once the data preparation is done, we can go on with training. Now go to the training directory" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f0b2fa6b-81c2-41ec-b29e-37ff1f6e3b31", - "metadata": {}, - "outputs": [], - "source": [ - "os.chdir(\n", - " os.path.join(prefix_path, \"colombo-academy-tutorials\", \"DeePMD-kit\", \"01.train\")\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "0a4c680a-abcf-40b9-b00e-fa4615aa91b9", - "metadata": {}, - "source": [ - "DeePMD-kit requires a `json` format file to specify parameters for training. \n", - "\n", - "In the model section, the parameters of embedding and fitting networks are specified.\n", - "```json\n", - "\"model\":{\n", - " \"type_map\": [\"H\", \"C\"], \n", - " \"descriptor\":{\n", - " \"type\": \"se_e2_a\", \n", - " \"rcut\": 6.00, \n", - " \"rcut_smth\": 0.50, \n", - " \"sel\": \"auto\", \n", - " \"neuron\": [25, 50, 100], \n", - " \"resnet_dt\": false,\n", - " \"axis_neuron\": 16, \n", - " \"seed\": 1,\n", - " \"_comment\": \"that's all\"\n", - " },\n", - " \"fitting_net\":{\n", - " \"neuron\": [240, 240, 240], \n", - " \"resnet_dt\": true,\n", - " \"seed\": 1,\n", - " \"_comment\": \"that's all\"\n", - " },\n", - " \"_comment\": \"that's all\"'\n", - "},\n", - "```\n", - "The explanation for some of the parameters is as follows:\n", - "\n", - "| Parameter | Expiation |\n", - "| ------------------------ | ------------------------------------------------------------ |\n", - "| type_map | *the* *name* *of* *each* *type* *of* *atom* |\n", - "| descriptor > type | *the* *type* *of* *descriptor* |\n", - "| descriptor > rcut | *cut-off* *radius* |\n", - "| descriptor > rcut_smth | *where* *the* *smoothing* *starts* |\n", - "| descriptor > sel | *the* *maximum* *number* *of* *type* *i* *atoms* *in* *the* *cut-off* *radius* |\n", - "| descriptor > neuron | *size* *of* *the* *embedding* *neural* *network* |\n", - "| descriptor > axis_neuron | *the* *size* *of* *the* *submatrix* *of* *G* *(embedding* *matrix)* |\n", - "| fitting_net > neuron | *size* *of* *the* *fitting* *neural* *network* |\n", - "\n", - "The `se_e2_a` descriptor is used to train the DP model. The item neurons set the size of the descriptors and fitting network to [25, 50, 100] and [240, 240, 240], respectively. The components in local environment to smoothly go to zero from 0.5 to 6 Å.\n", - "\n", - "The following are the parameters that specify the learning rate and loss function.\n", - "```json\n", - " \"learning_rate\" :{\n", - " \"type\": \"exp\",\n", - " \"decay_steps\": 50,\n", - " \"start_lr\": 0.001, \n", - " \"stop_lr\": 3.51e-8,\n", - " \"_comment\": \"that's all\"\n", - " },\n", - " \"loss\" :{\n", - " \"type\": \"ener\",\n", - " \"start_pref_e\": 0.02,\n", - " \"limit_pref_e\": 1,\n", - " \"start_pref_f\": 1000,\n", - " \"limit_pref_f\": 1,\n", - " \"start_pref_v\": 0,\n", - " \"limit_pref_v\": 0,\n", - " \"_comment\": \"that's all\"\n", - " },\n", - "```\n", - "In the loss function, `pref_e` increases from 0.02 to 1, and `pref_f` decreases from 1000 to 1 progressively, which means that the force term dominates at the beginning, while energy and virial terms become important at the end. This strategy is very effective and reduces the total training time. `pref_v` is set to 0 , indicating that no virial data are included in the training process. The starting learning rate, stop learning rate, and decay steps are set to 0.001, 3.51e-8, and 50, respectively. The model is trained for 10000 steps.\n", - "\n", - "The training parameters are given in the following\n", - "```json\n", - " \"training\" : {\n", - " \"training_data\": {\n", - " \"systems\": [\"../00.data/training_data\"], \n", - " \"batch_size\": \"auto\", \n", - " \"_comment\": \"that's all\"\n", - " },\n", - " \"validation_data\":{\n", - " \"systems\": [\"../00.data/validation_data/\"],\n", - " \"batch_size\": \"auto\", \n", - " \"numb_btch\": 1,\n", - " \"_comment\": \"that's all\"\n", - " },\n", - " \"numb_steps\": 10000, \n", - " \"seed\": 10,\n", - " \"disp_file\": \"lcurve.out\",\n", - " \"disp_freq\": 200,\n", - " \"save_freq\": 10000,\n", - " },\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "7b0edb0f-df47-4e6c-8c37-5f32c4bd6b39", - "metadata": {}, - "source": [ - "More detailed docs about Data conversion can be found [here](../data/data-conv.md)." - ] - }, - { - "cell_type": "markdown", - "id": "bafe20b8-3bde-403c-ae42-b68ba5f29703", - "metadata": {}, - "source": [ - "## Train a model\n", - "After the training script is prepared, we can start the training with DeePMD-kit by simply running" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e04a05a3-ccac-474b-bc24-58fbf20b9ffe", - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "non-resource variables are not supported in the long term\n", - "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "WARNING:root:Environment variable KMP_BLOCKTIME is empty. Use the default value 0\n", - "WARNING:root:Environment variable KMP_AFFINITY is empty. Use the default value granularity=fine,verbose,compact,1,0\n", - "/opt/deepmd-kit-2.2.1/lib/python3.10/importlib/__init__.py:169: UserWarning: The NumPy module was reloaded (imported a second time). This can in some cases result in small but subtle issues and is discouraged.\n", - " _bootstrap._exec(spec, module)\n", - "DEEPMD INFO Calculate neighbor statistics... (add --skip-neighbor-stat to skip this step)\n", - "2023-04-20 23:35:59.335932: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:35:59.335979: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", - "OMP: Info #155: KMP_AFFINITY: Initial OS proc set respected: 0-7\n", - "OMP: Info #216: KMP_AFFINITY: decoding x2APIC ids.\n", - "OMP: Info #216: KMP_AFFINITY: cpuid leaf 11 not supported.\n", - "OMP: Info #216: KMP_AFFINITY: decoding legacy APIC ids.\n", - "OMP: Info #157: KMP_AFFINITY: 8 available OS procs\n", - "OMP: Info #158: KMP_AFFINITY: Uniform topology\n", - "OMP: Info #287: KMP_AFFINITY: topology layer \"LL cache\" is equivalent to \"socket\".\n", - "OMP: Info #192: KMP_AFFINITY: 1 socket x 4 cores/socket x 2 threads/core (4 total cores)\n", - "OMP: Info #218: KMP_AFFINITY: OS proc to physical thread map:\n", - "OMP: Info #172: KMP_AFFINITY: OS proc 0 maps to socket 0 core 0 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 1 maps to socket 0 core 0 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 2 maps to socket 0 core 1 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 3 maps to socket 0 core 1 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 4 maps to socket 0 core 2 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 5 maps to socket 0 core 2 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 6 maps to socket 0 core 3 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 7 maps to socket 0 core 3 thread 1 \n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 140 thread 1 bound to OS proc set 2\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 142 thread 2 bound to OS proc set 4\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 144 thread 4 bound to OS proc set 1\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 143 thread 3 bound to OS proc set 6\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 145 thread 5 bound to OS proc set 3\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 146 thread 6 bound to OS proc set 5\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 147 thread 7 bound to OS proc set 7\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 148 thread 8 bound to OS proc set 0\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 139 thread 9 bound to OS proc set 2\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 149 thread 10 bound to OS proc set 4\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 150 thread 11 bound to OS proc set 6\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 151 thread 12 bound to OS proc set 1\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 152 thread 13 bound to OS proc set 3\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 153 thread 14 bound to OS proc set 5\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 154 thread 15 bound to OS proc set 7\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 155 thread 16 bound to OS proc set 0\n", - "DEEPMD INFO training data with min nbor dist: 1.045920568611028\n", - "DEEPMD INFO training data with max nbor size: [4 1]\n", - "DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n", - "DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n", - "DEEPMD INFO | | | | ___ ___ | |__) || \\ / || | | | ______ | | __ _ | |_ \n", - "DEEPMD INFO | | | | / _ \\ / _ \\| ___/ | |\\/| || | | ||______|| |/ /| || __|\n", - "DEEPMD INFO | |__| || __/| __/| | | | | || |__| | | < | || |_ \n", - "DEEPMD INFO |_____/ \\___| \\___||_| |_| |_||_____/ |_|\\_\\|_| \\__|\n", - "DEEPMD INFO Please read and cite:\n", - "DEEPMD INFO Wang, Zhang, Han and E, Comput.Phys.Comm. 228, 178-184 (2018)\n", - "DEEPMD INFO installed to: /home/conda/feedstock_root/build_artifacts/deepmd-kit_1678943793317/work/_skbuild/linux-x86_64-3.10/cmake-install\n", - "DEEPMD INFO source : v2.2.1\n", - "DEEPMD INFO source brach: HEAD\n", - "DEEPMD INFO source commit: 3ac8c4c7\n", - "DEEPMD INFO source commit at: 2023-03-16 12:33:24 +0800\n", - "DEEPMD INFO build float prec: double\n", - "DEEPMD INFO build variant: cuda\n", - "DEEPMD INFO build with tf inc: /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/include;/opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/../../../../include\n", - "DEEPMD INFO build with tf lib: \n", - "DEEPMD INFO ---Summary of the training---------------------------------------\n", - "DEEPMD INFO running on: bohrium-14076-1013950\n", - "DEEPMD INFO computing device: cpu:0\n", - "DEEPMD INFO CUDA_VISIBLE_DEVICES: unset\n", - "DEEPMD INFO Count of visible GPU: 0\n", - "DEEPMD INFO num_intra_threads: 0\n", - "DEEPMD INFO num_inter_threads: 0\n", - "DEEPMD INFO -----------------------------------------------------------------\n", - "DEEPMD INFO ---Summary of DataSystem: training -----------------------------------------------\n", - "DEEPMD INFO found 1 system(s):\n", - "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", - "DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n", - "DEEPMD INFO --------------------------------------------------------------------------------------\n", - "DEEPMD INFO ---Summary of DataSystem: validation -----------------------------------------------\n", - "DEEPMD INFO found 1 system(s):\n", - "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", - "DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n", - "DEEPMD INFO --------------------------------------------------------------------------------------\n", - "DEEPMD INFO training without frame parameter\n", - "DEEPMD INFO data stating... (this step may take long time)\n", - "OMP: Info #254: KMP_AFFINITY: pid 118 tid 118 thread 0 bound to OS proc set 0\n", - "DEEPMD INFO built lr\n", - "DEEPMD INFO built network\n", - "DEEPMD INFO built training\n", - "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "DEEPMD INFO initialize model from scratch\n", - "DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n", - "DEEPMD INFO batch 200 training time 6.10 s, testing time 0.02 s\n", - "DEEPMD INFO batch 400 training time 4.83 s, testing time 0.02 s\n", - "DEEPMD INFO batch 600 training time 4.84 s, testing time 0.02 s\n", - "DEEPMD INFO batch 800 training time 4.85 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1000 training time 4.85 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 1200 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1400 training time 5.39 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1600 training time 4.84 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1800 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 2000 training time 4.84 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 2200 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 2400 training time 4.90 s, testing time 0.02 s\n", - "DEEPMD INFO batch 2600 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 2800 training time 4.84 s, testing time 0.02 s\n", - "DEEPMD INFO batch 3000 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 3200 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 3400 training time 4.99 s, testing time 0.02 s\n", - "DEEPMD INFO batch 3600 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO batch 3800 training time 4.85 s, testing time 0.02 s\n", - "DEEPMD INFO batch 4000 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 4200 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO batch 4400 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 4600 training time 4.92 s, testing time 0.02 s\n", - "DEEPMD INFO batch 4800 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 5000 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 5200 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 5400 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO batch 5600 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 5800 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 6000 training time 4.90 s, testing time 0.02 s\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use standard file APIs to delete files with this prefix.\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use standard file APIs to delete files with this prefix.\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 6200 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 6400 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 6600 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 6800 training time 4.84 s, testing time 0.02 s\n", - "DEEPMD INFO batch 7000 training time 4.93 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 7200 training time 4.89 s, testing time 0.02 s\n", - "DEEPMD INFO batch 7400 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO batch 7600 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO batch 7800 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 8000 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 8200 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 8400 training time 4.85 s, testing time 0.02 s\n", - "DEEPMD INFO batch 8600 training time 4.86 s, testing time 0.02 s\n", - "DEEPMD INFO batch 8800 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 9000 training time 4.83 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 9200 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 9400 training time 4.95 s, testing time 0.02 s\n", - "DEEPMD INFO batch 9600 training time 4.89 s, testing time 0.02 s\n", - "DEEPMD INFO batch 9800 training time 4.87 s, testing time 0.02 s\n", - "DEEPMD INFO batch 10000 training time 4.88 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO average training time: 0.0244 s/batch (exclude first 200 batches)\n", - "DEEPMD INFO finished training\n", - "DEEPMD INFO wall time: 256.669 s\n" - ] - } - ], - "source": [ - "! dp train input.json" - ] - }, - { - "cell_type": "markdown", - "id": "c10e0a81-ef33-49ab-ae2d-83fbd35985ac", - "metadata": { - "tags": [] - }, - "source": [ - "On the screen, you will see the information of the data system(s)\n", - "```\n", - "DEEPMD INFO -----------------------------------------------------------------\n", - "DEEPMD INFO ---Summary of DataSystem: training ----------------------------------\n", - "DEEPMD INFO found 1 system(s):\n", - "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", - "DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n", - "DEEPMD INFO -------------------------------------------------------------------------\n", - "DEEPMD INFO ---Summary of DataSystem: validation ----------------------------------\n", - "DEEPMD INFO found 1 system(s):\n", - "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", - "DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n", - "DEEPMD INFO -------------------------------------------------------------------------\n", - "```\n", - "and the starting and final learning rate of this training\n", - "```\n", - "DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n", - "```\n", - "If everything works fine, you will see, on the screen, information printed every 1000 steps, like\n", - "```\n", - "DEEPMD INFO batch 200 training time 6.04 s, testing time 0.02 s\n", - "DEEPMD INFO batch 400 training time 4.80 s, testing time 0.02 s\n", - "DEEPMD INFO batch 600 training time 4.80 s, testing time 0.02 s\n", - "DEEPMD INFO batch 800 training time 4.78 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1000 training time 4.77 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 1200 training time 4.47 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1400 training time 4.49 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1600 training time 4.45 s, testing time 0.02 s\n", - "DEEPMD INFO batch 1800 training time 4.44 s, testing time 0.02 s\n", - "DEEPMD INFO batch 2000 training time 4.46 s, testing time 0.02 s\n", - "DEEPMD INFO saved checkpoint model.ckpt\n", - "```\n", - "They present the training and testing time counts. At the end of the 1000th batch, the model is saved in Tensorflow's checkpoint file `model.ckpt`. At the same time, the training and testing errors are presented in file `lcurve.out`. \n", - "\n", - "The file contains 8 columns, form left to right, are the training step, the validation loss, training loss, root mean square (RMS) validation error of energy, RMS training error of energy, RMS validation error of force, RMS training error of force and the learning rate. The RMS error (RMSE) of the energy is normalized by number of atoms in the system. \n", - "```\n", - "head -n 2 lcurve.out\n", - "# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n", - " 0 2.02e+01 1.51e+01 1.37e-01 1.41e-01 6.40e-01 4.79e-01 1.0e-03\n", - "```\n", - "and\n", - "```\n", - "$ tail -n 2 lcurve.out\n", - " 9800 2.45e-02 4.02e-02 3.20e-04 3.88e-04 2.40e-02 3.94e-02 4.3e-08\n", - " 10000 4.60e-02 3.76e-02 8.65e-04 5.35e-04 4.52e-02 3.69e-02 3.5e-08\n", - "```\n", - "Volumes 4, 5 and 6, 7 present energy and force training and testing errors, respectively. " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "4aabcec8-9058-4582-863d-00550bb05187", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n", - " 0 2.06e+01 1.94e+01 1.34e-01 1.35e-01 6.51e-01 6.14e-01 1.0e-03\n", - " 9800 5.49e-02 4.00e-02 7.55e-04 7.28e-04 5.37e-02 3.91e-02 4.3e-08\n", - " 10000 6.56e-02 6.37e-02 1.13e-03 1.54e-03 6.44e-02 6.25e-02 3.5e-08\n" - ] - } - ], - "source": [ - "! head -n 2 lcurve.out && tail -n 2 lcurve.out" - ] - }, - { - "cell_type": "markdown", - "id": "34f3de74-9b9c-4143-94c6-1b91adbfb8d4", - "metadata": {}, - "source": [ - "The loss function can be visualized to monitor the training process." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a7444fb4-a869-4b44-a1e3-2d74679189ed", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "\n", - "with open(\"lcurve.out\") as f:\n", - " headers = f.readline().split()[1:]\n", - "lcurve = pd.DataFrame(np.loadtxt(\"lcurve.out\"), columns=headers)\n", - "legends = [\"rmse_e_val\", \"rmse_e_trn\", \"rmse_f_val\", \"rmse_f_trn\"]\n", - "for legend in legends:\n", - " plt.loglog(lcurve[\"step\"], lcurve[legend], label=legend)\n", - "plt.legend()\n", - "plt.xlabel(\"Training steps\")\n", - "plt.ylabel(\"Loss\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8009ad0a-9902-42d3-b280-caee92cbdf10", - "metadata": {}, - "source": [ - "## Freeze a model" - ] - }, - { - "cell_type": "markdown", - "id": "36792467-3a1b-4ee9-8cea-512f270071f4", - "metadata": {}, - "source": [ - "At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension `.pb`. Simply execute" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b20d368a-135c-4314-ae4c-47bf1f28c4d7", - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "non-resource variables are not supported in the long term\n", - "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "WARNING:root:Environment variable KMP_BLOCKTIME is empty. Use the default value 0\n", - "WARNING:root:Environment variable KMP_AFFINITY is empty. Use the default value granularity=fine,verbose,compact,1,0\n", - "/opt/deepmd-kit-2.2.1/lib/python3.10/importlib/__init__.py:169: UserWarning: The NumPy module was reloaded (imported a second time). This can in some cases result in small but subtle issues and is discouraged.\n", - " _bootstrap._exec(spec, module)\n", - "2023-04-20 23:40:25.666203: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:25.666257: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", - "DEEPMD INFO The following nodes will be frozen: ['model_type', 'descrpt_attr/rcut', 'descrpt_attr/ntypes', 'model_attr/tmap', 'model_attr/model_type', 'model_attr/model_version', 'train_attr/min_nbor_dist', 'train_attr/training_script', 'o_energy', 'o_force', 'o_virial', 'o_atom_energy', 'o_atom_virial', 'fitting_attr/dfparam', 'fitting_attr/daparam']\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:354: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:354: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", - "DEEPMD INFO 1211 ops in the final graph.\n" - ] - } - ], - "source": [ - "! dp freeze -o graph.pb" - ] - }, - { - "cell_type": "markdown", - "id": "3b23f3c9-5809-4a65-9126-f9e6d2f3a10b", - "metadata": {}, - "source": [ - "and it will output a model file named `graph.pb` in the current directory. " - ] - }, - { - "cell_type": "markdown", - "id": "2882c201-0e85-46d0-94f8-e055a540b6fb", - "metadata": {}, - "source": [ - "## Test a model \n", - "\n", - "We can check the quality of the trained model by running\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "5d201246-b110-4e63-a09b-ad7308bc1367", - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "non-resource variables are not supported in the long term\n", - "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "WARNING:root:Environment variable KMP_BLOCKTIME is empty. Use the default value 0\n", - "WARNING:root:Environment variable KMP_AFFINITY is empty. Use the default value granularity=fine,verbose,compact,1,0\n", - "/opt/deepmd-kit-2.2.1/lib/python3.10/importlib/__init__.py:169: UserWarning: The NumPy module was reloaded (imported a second time). This can in some cases result in small but subtle issues and is discouraged.\n", - " _bootstrap._exec(spec, module)\n", - "2023-04-20 23:40:30.102300: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:30.102346: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/deepmd/utils/batch_size.py:61: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.config.list_physical_devices('GPU')` instead.\n", - "WARNING:tensorflow:From /opt/deepmd-kit-2.2.1/lib/python3.10/site-packages/deepmd/utils/batch_size.py:61: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.config.list_physical_devices('GPU')` instead.\n", - "DEEPMD WARNING You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n", - "DEEPMD INFO # ---------------output of dp test--------------- \n", - "DEEPMD INFO # testing system : ../00.data/validation_data\n", - "OMP: Info #155: KMP_AFFINITY: Initial OS proc set respected: 0-7\n", - "OMP: Info #216: KMP_AFFINITY: decoding x2APIC ids.\n", - "OMP: Info #216: KMP_AFFINITY: cpuid leaf 11 not supported.\n", - "OMP: Info #216: KMP_AFFINITY: decoding legacy APIC ids.\n", - "OMP: Info #157: KMP_AFFINITY: 8 available OS procs\n", - "OMP: Info #158: KMP_AFFINITY: Uniform topology\n", - "OMP: Info #287: KMP_AFFINITY: topology layer \"LL cache\" is equivalent to \"socket\".\n", - "OMP: Info #192: KMP_AFFINITY: 1 socket x 4 cores/socket x 2 threads/core (4 total cores)\n", - "OMP: Info #218: KMP_AFFINITY: OS proc to physical thread map:\n", - "OMP: Info #172: KMP_AFFINITY: OS proc 0 maps to socket 0 core 0 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 1 maps to socket 0 core 0 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 2 maps to socket 0 core 1 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 3 maps to socket 0 core 1 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 4 maps to socket 0 core 2 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 5 maps to socket 0 core 2 thread 1 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 6 maps to socket 0 core 3 thread 0 \n", - "OMP: Info #172: KMP_AFFINITY: OS proc 7 maps to socket 0 core 3 thread 1 \n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 265 thread 1 bound to OS proc set 2\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 267 thread 2 bound to OS proc set 4\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 268 thread 3 bound to OS proc set 6\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 269 thread 4 bound to OS proc set 1\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 270 thread 5 bound to OS proc set 3\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 271 thread 6 bound to OS proc set 5\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 272 thread 7 bound to OS proc set 7\n", - "OMP: Info #254: KMP_AFFINITY: pid 254 tid 273 thread 8 bound to OS proc set 0\n", - "DEEPMD INFO # number of test data : 40 \n", - "DEEPMD INFO Energy MAE : 4.400922e-03 eV\n", - "DEEPMD INFO Energy RMSE : 5.258026e-03 eV\n", - "DEEPMD INFO Energy MAE/Natoms : 8.801843e-04 eV\n", - "DEEPMD INFO Energy RMSE/Natoms : 1.051605e-03 eV\n", - "DEEPMD INFO Force MAE : 4.277741e-02 eV/A\n", - "DEEPMD INFO Force RMSE : 5.514855e-02 eV/A\n", - "DEEPMD INFO Virial MAE : 6.080471e-02 eV\n", - "DEEPMD INFO Virial RMSE : 7.882116e-02 eV\n", - "DEEPMD INFO Virial MAE/Natoms : 1.216094e-02 eV\n", - "DEEPMD INFO Virial RMSE/Natoms : 1.576423e-02 eV\n", - "DEEPMD INFO # ----------------------------------------------- \n" - ] - } - ], - "source": [ - "! dp test -m graph.pb -s ../00.data/validation_data" - ] - }, - { - "cell_type": "markdown", - "id": "7f48e0a9-644f-4588-b9f3-cc115851a1ed", - "metadata": {}, - "source": [ - "The correlation between predicted data and original data can also be calculated." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "be03c8da-e4f9-439d-bb22-800b651a7737", - "metadata": {}, - "outputs": [], - "source": [ - "import dpdata\n", - "\n", - "training_systems = dpdata.LabeledSystem(\"../00.data/training_data\", fmt=\"deepmd/npy\")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "e3046e2b-7080-4be0-81d3-faaab3873002", - "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - }, - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-04-20 23:40:32.104716: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2023-04-20 23:40:34.426193: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:34.427318: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:34.427332: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /opt/mamba/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "non-resource variables are not supported in the long term\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /opt/mamba/lib/python3.10/site-packages/deepmd/utils/batch_size.py:61: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.config.list_physical_devices('GPU')` instead.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-04-20 23:40:36.161142: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2023-04-20 23:40:36.165078: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:36.165119: W tensorflow/compiler/xla/stream_executor/cuda/cuda_driver.cc:265] failed call to cuInit: UNKNOWN ERROR (303)\n", - "2023-04-20 23:40:36.165142: I tensorflow/compiler/xla/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (bohrium-14076-1013950): /proc/driver/nvidia/version does not exist\n", - "2023-04-20 23:40:36.181810: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:357] MLIR V1 optimization pass is not enabled\n", - "WARNING:tensorflow:From /opt/mamba/lib/python3.10/site-packages/deepmd/utils/batch_size.py:61: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.config.list_physical_devices('GPU')` instead.\n", - "WARNING:deepmd.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n" - ] - } - ], - "source": [ - "predict = training_systems.predict(\"graph.pb\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "b4005a62-8bf2-4aaf-8865-20ea303ea0f2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "plt.scatter(training_systems[\"energies\"], predict[\"energies\"])\n", - "\n", - "x_range = np.linspace(plt.xlim()[0], plt.xlim()[1])\n", - "\n", - "plt.plot(x_range, x_range, \"r--\", linewidth=0.25)\n", - "plt.xlabel(\"Energy of DFT\")\n", - "plt.ylabel(\"Energy predicted by deep potential\")\n", - "plt.plot()" - ] - }, - { - "cell_type": "markdown", - "id": "fffaad23-53a6-47dd-8d91-9beb68d1212b", - "metadata": {}, - "source": [ - "## Run MD with LAMMPS\n", - "\n", - "The model can drive molecular dynamics in LAMMPS. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "d0ceac75-9753-4ae8-b954-c2cc6d005e46", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "conf.lmp graph.pb in.lammps\n" - ] - } - ], - "source": [ - "! cd ../02.lmp && cp ../01.train/graph.pb ./ && ls" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c794572f-7e9c-42f7-b78a-4d82bd3f3118", - "metadata": {}, - "source": [ - "Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the LAMMPS input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n", - "```\n", - "pair_style deepmd graph.pb\n", - "pair_coeff * *\n", - "```\n", - "where the pair style deepmd is invoked and the model file `graph.pb` is provided, which means the atomic interaction will be computed by the DP model that is stored in the file `graph.pb`. \n", - "\n", - "In an environment with a compatible version of LAMMPS, the deep potential molecular dynamics can be performed via \n", - "\n", - "```bash\n", - "lmp -i input.lammps\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "f4501e9c-541c-431d-8847-d0d9eecfb0e0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning:\n", - "This LAMMPS executable is in a conda environment, but the environment has\n", - "not been activated. Libraries may fail to load. To activate this environment\n", - "please see https://conda.io/activation.\n", - "LAMMPS (23 Jun 2022 - Update 1)\n", - "OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)\n", - " using 1 OpenMP thread(s) per MPI task\n", - "Loaded 1 plugins from /opt/deepmd-kit-2.2.1/lib/deepmd_lmp\n", - "Reading data file ...\n", - " triclinic box = (0 0 0) to (10.114259 10.263124 10.216793) with tilt (0.036749877 0.13833062 -0.056322169)\n", - " 1 by 1 by 1 MPI processor grid\n", - " reading atoms ...\n", - " 5 atoms\n", - " read_data CPU = 0.004 seconds\n", - "DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "Summary of lammps deepmd module ...\n", - " >>> Info of deepmd-kit:\n", - " installed to: /opt/deepmd-kit-2.2.1\n", - " source: v2.2.1\n", - " source branch: HEAD\n", - " source commit: 3ac8c4c7\n", - " source commit at: 2023-03-16 12:33:24 +0800\n", - " surpport model ver.:1.1 \n", - " build variant: cuda\n", - " build with tf inc: /opt/deepmd-kit-2.2.1/include;/opt/deepmd-kit-2.2.1/include\n", - " build with tf lib: /opt/deepmd-kit-2.2.1/lib/libtensorflow_cc.so\n", - " set tf intra_op_parallelism_threads: 0\n", - " set tf inter_op_parallelism_threads: 0\n", - " >>> Info of lammps module:\n", - " use deepmd-kit at: /opt/deepmd-kit-2.2.1DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "DeePMD-kit: Successfully load libcudart.so\n", - "2023-04-20 23:40:39.637091: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", - "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2023-04-20 23:40:39.643206: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64\n", - "2023-04-20 23:40:39.643234: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", - "2023-04-20 23:40:39.643257: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (bohrium-14076-1013950): /proc/driver/nvidia/version does not exist\n", - "2023-04-20 23:40:39.645305: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", - "2023-04-20 23:40:39.700559: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", - " >>> Info of model(s):\n", - " using 1 model(s): graph.pb \n", - " rcut in model: 6\n", - " ntypes in model: 2\n", - "\n", - "CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n", - "\n", - "Your simulation uses code contributions which should be cited:\n", - "- USER-DEEPMD package:\n", - "The log file lists these citations in BibTeX format.\n", - "\n", - "CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n", - "\n", - "Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule\n", - "Neighbor list info ...\n", - " update every 10 steps, delay 0 steps, check no\n", - " max neighbors/atom: 2000, page size: 100000\n", - " master list distance cutoff = 7\n", - " ghost atom cutoff = 7\n", - " binsize = 3.5, bins = 3 3 3\n", - " 1 neighbor lists, perpetual/occasional/extra = 1 0 0\n", - " (1) pair deepmd, perpetual\n", - " attributes: full, newton on\n", - " pair build: full/bin/atomonly\n", - " stencil: full/bin/3d\n", - " bin: standard\n", - "Setting up Verlet run ...\n", - " Unit style : metal\n", - " Current step : 0\n", - " Time step : 0.001\n", - "Per MPI rank memory allocation (min/avg/max) = 3.809 | 3.809 | 3.809 Mbytes\n", - " Step PotEng KinEng TotEng Temp Press Volume \n", - " 0 -219.77011 0.025852029 -219.74426 50 -810.10259 1060.5429 \n", - " 100 -219.76784 0.023303362 -219.74454 45.070664 -605.50113 1060.5429 \n", - " 200 -219.77863 0.032400378 -219.74622 62.665059 -53.929107 1060.5429 \n", - " 300 -219.77403 0.027115352 -219.74692 52.443373 642.24342 1060.5429 \n", - " 400 -219.77126 0.023079501 -219.74818 44.637697 861.365 1060.5429 \n", - " 500 -219.786 0.034433001 -219.75156 66.596322 256.47994 1060.5429 \n", - " 600 -219.78295 0.029039598 -219.75391 56.165027 -527.21506 1060.5429 \n", - " 700 -219.777 0.020227709 -219.75677 39.122091 -696.11258 1060.5429 \n", - " 800 -219.78394 0.022893217 -219.76105 44.277408 -77.227892 1060.5429 \n", - " 900 -219.77998 0.015506508 -219.76447 29.990893 663.84491 1060.5429 \n", - " 1000 -219.78328 0.015178419 -219.7681 29.356341 482.8228 1060.5429 \n", - " 1100 -219.7903 0.018763273 -219.77154 36.28975 -273.19351 1060.5429 \n", - " 1200 -219.78639 0.012922048 -219.77347 24.992328 -577.90459 1060.5429 \n", - " 1300 -219.79131 0.015848131 -219.77546 30.65162 -129.85247 1060.5429 \n", - " 1400 -219.78829 0.011969602 -219.77632 23.150218 545.58517 1060.5429 \n", - " 1500 -219.78735 0.010610097 -219.77674 20.520821 356.36805 1060.5429 \n", - " 1600 -219.78834 0.011547453 -219.77679 22.333746 -386.08305 1060.5429 \n", - " 1700 -219.78549 0.0095297364 -219.77596 18.431312 -522.29867 1060.5429 \n", - " 1800 -219.78787 0.01302987 -219.77484 25.200865 120.83085 1060.5429 \n", - " 1900 -219.7845 0.012341623 -219.77216 23.869737 643.66442 1060.5429 \n", - " 2000 -219.7857 0.017597987 -219.76811 34.035987 255.57892 1060.5429 \n", - " 2100 -219.7853 0.023253088 -219.76205 44.973429 -465.61243 1060.5429 \n", - " 2200 -219.77987 0.024650089 -219.75522 47.675348 -708.62743 1060.5429 \n", - " 2300 -219.78134 0.030690759 -219.75065 59.358512 -221.82549 1060.5429 \n", - " 2400 -219.77737 0.029446857 -219.74792 56.952699 635.02431 1060.5429 \n", - " 2500 -219.768 0.022122766 -219.74587 42.787292 826.89652 1060.5429 \n", - " 2600 -219.77246 0.02691536 -219.74554 52.056572 168.88834 1060.5429 \n", - " 2700 -219.77746 0.031963987 -219.7455 61.821042 -497.33107 1060.5429 \n", - " 2800 -219.7733 0.02814671 -219.74515 54.438107 -792.71093 1060.5429 \n", - " 2900 -219.77498 0.029131114 -219.74585 56.342026 -685.23164 1060.5429 \n", - " 3000 -219.78212 0.034326288 -219.74779 66.38993 -20.441816 1060.5429 \n", - " 3100 -219.77222 0.02366469 -219.74856 45.769502 708.42782 1060.5429 \n", - " 3200 -219.77252 0.022334468 -219.75019 43.196742 753.3138 1060.5429 \n", - " 3300 -219.78538 0.032458098 -219.75292 62.776693 36.172647 1060.5429 \n", - " 3400 -219.78047 0.026131264 -219.75434 50.540064 -661.25487 1060.5429 \n", - " 3500 -219.77926 0.022926821 -219.75633 44.342401 -623.5037 1060.5429 \n", - " 3600 -219.78369 0.024854728 -219.75884 48.071137 74.821258 1060.5429 \n", - " 3700 -219.7768 0.016731114 -219.76006 32.359382 709.57785 1060.5429 \n", - " 3800 -219.77927 0.017595175 -219.76168 34.03055 543.56168 1060.5429 \n", - " 3900 -219.7864 0.023003584 -219.7634 44.490867 -230.55364 1060.5429 \n", - " 4000 -219.78098 0.017102387 -219.76388 33.077456 -677.85161 1060.5429 \n", - " 4100 -219.78581 0.020907229 -219.7649 40.436341 -343.9622 1060.5429 \n", - " 4200 -219.78717 0.021708329 -219.76546 41.985736 491.95578 1060.5429 \n", - " 4300 -219.78328 0.018229256 -219.76505 35.256916 680.5279 1060.5429 \n", - " 4400 -219.79007 0.024931071 -219.76514 48.21879 -26.785455 1060.5429 \n", - " 4500 -219.78331 0.019795452 -219.76352 38.286071 -624.98799 1060.5429 \n", - " 4600 -219.78094 0.0196038 -219.76134 37.915399 -584.8297 1060.5429 \n", - " 4700 -219.78608 0.027516802 -219.75857 53.219812 74.218844 1060.5429 \n", - " 4800 -219.77656 0.023488867 -219.75307 45.429446 827.4406 1060.5429 \n", - " 4900 -219.78039 0.032832529 -219.74755 63.500874 634.64896 1060.5429 \n", - " 5000 -219.78237 0.040761952 -219.7416 78.837046 -224.81626 1060.5429 \n", - "Loop time of 12.1251 on 1 procs for 5000 steps with 5 atoms\n", - "\n", - "Performance: 35.629 ns/day, 0.674 hours/ns, 412.369 timesteps/s\n", - "242.0% CPU use with 1 MPI tasks x 1 OpenMP threads\n", - "\n", - "MPI task timing breakdown:\n", - "Section | min time | avg time | max time |%varavg| %total\n", - "---------------------------------------------------------------\n", - "Pair | 12.072 | 12.072 | 12.072 | 0.0 | 99.56\n", - "Neigh | 0.0066181 | 0.0066181 | 0.0066181 | 0.0 | 0.05\n", - "Comm | 0.012792 | 0.012792 | 0.012792 | 0.0 | 0.11\n", - "Output | 0.0044695 | 0.0044695 | 0.0044695 | 0.0 | 0.04\n", - "Modify | 0.022737 | 0.022737 | 0.022737 | 0.0 | 0.19\n", - "Other | | 0.006263 | | | 0.05\n", - "\n", - "Nlocal: 5 ave 5 max 5 min\n", - "Histogram: 1 0 0 0 0 0 0 0 0 0\n", - "Nghost: 130 ave 130 max 130 min\n", - "Histogram: 1 0 0 0 0 0 0 0 0 0\n", - "Neighs: 0 ave 0 max 0 min\n", - "Histogram: 1 0 0 0 0 0 0 0 0 0\n", - "FullNghs: 20 ave 20 max 20 min\n", - "Histogram: 1 0 0 0 0 0 0 0 0 0\n", - "\n", - "Total # of neighbors = 20\n", - "Ave neighs/atom = 4\n", - "Neighbor list builds = 500\n", - "Dangerous builds not checked\n", - "Total wall time: 0:00:13\n" - ] - } - ], - "source": [ - "! cd ../02.lmp && cp ../01.train/graph.pb ./ && lmp -i in.lammps" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "98a7aff7-daaf-494f-beb9-aa99688ed0a2", - "metadata": {}, - "source": [ - "\"Open" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} +{"cells":[{"cell_type":"markdown","id":"b22f597d-ec17-4ab9-8933-28e92af2438d","metadata":{},"source":["# DeePMD-kit Quick Start Tutorial"]},{"cell_type":"markdown","id":"7a41db5f","metadata":{},"source":["\"Open"]},{"cell_type":"markdown","id":"85b62e3d-dfae-402f-96a5-5672367d2d17","metadata":{},"source":["
\n","

\n"," ©️ Copyright 2024 @ Authors
\n"," 📖 Getting Started Guide
\n"," Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
\n"," This document can be executed directly on the Bohrium Notebook. To begin, click the Connect button located at the top of the interface. We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n","

\n","
"]},{"cell_type":"markdown","id":"dbab8963","metadata":{},"source":["

This is a quick start guide for \"Deep Potential\" molecular dynamics using DeePMD-kit, through which you can quickly understand the paradigm cycle that DeePMD-kit operates in and apply it to your projects.

\n","\n","

Deep Potential is the convergence of machine learning and physical principles, presenting a new computational paradigm as shown in the figure below.

\n","
\n"," \"Fig2\"\n","

Figure | A new computational paradigm, composed of Molecular Modeling, Machine Learning, and High-Performance Computing (HPC).

\n","
\n"]},{"cell_type":"markdown","id":"f4416190-479c-4b2f-9e08-33690bc4941d","metadata":{},"source":["## Task\n","\n","> **Mastering the paradigm cycle of using DeePMD-kit to establish deep potential molecular dynamics models, and following a complete case to learn how to apply it to molecular dynamics tasks.**\n","\n","By the end of this tutorial, you will be able to:\n","\n","* Prepare the formataive dataset and running scripts for training with DeePMD-kit;\n","* Train, freeze, and test DeePMD-kit models;\n","* Use DeePMD-kit in Lammps for calculations;\n","\n","Work through this tutorial. It will take you 20 minutes, max!"]},{"cell_type":"markdown","id":"8e6587cb-ba6e-42ba-a139-0595fc7f79d7","metadata":{},"source":["## Table of contents\n","\n","
\"deepmd-kit\"
\n","\n","* [Background](#background)\n","* [Practice](#practice)\n"," * [1. Data preparation](#dataprepare)\n"," * [2. Prepare input script](#inputscript)\n"," * [3. Train a model](#train)\n"," * [4. Freeze a model](#freeze)\n"," * [5. Test a model](#test)\n"," * [6. Run MD with LAMMPS](#lammpsmd)\n","* [References](#references)\n"]},{"cell_type":"markdown","id":"42afcb0e","metadata":{},"source":["## Background \n","\n","In this tutorial, we will take the gaseous methane molecule as an example to provide a detailed introduction to the training and application of the Deep Potential (DP) model.\n","\n","DeePMD-kit is a software tool that employs neural networks to fit potential energy models based on first-principles data for molecular dynamics simulations. Without manual intervention, it can end-to-end transform the data provided by users into a deep potential model in a matter of hours. This model can seamlessly integrate with common molecular dynamics simulation software (like LAMMPS, OpenMM, and GROMACS).\n","\n","DeePMD-kit significantly elevates the limits of molecular dynamics through high-performance computing and machine learning, achieving system scales of up to hundreds of millions of atoms while still maintaining the high accuracy of \"ab initio\" calculations. The simulation time scale is improved by at least 1000 times compared to traditional methods. Its achievements earned the 2020 ACM Gordon Bell Prize, one of the highest honors in the field of high-performance computing, and it has been used by over a thousand research groups in physics, chemistry, materials science, biology, and other fields globally.\n","\n","\"Fig1\"\n","\n","For more detailed usage, you can refer to the [DeePMD-kit’s documentation](https://docs.deepmodeling.org/projects/deepmd/en/master/index.html) as a comprehensive reference.\n","\n","In this case, the Deep Potential (DP) model was generated using the **DeePMD-kit package (v2.2.1)**.\n","\n"]},{"cell_type":"markdown","id":"275d9d23","metadata":{},"source":["## Practice "]},{"cell_type":"markdown","id":"e452966d","metadata":{},"source":["### 1 Data Preparation \n","\n","We have prepared the initial data for $CH_4$ required to run DeePMD-kit computations and placed it in the `DeePMD-kit_Tutorial` folder. You can view the corresponding files by clicking on the dataset on the left side:"]},{"cell_type":"code","execution_count":2,"id":"34ea0475","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Current path is: /personal/bohr/DeePMD-kit-Tutorial-21f1/v1\n"]}],"source":["# For security reasons, we do not have write permission to the dataset folder, so we copy it to the `/data/` directory:\n","! cp -nr /bohr/ /personal/\n","\n","# Here, we define some paths and switch to the working path for ease of subsequent calls:\n","import os\n","bohr_dataset_url = \"/bohr/DeePMD-kit-Tutorial-21f1/v1/\" # The URL can be copied from the dataset section on the left.\n","work_path = os.path.join(\"/personal\", bohr_dataset_url[1:]) # A slice operation is used to remove the leading \"/\" from the path.\n","os.chdir(work_path)\n","print(f\"Current path is: {os.getcwd()}\")\n"]},{"cell_type":"markdown","id":"a265a0d9","metadata":{},"source":["Let's take a look at the downloaded DeePMD-kit_Tutorial folder."]},{"cell_type":"code","execution_count":3,"id":"2ea12f86","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial\u001b[0m\n","├── \u001b[01;34m00.data\u001b[0m\n","├── \u001b[01;34m01.train\u001b[0m\n","├── \u001b[01;34m01.train.finished\u001b[0m\n","├── \u001b[01;34m02.lmp\u001b[0m\n","└── \u001b[01;34m02.lmp.finished\u001b[0m\n","\n","5 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial -L 1"]},{"cell_type":"markdown","id":"1da4b858","metadata":{},"source":["There are 3 subfolders under the DeePMD-kit_Tutorial folder: 00.data, 01.train, and 02.lmp.\n","\n","- The 00.data folder is used to store training and testing data.\n","- The 01.train folder contains example scripts for training models using DeePMD-kit.\n","- The 01.train.finished folder includes the complete results of the training process.\n","- The 02.lmp folder contains example scripts for molecular dynamics simulations using LAMMPS.\n","\n","Let's first take a look at the DeePMD-kit_Tutorial/00.data folder."]},{"cell_type":"code","execution_count":4,"id":"509f7efe","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data\u001b[0m\n","├── \u001b[01;34mabacus_md\u001b[0m\n","├── \u001b[01;34mtraining_data\u001b[0m\n","└── \u001b[01;34mvalidation_data\u001b[0m\n","\n","3 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data -L 1"]},{"cell_type":"markdown","id":"8373a3a4","metadata":{},"source":["DeePMD-kit's training data originates from first-principles calculation data, including atomic types, simulation cells, atomic coordinates, atomic forces, system energies, and virials.\n","\n","
\"image-20230116161737203\"
\n","\n","In the *00.data* folder, there is only the *abacus_md* folder, which contains data obtained through *ab initio* Molecular Dynamics (AIMD) simulations using ABACUS. In this tutorial, we have already completed the *ab initio* molecular dynamics calculations for the methane molecule for you.\n","\n","Detailed information about ABACUS can be found in its [documentation](https://abacus.deepmodeling.com/en/latest/). \n","\n","DeePMD-kit uses a compressed data format. All training data should first be converted into this format before they can be used in DeePMD-kit. This data format is explained in detail in the DeePMD-kit manual, which can be found on [DeePMD-kit's Github](http://www.github.com/deepmodeling/deepmd-kit).\n","\n","We provide a convenient tool **dpdata**, which can convert data generated by VASP, CP2K, Gaussian, Quantum Espresso, ABACUS, and LAMMPS into DeePMD-kit's compressed format.\n","\n","A snapshot of a molecular system that contains computational data information is called a frame. A data system comprises many frames sharing the same number of atoms and atom types.\n","\n","For example, a molecular dynamics trajectory can be converted into a data system, where each timestep corresponds to one frame in the system.\n"]},{"cell_type":"markdown","id":"e62f0115","metadata":{},"source":["Next, we use the dpdata tool to randomly split the data in abacus_md into training and validation data.\n"]},{"cell_type":"code","execution_count":5,"id":"b5fbc838","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["# the data contains 201 frames\n","# the training data contains 161 frames\n","# the validation data contains 40 frames\n"]}],"source":["import dpdata \n","import numpy as np\n","\n","# load data of abacus/md format\n","data = dpdata.LabeledSystem('DeePMD-kit_Tutorial/00.data/abacus_md', fmt = 'abacus/md') \n","print('# the data contains %d frames' % len(data))\n","\n","# random choose 40 index for validation_data\n","index_validation = np.random.choice(201,size=40,replace=False)\n","\n","# other indexes are training_data\n","index_training = list(set(range(201))-set(index_validation))\n","data_training = data.sub_system(index_training)\n","data_validation = data.sub_system(index_validation)\n","\n","# all training data put into directory:\"training_data\"\n","data_training.to_deepmd_npy('DeePMD-kit_Tutorial/00.data/training_data')\n","\n","# all validation data put into directory:\"validation_data\"\n","data_validation.to_deepmd_npy('DeePMD-kit_Tutorial/00.data/validation_data')\n","\n","print('# the training data contains %d frames' % len(data_training)) \n","print('# the validation data contains %d frames' % len(data_validation)) "]},{"cell_type":"markdown","id":"98719865-ab3d-4440-8c14-78a1c253c3a6","metadata":{},"source":["As you can see, 161 frames are picked as training data, and the other 40 frames are validation dat.\n","\n","Let's take another look at the 00.data folder, where new files have been generated, which are the training and validation sets required for Deep Potential training with DeePMD-kit.\n"]},{"cell_type":"code","execution_count":6,"id":"e5befaf5-c464-4e8f-8544-a2634f5fd1d2","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data/\u001b[0m\n","├── \u001b[01;34mabacus_md\u001b[0m\n","├── \u001b[01;34mtraining_data\u001b[0m\n","└── \u001b[01;34mvalidation_data\u001b[0m\n","\n","3 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data/ -L 1"]},{"cell_type":"code","execution_count":7,"id":"70cc9898","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data/training_data\u001b[0m\n","├── \u001b[01;34mset.000\u001b[0m\n","├── \u001b[01;32mtype.raw\u001b[0m\n","└── \u001b[01;32mtype_map.raw\u001b[0m\n","\n","1 directory, 2 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data/training_data -L 1"]},{"cell_type":"markdown","id":"542b24fd","metadata":{},"source":["The functions of these files are as follows:\n","\n","- set.000: It is a directory that contains compressed format data (NumPy compressed arrays).\n","- type.raw: It is a file that contains the types of atoms (represented as integers).\n","- type_map.raw: It is a file that contains the names of the types of atoms.\n","\n","Let's take a look at these files."]},{"cell_type":"markdown","id":"99770e51-4d9e-44db-bb93-1c7061c8862c","metadata":{},"source":["Let's have a look at `type.raw`:"]},{"cell_type":"code","execution_count":8,"id":"a686585c-3e5b-4a5c-9cc7-4db7759b74b2","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["0\n","0\n","0\n","0\n","1\n"]}],"source":["! cat DeePMD-kit_Tutorial/00.data/training_data/type.raw "]},{"cell_type":"markdown","id":"b5357cc5-9cdd-4c52-a611-a84cee739fb0","metadata":{},"source":["This tells us there are 5 atoms in this example, 4 atoms represented by type \"0\", and 1 atom represented by type \"1\".\n","Sometimes one needs to map the integer types to atom name. The mapping can be given by the file `type_map.raw`"]},{"cell_type":"code","execution_count":9,"id":"6216f02d-3a21-481f-99da-3f23b438a7c0","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["H\n","C\n"]}],"source":["! cat DeePMD-kit_Tutorial/00.data/training_data/type_map.raw"]},{"cell_type":"markdown","id":"1196aa0f-22c5-4b96-8640-c82068fa7828","metadata":{},"source":["This tells us the type \"0\" is named by \"H\", and the type \"1\" is named by \"C\".\n","\n","More detailed documentation on using dpdata for data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)"]},{"cell_type":"markdown","id":"ac6c969b-10cb-49f0-9b84-7dc9ffa38c61","metadata":{},"source":["### 2 Prepare input script \n","Once the data preparation is done, we can go on with training. Now go to the training directory.\n","DeePMD-kit requires a `json` format file to specify parameters for training. "]},{"cell_type":"code","execution_count":10,"id":"d371a240","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["{\n"," \"_comment\": \" model parameters\",\n"," \"model\": {\n","\t\"type_map\":\t[\"H\", \"C\"],\n","\t\"descriptor\" :{\n","\t \"type\":\t\t\"se_e2_a\",\n","\t \"sel\":\t\t\"auto\",\n","\t \"rcut_smth\":\t0.50,\n","\t \"rcut\":\t\t6.00,\n","\t \"neuron\":\t\t[25, 50, 100],\n","\t \"resnet_dt\":\tfalse,\n","\t \"axis_neuron\":\t16,\n","\t \"seed\":\t\t1,\n","\t \"_comment\":\t\t\" that's all\"\n","\t},\n","\t\"fitting_net\" : {\n","\t \"neuron\":\t\t[240, 240, 240],\n","\t \"resnet_dt\":\ttrue,\n","\t \"seed\":\t\t1,\n","\t \"_comment\":\t\t\" that's all\"\n","\t},\n","\t\"_comment\":\t\" that's all\"\n"," },\n","\n"," \"learning_rate\" :{\n","\t\"type\":\t\t\"exp\",\n","\t\"decay_steps\":\t50,\n","\t\"start_lr\":\t0.001,\t\n","\t\"stop_lr\":\t3.51e-8,\n","\t\"_comment\":\t\"that's all\"\n"," },\n","\n"," \"loss\" :{\n","\t\"type\":\t\t\"ener\",\n","\t\"start_pref_e\":\t0.02,\n","\t\"limit_pref_e\":\t1,\n","\t\"start_pref_f\":\t1000,\n","\t\"limit_pref_f\":\t1,\n","\t\"start_pref_v\":\t0,\n","\t\"limit_pref_v\":\t0,\n","\t\"_comment\":\t\" that's all\"\n"," },\n","\n"," \"training\" : {\n","\t\"training_data\": {\n","\t \"systems\": [\"../00.data/training_data\"],\n","\t \"batch_size\": \"auto\",\n","\t \"_comment\":\t \"that's all\"\n","\t},\n","\t\"validation_data\":{\n","\t \"systems\":\t [\"../00.data/validation_data\"],\n","\t \"batch_size\": \"auto\",\n","\t \"numb_btch\": 1,\n","\t \"_comment\":\t \"that's all\"\n","\t},\n","\t\"numb_steps\":\t10000,\n","\t\"seed\":\t\t10,\n","\t\"disp_file\":\t\"lcurve.out\",\n","\t\"disp_freq\":\t200,\n","\t\"save_freq\":\t1000,\n","\t\"_comment\":\t\"that's all\"\n"," }, \n","\n"," \"_comment\":\t\t\"that's all\"\n","}\n","\n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train/ && cat input.json"]},{"cell_type":"markdown","id":"0a4c680a-abcf-40b9-b00e-fa4615aa91b9","metadata":{},"source":["DeePMD-kit requires a `json` format file to specify parameters for training. \n","\n","In the model section, the parameters of embedding and fitting networks are specified.\n","```json\n","\"model\":{\n"," \"type_map\": [\"H\", \"C\"], \n"," \"descriptor\":{\n"," \"type\": \"se_e2_a\", \n"," \"rcut\": 6.00, \n"," \"rcut_smth\": 0.50, \n"," \"sel\": \"auto\", \n"," \"neuron\": [25, 50, 100], \n"," \"resnet_dt\": false,\n"," \"axis_neuron\": 16, \n"," \"seed\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"fitting_net\":{\n"," \"neuron\": [240, 240, 240], \n"," \"resnet_dt\": true,\n"," \"seed\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"_comment\": \"that's all\"'\n","},\n","```\n","The explanation for some of the parameters is as follows:\n","\n","| Parameter | Expiation |\n","| ------------------------ | ------------------------------------------------------------ |\n","| type_map | *the* *name* *of* *each* *type* *of* *atom* |\n","| descriptor > type | *the* *type* *of* *descriptor* |\n","| descriptor > rcut | *cut-off* *radius* |\n","| descriptor > rcut_smth | *where* *the* *smoothing* *starts* |\n","| descriptor > sel | *the* *maximum* *number* *of* *type* *i* *atoms* *in* *the* *cut-off* *radius* |\n","| descriptor > neuron | *size* *of* *the* *embedding* *neural* *network* |\n","| descriptor > axis_neuron | *the* *size* *of* *the* *submatrix* *of* *G* *(embedding* *matrix)* |\n","| fitting_net > neuron | *size* *of* *the* *fitting* *neural* *network* |\n","\n","The `se_e2_a` descriptor is used to train the DP model. The item neurons set the size of the descriptors and fitting network to [25, 50, 100] and [240, 240, 240], respectively. The components in local environment to smoothly go to zero from 0.5 to 6 Å.\n","\n","The following are the parameters that specify the learning rate and loss function.\n","```json\n"," \"learning_rate\" :{\n"," \"type\": \"exp\",\n"," \"decay_steps\": 50,\n"," \"start_lr\": 0.001, \n"," \"stop_lr\": 3.51e-8,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"loss\" :{\n"," \"type\": \"ener\",\n"," \"start_pref_e\": 0.02,\n"," \"limit_pref_e\": 1,\n"," \"start_pref_f\": 1000,\n"," \"limit_pref_f\": 1,\n"," \"start_pref_v\": 0,\n"," \"limit_pref_v\": 0,\n"," \"_comment\": \"that's all\"\n"," },\n","```\n","In the loss function, `pref_e` increases from 0.02 to 1, and `pref_f` decreases from 1000 to 1 progressively, which means that the force term dominates at the beginning, while energy and virial terms become important at the end. This strategy is very effective and reduces the total training time. `pref_v` is set to 0 , indicating that no virial data are included in the training process. The starting learning rate, stop learning rate, and decay steps are set to 0.001, 3.51e-8, and 50, respectively. The model is trained for 10000 steps.\n","\n","The training parameters are given in the following\n","```json\n"," \"training\" : {\n"," \"training_data\": {\n"," \"systems\": [\"../00.data/training_data\"], \n"," \"batch_size\": \"auto\", \n"," \"_comment\": \"that's all\"\n"," },\n"," \"validation_data\":{\n"," \"systems\": [\"../00.data/validation_data/\"],\n"," \"batch_size\": \"auto\", \n"," \"numb_btch\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"numb_steps\": 10000, \n"," \"seed\": 10,\n"," \"disp_file\": \"lcurve.out\",\n"," \"disp_freq\": 200,\n"," \"save_freq\": 10000,\n"," },\n","```"]},{"cell_type":"markdown","id":"7b0edb0f-df47-4e6c-8c37-5f32c4bd6b39","metadata":{},"source":["More detailed docs about Data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)"]},{"cell_type":"markdown","id":"bafe20b8-3bde-403c-ae42-b68ba5f29703","metadata":{},"source":["### 3 Train a model \n","After the training script is prepared, we can start the training with DeePMD-kit by simply running"]},{"cell_type":"code","execution_count":11,"id":"e04a05a3-ccac-474b-bc24-58fbf20b9ffe","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD INFO Calculate neighbor statistics... (add --skip-neighbor-stat to skip this step)\n","DEEPMD INFO training data with min nbor dist: 1.0495341121569708\n","DEEPMD INFO training data with max nbor size: [4 1]\n","DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n","DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n","DEEPMD INFO | | | | ___ ___ | |__) || \\ / || | | | ______ | | __ _ | |_ \n","DEEPMD INFO | | | | / _ \\ / _ \\| ___/ | |\\/| || | | ||______|| |/ /| || __|\n","DEEPMD INFO | |__| || __/| __/| | | | | || |__| | | < | || |_ \n","DEEPMD INFO |_____/ \\___| \\___||_| |_| |_||_____/ |_|\\_\\|_| \\__|\n","DEEPMD INFO Please read and cite:\n","DEEPMD INFO Wang, Zhang, Han and E, Comput.Phys.Comm. 228, 178-184 (2018)\n","DEEPMD INFO Zeng et al, J. Chem. Phys., 159, 054801 (2023)\n","DEEPMD INFO See https://deepmd.rtfd.io/credits/ for details.\n","DEEPMD INFO installed to: /root/miniconda3/envs/deepmd\n","DEEPMD INFO source : v2.2.7\n","DEEPMD INFO source brach: HEAD\n","DEEPMD INFO source commit: 839f4fe7\n","DEEPMD INFO source commit at: 2023-10-27 21:10:24 +0800\n","DEEPMD INFO build float prec: double\n","DEEPMD INFO build variant: cpu\n","DEEPMD INFO build with tf inc: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/include;/root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/../../../../include\n","DEEPMD INFO build with tf lib: \n","DEEPMD INFO ---Summary of the training---------------------------------------\n","DEEPMD INFO running on: bohrium-21213-1088639\n","DEEPMD INFO computing device: cpu:0\n","DEEPMD INFO Count of visible GPU: 0\n","DEEPMD INFO num_intra_threads: 0\n","DEEPMD INFO num_inter_threads: 0\n","DEEPMD INFO -----------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: training -----------------------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n","DEEPMD INFO --------------------------------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: validation -----------------------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n","DEEPMD INFO --------------------------------------------------------------------------------------\n","DEEPMD INFO training without frame parameter\n","DEEPMD INFO data stating... (this step may take long time)\n","DEEPMD INFO built lr\n","DEEPMD INFO built network\n","DEEPMD INFO built training\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD INFO initialize model from scratch\n","DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","tf.py_func is deprecated in TF V2. Instead, there are two\n"," options available in V2.\n"," - tf.py_function takes a python function which manipulates tf eager\n"," tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n"," an ndarray (just call tensor.numpy()) but having access to eager tensors\n"," means `tf.py_function`s can use accelerators such as GPUs as well as\n"," being differentiable using a gradient tape.\n"," - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n"," (it is not differentiable, and manipulates numpy arrays). It drops the\n"," stateful argument making all functions stateful.\n"," \n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","tf.py_func is deprecated in TF V2. Instead, there are two\n"," options available in V2.\n"," - tf.py_function takes a python function which manipulates tf eager\n"," tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n"," an ndarray (just call tensor.numpy()) but having access to eager tensors\n"," means `tf.py_function`s can use accelerators such as GPUs as well as\n"," being differentiable using a gradient tape.\n"," - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n"," (it is not differentiable, and manipulates numpy arrays). It drops the\n"," stateful argument making all functions stateful.\n"," \n","DEEPMD INFO batch 200 training time 17.40 s, testing time 0.05 s, total wall time 18.58 s\n","DEEPMD INFO batch 400 training time 15.71 s, testing time 0.05 s, total wall time 15.89 s\n","DEEPMD INFO batch 600 training time 13.96 s, testing time 0.05 s, total wall time 14.12 s\n","DEEPMD INFO batch 800 training time 15.35 s, testing time 0.05 s, total wall time 15.52 s\n","DEEPMD INFO batch 1000 training time 14.23 s, testing time 0.04 s, total wall time 14.39 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 1200 training time 15.23 s, testing time 0.04 s, total wall time 16.49 s\n","DEEPMD INFO batch 1400 training time 12.84 s, testing time 0.04 s, total wall time 12.99 s\n","DEEPMD INFO batch 1600 training time 14.92 s, testing time 0.08 s, total wall time 15.12 s\n","DEEPMD INFO batch 1800 training time 15.05 s, testing time 0.05 s, total wall time 15.36 s\n","DEEPMD INFO batch 2000 training time 18.45 s, testing time 0.05 s, total wall time 18.63 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 2200 training time 16.82 s, testing time 0.05 s, total wall time 17.54 s\n","DEEPMD INFO batch 2400 training time 15.95 s, testing time 0.15 s, total wall time 16.21 s\n","DEEPMD INFO batch 2600 training time 16.61 s, testing time 0.04 s, total wall time 16.77 s\n","DEEPMD INFO batch 2800 training time 16.35 s, testing time 0.05 s, total wall time 16.52 s\n","DEEPMD INFO batch 3000 training time 15.06 s, testing time 0.05 s, total wall time 15.23 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 3200 training time 16.39 s, testing time 0.05 s, total wall time 16.97 s\n","DEEPMD INFO batch 3400 training time 16.54 s, testing time 0.09 s, total wall time 16.76 s\n","DEEPMD INFO batch 3600 training time 15.44 s, testing time 0.05 s, total wall time 15.65 s\n","DEEPMD INFO batch 3800 training time 17.46 s, testing time 0.05 s, total wall time 17.64 s\n","DEEPMD INFO batch 4000 training time 16.75 s, testing time 0.06 s, total wall time 16.93 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 4200 training time 15.56 s, testing time 0.05 s, total wall time 16.64 s\n","DEEPMD INFO batch 4400 training time 16.32 s, testing time 0.06 s, total wall time 16.49 s\n","DEEPMD INFO batch 4600 training time 16.56 s, testing time 0.05 s, total wall time 16.73 s\n","DEEPMD INFO batch 4800 training time 15.88 s, testing time 0.05 s, total wall time 16.05 s\n","DEEPMD INFO batch 5000 training time 16.26 s, testing time 0.05 s, total wall time 16.43 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 5200 training time 17.87 s, testing time 0.05 s, total wall time 18.63 s\n","DEEPMD INFO batch 5400 training time 22.08 s, testing time 0.08 s, total wall time 22.33 s\n","DEEPMD INFO batch 5600 training time 15.93 s, testing time 0.09 s, total wall time 16.14 s\n","DEEPMD INFO batch 5800 training time 14.56 s, testing time 0.05 s, total wall time 14.73 s\n","DEEPMD INFO batch 6000 training time 16.01 s, testing time 0.05 s, total wall time 16.19 s\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use standard file APIs to delete files with this prefix.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use standard file APIs to delete files with this prefix.\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 6200 training time 14.63 s, testing time 0.05 s, total wall time 15.18 s\n","DEEPMD INFO batch 6400 training time 16.34 s, testing time 0.05 s, total wall time 16.55 s\n","DEEPMD INFO batch 6600 training time 14.53 s, testing time 0.04 s, total wall time 14.70 s\n","DEEPMD INFO batch 6800 training time 16.01 s, testing time 0.04 s, total wall time 16.18 s\n","DEEPMD INFO batch 7000 training time 15.53 s, testing time 0.11 s, total wall time 15.77 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 7200 training time 15.02 s, testing time 0.05 s, total wall time 15.75 s\n","DEEPMD INFO batch 7400 training time 16.69 s, testing time 0.06 s, total wall time 16.89 s\n","DEEPMD INFO batch 7600 training time 14.35 s, testing time 0.05 s, total wall time 14.52 s\n","DEEPMD INFO batch 7800 training time 16.44 s, testing time 0.05 s, total wall time 16.63 s\n","DEEPMD INFO batch 8000 training time 16.67 s, testing time 0.07 s, total wall time 16.86 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 8200 training time 15.28 s, testing time 0.05 s, total wall time 16.07 s\n","DEEPMD INFO batch 8400 training time 16.78 s, testing time 0.05 s, total wall time 16.95 s\n","DEEPMD INFO batch 8600 training time 17.12 s, testing time 0.09 s, total wall time 17.36 s\n","DEEPMD INFO batch 8800 training time 15.89 s, testing time 0.05 s, total wall time 16.06 s\n","DEEPMD INFO batch 9000 training time 16.76 s, testing time 0.05 s, total wall time 16.97 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 9200 training time 16.94 s, testing time 0.05 s, total wall time 17.55 s\n","DEEPMD INFO batch 9400 training time 15.52 s, testing time 0.05 s, total wall time 15.70 s\n","DEEPMD INFO batch 9600 training time 16.85 s, testing time 0.05 s, total wall time 17.02 s\n","DEEPMD INFO batch 9800 training time 17.93 s, testing time 0.05 s, total wall time 18.11 s\n","DEEPMD INFO batch 10000 training time 15.91 s, testing time 0.11 s, total wall time 16.16 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO average training time: 0.0803 s/batch (exclude first 200 batches)\n","DEEPMD INFO finished training\n","DEEPMD INFO wall time: 822.217 s\n"]}],"source":["# ########## Time Warning: 120 secs ##########\n","! cd DeePMD-kit_Tutorial/01.train/ && dp train input.json"]},{"cell_type":"markdown","id":"c10e0a81-ef33-49ab-ae2d-83fbd35985ac","metadata":{"tags":[]},"source":["On the screen, you will see the information of the data system(s)\n","\n","```\n","DEEPMD INFO -----------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: training ----------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n","DEEPMD INFO -------------------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: validation ----------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n","DEEPMD INFO -------------------------------------------------------------------------\n","```\n","\n","and the starting and final learning rate of this training\n","\n","```\n","DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n","```\n","\n","If everything works fine, you will see, on the screen, information printed every 1000 steps, like\n","\n","```\n","DEEPMD INFO batch 200 training time 6.04 s, testing time 0.02 s\n","DEEPMD INFO batch 400 training time 4.80 s, testing time 0.02 s\n","DEEPMD INFO batch 600 training time 4.80 s, testing time 0.02 s\n","DEEPMD INFO batch 800 training time 4.78 s, testing time 0.02 s\n","DEEPMD INFO batch 1000 training time 4.77 s, testing time 0.02 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 1200 training time 4.47 s, testing time 0.02 s\n","DEEPMD INFO batch 1400 training time 4.49 s, testing time 0.02 s\n","DEEPMD INFO batch 1600 training time 4.45 s, testing time 0.02 s\n","DEEPMD INFO batch 1800 training time 4.44 s, testing time 0.02 s\n","DEEPMD INFO batch 2000 training time 4.46 s, testing time 0.02 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","```\n","\n","They present the training and testing time counts. At the end of the 1000th batch, the model is saved in Tensorflow's checkpoint file `model.ckpt`. At the same time, the training and testing errors are presented in file `lcurve.out`. \n","\n","The file contains 8 columns, form left to right, are the training step, the validation loss, training loss, root mean square (RMS) validation error of energy, RMS training error of energy, RMS validation error of force, RMS training error of force and the learning rate. The RMS error (RMSE) of the energy is normalized by number of atoms in the system. \n","```\n","head -n 2 lcurve.out\n","# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n"," 0 2.02e+01 1.51e+01 1.37e-01 1.41e-01 6.40e-01 4.79e-01 1.0e-03\n","```\n","and\n","```\n","$ tail -n 2 lcurve.out\n"," 9800 2.45e-02 4.02e-02 3.20e-04 3.88e-04 2.40e-02 3.94e-02 4.3e-08\n"," 10000 4.60e-02 3.76e-02 8.65e-04 5.35e-04 4.52e-02 3.69e-02 3.5e-08\n","```\n","Volumes 4, 5 and 6, 7 present energy and force training and testing errors, respectively. "]},{"cell_type":"code","execution_count":12,"id":"4aabcec8-9058-4582-863d-00550bb05187","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n","# If there is no available reference data, rmse_*_{val,trn} will print nan\n"," 9800 2.40e-02 2.82e-02 2.27e-04 3.77e-04 2.35e-02 2.76e-02 4.3e-08\n"," 10000 3.82e-02 3.02e-02 6.48e-04 3.29e-04 3.75e-02 2.97e-02 3.5e-08\n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train.finished/ && head -n 2 lcurve.out && tail -n 2 lcurve.out"]},{"cell_type":"markdown","id":"34f3de74-9b9c-4143-94c6-1b91adbfb8d4","metadata":{},"source":["The loss function can be visualized to monitor the training process."]},{"cell_type":"code","execution_count":13,"id":"a7444fb4-a869-4b44-a1e3-2d74679189ed","metadata":{},"outputs":[{"data":{"image/png":"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7XZycnIG9RwhhAApjQkhTkJOTo71x+12o2madbujo4OUlBRefPFFlixZQlxcHM8++yy1tbV861vfIi8vD5fLxfTp03n++eeDXje0NDZ27Fjuv/9+rr76apKSkhgzZgxPPvmk9Xhoaez9999H0zT+8Y9/UFxcjMvlYtGiRUFBGsC9995LVlYWSUlJXHvttdxxxx19ZnPq6+u57LLLyMzMJD4+ngkTJvDMM88AUFhYCMDs2bPRNI0lS5ZYz3vmmWeYPHkycXFxTJo0iccee6zHtb/wwgssWrSIuLg4pk6dyvvvvz+g8wohTo4EQkKIIfXjH/+Ym266id27d7N06VI6OjqYO3cur732Gjt37uR73/seV1xxBZ988kmfr/Pwww9TXFzM1q1b+cEPfsD111/Pnj17+nzOXXfdxcMPP8zmzZtxOBxcffXV1mN//vOfue+++3jooYfYsmULY8aM4fHHH+/z9e6++2527drF3//+d3bv3s3jjz9ORkYGABs3bgRg7dq1lJeX89e//hWAp556irvuuov77ruP3bt3c//993P33Xfzxz/+Mei1f/SjH3HrrbeydetWFi1axDe+8Q1qa2v7Pa8Q4iTpQghxCjzzzDO62+22bpeUlOiA/sgjj/T73OXLl+u33nqrdfvss8/Wf/jDH1q3CwoK9Msvv9y67fP59KysLP3xxx8POtfWrVt1Xdf19957Twf0tWvXWs95/fXXdUBvb2/XdV3XFyxYoN9www1B13HGGWfoM2fO7PU6L7zwQv273/1u2MdCr8GUn5+vP/fcc0H3/fznP9cXLlwY9LwHH3zQery7u1vPy8vTH3rooX7PK4Q4OZIREkIMqeLi4qDbXq+X++67jxkzZpCenk5iYiJvv/02R44c6fN1ZsyYYX1vluCqqqoG/JxRo0YBWM/Zu3cv8+fPDzo+9Hao66+/nhdeeIFZs2Zx++23s2HDhj6Pr66upqysjGuuuYbExETrz7333svBgweDjl24cKH1vcPhoLi4mN27d5/QeYUQAyeBkBBiSCUkJATdfvjhh1m1ahW333477777Ltu2bWPp0qV0dXX1+TqhTdaapuHz+Qb8HHOFW+BzQle96f0sol22bBmHDx/m5ptv5vjx45x77rncdtttvR5vnuupp55i27Zt1p+dO3fy8ccf93muwOsb7HmFEAMngZAQIqLWr1/PRRddxOWXX87MmTMZN24c+/fvj/h1TJw40errMW3evLnf52VmZnLVVVfx7LPP8sgjj1hN206nE1AZL1N2djajR4/m0KFDFBUVBf0xm6tNgYGRx+Nhy5YtTJo0qd/zCiFOjiyfF0JEVFFRES+//DIbNmwgNTWVX//611RUVDB58uSIXseNN97IddddR3FxMYsWLWLNmjXs2LGDcePG9fqclStXMnfuXKZOnUpnZyevvfaadd1ZWVnEx8fz5ptvkpeXR1xcHG63m5/85CfcdNNNJCcns2zZMjo7O9m8eTP19fXccsst1ms/+uijTJgwgcmTJ7Nq1Srq6+ut5u6+ziuEODmSERJCRNTdd9/NnDlzWLp0KUuWLCEnJ4cVK1ZE/Douu+wy7rzzTm677TbmzJlDSUkJV111FXFxcb0+x+l0cueddzJjxgwWL16M3W7nhRdeAFRfz29+8xt+//vfk5uby0UXXQTAtddey9NPP83q1auZPn06Z599NqtXr+6REXrwwQd56KGHmDlzJuvXr+fVV1+1Vob1dV4hxMmRydJCCGE4//zzycnJ4U9/+lPEzikTqYUYXlIaE0JEpba2Np544gmWLl2K3W7n+eefZ+3atbzzzjvDfWlCiAiSQEgIEZU0TeONN97g3nvvpbOzk4kTJ/Lyyy9z3nnnDfelCSEiSEpjQgghhIha0iwthBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKj1/wE5Gnyd5rBYFwAAAABJRU5ErkJggg==","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","with open(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\") as f:\n"," headers = f.readline().split()[1:]\n","lcurve = pd.DataFrame(np.loadtxt(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\"), columns = headers )\n","legends = [\"rmse_e_val\", \"rmse_e_trn\", \"rmse_f_val\" , \"rmse_f_trn\" ]\n","for legend in legends:\n"," plt.loglog(lcurve[\"step\"], lcurve[legend], label = legend )\n","plt.legend()\n","plt.xlabel(\"Training steps\")\n","plt.ylabel(\"Loss\")\n","plt.show()"]},{"cell_type":"markdown","id":"8009ad0a-9902-42d3-b280-caee92cbdf10","metadata":{},"source":["### 4 Freeze a model \n","\n","At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute"]},{"cell_type":"code","execution_count":14,"id":"b20d368a-135c-4314-ae4c-47bf1f28c4d7","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD WARNING The following nodes are not in the graph: {'spin_attr/ntypes_spin', 'fitting_attr/aparam_nall'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n","DEEPMD INFO The following nodes will be frozen: ['model_type', 'o_atom_virial', 'fitting_attr/daparam', 'model_attr/model_type', 'model_attr/tmap', 'o_force', 'o_virial', 'descrpt_attr/rcut', 'train_attr/min_nbor_dist', 'fitting_attr/dfparam', 't_mesh', 'o_atom_energy', 'train_attr/training_script', 'descrpt_attr/ntypes', 'o_energy', 'model_attr/model_version']\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.extract_sub_graph`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.extract_sub_graph`\n","DEEPMD INFO 1222 ops in the final graph.\n"]}],"source":["## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Train and Freeze the Model\n","! cd DeePMD-kit_Tutorial/01.train.finished/ && dp freeze -o graph.pb"]},{"cell_type":"markdown","id":"3b23f3c9-5809-4a65-9126-f9e6d2f3a10b","metadata":{},"source":["and it will output a model file named `graph.pb` in the current directory. "]},{"cell_type":"markdown","id":"2882c201-0e85-46d0-94f8-e055a540b6fb","metadata":{},"source":["### 5 Test a model \n","\n","We can check the quality of the trained model by running\n"]},{"cell_type":"code","execution_count":15,"id":"5d201246-b110-4e63-a09b-ad7308bc1367","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","DEEPMD WARNING You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n","DEEPMD INFO # ---------------output of dp test--------------- \n","DEEPMD INFO # testing system : ../00.data/validation_data\n","DEEPMD INFO # number of test data : 40 \n","DEEPMD INFO Energy MAE : 1.947297e-03 eV\n","DEEPMD INFO Energy RMSE : 2.568049e-03 eV\n","DEEPMD INFO Energy MAE/Natoms : 3.894594e-04 eV\n","DEEPMD INFO Energy RMSE/Natoms : 5.136098e-04 eV\n","DEEPMD INFO Force MAE : 2.478063e-02 eV/A\n","DEEPMD INFO Force RMSE : 3.354447e-02 eV/A\n","DEEPMD INFO Virial MAE : 2.883222e-02 eV\n","DEEPMD INFO Virial RMSE : 4.083024e-02 eV\n","DEEPMD INFO Virial MAE/Natoms : 5.766444e-03 eV\n","DEEPMD INFO Virial RMSE/Natoms : 8.166047e-03 eV\n","DEEPMD INFO # ----------------------------------------------- \n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train.finished/ && dp test -m graph.pb -s ../00.data/validation_data"]},{"cell_type":"markdown","id":"7f48e0a9-644f-4588-b9f3-cc115851a1ed","metadata":{},"source":["The correlation between predicted data and original data can also be calculated."]},{"cell_type":"code","execution_count":16,"id":"be03c8da-e4f9-439d-bb22-800b651a7737","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n"]},{"name":"stderr","output_type":"stream","text":["WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n"]},{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n"]},{"name":"stderr","output_type":"stream","text":["2024-03-19 19:42:27.272130: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n","To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-03-19 19:42:27.275152: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n","2024-03-19 19:42:27.294336: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","WARNING:deepmd.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n"]}],"source":["import dpdata\n","\n","training_systems = dpdata.LabeledSystem(\"./DeePMD-kit_Tutorial/00.data/training_data\", fmt = \"deepmd/npy\") \n","predict = training_systems.predict(\"./DeePMD-kit_Tutorial/01.train.finished/graph.pb\") "]},{"cell_type":"code","execution_count":17,"id":"b4005a62-8bf2-4aaf-8865-20ea303ea0f2","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":17,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","plt.scatter(training_systems[\"energies\"], predict[\"energies\"])\n","\n","x_range = np.linspace(plt.xlim()[0], plt.xlim()[1])\n","\n","plt.plot(x_range, x_range, \"r--\", linewidth = 0.25)\n","plt.xlabel(\"Energy of DFT\")\n","plt.ylabel(\"Energy predicted by deep potential\")\n","plt.plot()"]},{"cell_type":"markdown","id":"fffaad23-53a6-47dd-8d91-9beb68d1212b","metadata":{},"source":["### 6 Run MD with LAMMPS\n","\n","The model can drive molecular dynamics in LAMMPS. \n"]},{"cell_type":"code","execution_count":18,"id":"d0ceac75-9753-4ae8-b954-c2cc6d005e46","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["DeePMD-kit_Tutorial\n","\u001b[01;34m.\u001b[0m\n","├── \u001b[01;32mch4.dump\u001b[0m\n","├── \u001b[01;32mconf.lmp\u001b[0m\n","├── \u001b[01;32mgraph.pb\u001b[0m\n","└── \u001b[01;32min.lammps\u001b[0m\n","\n","0 directories, 4 files\n"]}],"source":["! ls\n","! cd ./DeePMD-kit_Tutorial/02.lmp && cp ../01.train.finished/graph.pb ./ && tree -L 1"]},{"cell_type":"markdown","id":"c794572f-7e9c-42f7-b78a-4d82bd3f3118","metadata":{},"source":["Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the lammps input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n","```\n","pair_style deepmd graph.pb\n","pair_coeff * *\n","```\n","where the pair style deepmd is invoked and the model file `graph.pb` is provided, which means the atomic interaction will be computed by the DP model that is stored in the file `graph.pb`. \n","\n","In an environment with a compatibable version of LAMMPS, the deep potential molecular dynamics can be performed via \n","\n","```bash\n","lmp -i input.lammps\n","```"]},{"cell_type":"code","execution_count":19,"id":"f4501e9c-541c-431d-8847-d0d9eecfb0e0","metadata":{"scrolled":true},"outputs":[{"name":"stdout","output_type":"stream","text":["LAMMPS (2 Aug 2023 - Update 1)\n","OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)\n"," using 1 OpenMP thread(s) per MPI task\n","Loaded 1 plugins from /root/miniconda3/envs/deepmd/lib/deepmd_lmp\n","Reading data file ...\n"," triclinic box = (0 0 0) to (10.114259 10.263124 10.216793) with tilt (0.036749877 0.13833062 -0.056322169)\n"," 1 by 1 by 1 MPI processor grid\n"," reading atoms ...\n"," 5 atoms\n"," read_data CPU = 0.011 seconds\n","DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n","Summary of lammps deepmd module ...\n"," >>> Info of deepmd-kit:\n"," installed to: /root/miniconda3/envs/deepmd\n"," source: v2.2.7\n"," source branch: HEAD\n"," source commit: 839f4fe7\n"," source commit at: 2023-10-27 21:10:24 +0800\n"," surpport model ver.:1.1 \n"," build variant: cpu\n"," build with tf inc: /root/miniconda3/envs/deepmd/include;/root/miniconda3/envs/deepmd/include\n"," build with tf lib: /root/miniconda3/envs/deepmd/lib/libtensorflow_cc.so\n"," set tf intra_op_parallelism_threads: 0\n"," set tf inter_op_parallelism_threads: 0\n"," >>> Info of lammps module:\n"," use deepmd-kit at: /root/miniconda3/envs/deepmdDeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n","2024-03-19 19:42:31.143521: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n","To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-03-19 19:42:31.150107: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n","2024-03-19 19:42:31.217323: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n","INVALID_ARGUMENT: Tensor spin_attr/ntypes_spin:0, specified in either feed_devices or fetch_devices was not found in the Graph\n"," >>> Info of model(s):\n"," using 1 model(s): graph.pb \n"," rcut in model: 6\n"," ntypes in model: 2\n","\n","CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n","\n","Your simulation uses code contributions which should be cited:\n","- USER-DEEPMD package:\n","The log file lists these citations in BibTeX format.\n","\n","CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n","\n","Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule\n","Neighbor list info ...\n"," update: every = 10 steps, delay = 0 steps, check = no\n"," max neighbors/atom: 2000, page size: 100000\n"," master list distance cutoff = 7\n"," ghost atom cutoff = 7\n"," binsize = 3.5, bins = 3 3 3\n"," 1 neighbor lists, perpetual/occasional/extra = 1 0 0\n"," (1) pair deepmd, perpetual\n"," attributes: full, newton on\n"," pair build: full/bin/atomonly\n"," stencil: full/bin/3d\n"," bin: standard\n","Setting up Verlet run ...\n"," Unit style : metal\n"," Current step : 0\n"," Time step : 0.001\n","Per MPI rank memory allocation (min/avg/max) = 2.559 | 2.559 | 2.559 Mbytes\n"," Step PotEng KinEng TotEng Temp Press Volume \n"," 0 -219.77406 0.025852029 -219.74821 50 -779.25188 1060.5429 \n"," 100 -219.7691 0.020797437 -219.7483 40.223994 -637.14305 1060.5429 \n"," 200 -219.77444 0.024939285 -219.7495 48.234676 -320.40098 1060.5429 \n"," 300 -219.78439 0.033072979 -219.75132 63.965925 43.026442 1060.5429 \n"," 400 -219.78739 0.034550668 -219.75284 66.823899 351.67696 1060.5429 \n"," 500 -219.78236 0.028176993 -219.75419 54.496675 666.75737 1060.5429 \n"," 600 -219.78253 0.025728877 -219.7568 49.761815 711.163 1060.5429 \n"," 700 -219.78894 0.028382389 -219.76055 54.893929 479.13643 1060.5429 \n"," 800 -219.78903 0.024859643 -219.76417 48.080642 83.077656 1060.5429 \n"," 900 -219.78291 0.015448216 -219.76746 29.878151 -300.47299 1060.5429 \n"," 1000 -219.78076 0.009958727 -219.7708 19.261016 -547.51181 1060.5429 \n"," 1100 -219.78482 0.010708236 -219.77412 20.710629 -528.61764 1060.5429 \n"," 1200 -219.79088 0.014010222 -219.77687 27.096949 -271.00462 1060.5429 \n"," 1300 -219.79342 0.014851244 -219.77856 28.723555 113.17225 1060.5429 \n"," 1400 -219.79258 0.013154759 -219.77943 25.442411 429.376 1060.5429 \n"," 1500 -219.79351 0.013439034 -219.78007 25.992223 502.07008 1060.5429 \n"," 1600 -219.79556 0.015244258 -219.78032 29.483679 283.58943 1060.5429 \n"," 1700 -219.79243 0.012780435 -219.77965 24.718437 -118.65863 1060.5429 \n"," 1800 -219.78753 0.0093475149 -219.77818 18.078881 -440.59299 1060.5429 \n"," 1900 -219.78644 0.010485894 -219.77595 20.280601 -548.35192 1060.5429 \n"," 2000 -219.78657 0.014291536 -219.77228 27.641033 -379.53425 1060.5429 \n"," 2100 -219.78582 0.019271324 -219.76655 37.272363 3.8622352 1060.5429 \n"," 2200 -219.78342 0.023480599 -219.75994 45.413455 421.70988 1060.5429 \n"," 2300 -219.7843 0.029382788 -219.75492 56.828785 667.59953 1060.5429 \n"," 2400 -219.78777 0.035686462 -219.75209 69.020621 708.56999 1060.5429 \n"," 2500 -219.78484 0.034331665 -219.75051 66.400331 560.05263 1060.5429 \n"," 2600 -219.781 0.031551297 -219.74945 61.022863 272.92453 1060.5429 \n"," 2700 -219.77767 0.028694937 -219.74898 55.498424 -150.97111 1060.5429 \n"," 2800 -219.77576 0.026724406 -219.74903 51.68725 -531.59493 1060.5429 \n"," 2900 -219.77353 0.02427308 -219.74926 46.946179 -733.24223 1060.5429 \n"," 3000 -219.77341 0.023395232 -219.75001 45.248349 -706.66882 1060.5429 \n"," 3100 -219.77969 0.028192211 -219.7515 54.526108 -543.66237 1060.5429 \n"," 3200 -219.78698 0.033417316 -219.75356 64.631901 -242.21772 1060.5429 \n"," 3300 -219.79019 0.034565479 -219.75562 66.852545 120.70082 1060.5429 \n"," 3400 -219.78417 0.026911374 -219.75726 52.048862 557.3674 1060.5429 \n"," 3500 -219.77449 0.01580688 -219.75868 30.571837 766.81564 1060.5429 \n"," 3600 -219.77669 0.015991276 -219.7607 30.928474 683.18009 1060.5429 \n"," 3700 -219.78572 0.022618548 -219.7631 43.746176 290.23355 1060.5429 \n"," 3800 -219.79279 0.027795739 -219.76499 53.759299 -181.24253 1060.5429 \n"," 3900 -219.78826 0.022283131 -219.76598 43.097451 -515.8167 1060.5429 \n"," 4000 -219.78236 0.015546589 -219.76681 30.068411 -608.47483 1060.5429 \n"," 4100 -219.7863 0.018324324 -219.76797 35.440785 -500.82916 1060.5429 \n"," 4200 -219.79138 0.022304319 -219.76908 43.138431 -200.46212 1060.5429 \n"," 4300 -219.78855 0.019344221 -219.7692 37.413352 235.01595 1060.5429 \n"," 4400 -219.78187 0.013421854 -219.76845 25.958995 569.04151 1060.5429 \n"," 4500 -219.77866 0.011098531 -219.76756 21.465493 679.98587 1060.5429 \n"," 4600 -219.78476 0.018276314 -219.76649 35.347929 462.8788 1060.5429 \n"," 4700 -219.79061 0.026535396 -219.76407 51.321689 -44.12474 1060.5429 \n"," 4800 -219.78698 0.027259367 -219.75972 52.721911 -476.42292 1060.5429 \n"," 4900 -219.77955 0.025502005 -219.75405 49.323023 -698.38931 1060.5429 \n"," 5000 -219.77457 0.026622642 -219.74795 51.49043 -707.85111 1060.5429 \n","Loop time of 44.1004 on 1 procs for 5000 steps with 5 atoms\n","\n","Performance: 9.796 ns/day, 2.450 hours/ns, 113.378 timesteps/s, 566.888 atom-step/s\n","94.5% CPU use with 1 MPI tasks x 1 OpenMP threads\n","\n","MPI task timing breakdown:\n","Section | min time | avg time | max time |%varavg| %total\n","---------------------------------------------------------------\n","Pair | 43.95 | 43.95 | 43.95 | 0.0 | 99.66\n","Neigh | 0.008028 | 0.008028 | 0.008028 | 0.0 | 0.02\n","Comm | 0.0354 | 0.0354 | 0.0354 | 0.0 | 0.08\n","Output | 0.0056147 | 0.0056147 | 0.0056147 | 0.0 | 0.01\n","Modify | 0.085761 | 0.085761 | 0.085761 | 0.0 | 0.19\n","Other | | 0.0159 | | | 0.04\n","\n","Nlocal: 5 ave 5 max 5 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","Nghost: 130 ave 130 max 130 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","Neighs: 0 ave 0 max 0 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","FullNghs: 20 ave 20 max 20 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","\n","Total # of neighbors = 20\n","Ave neighs/atom = 4\n","Neighbor list builds = 500\n","Dangerous builds not checked\n","Total wall time: 0:00:45\n"]}],"source":["! cd ./DeePMD-kit_Tutorial/02.lmp && lmp -i in.lammps"]},{"cell_type":"markdown","id":"3c1f883a-a768-4de1-8681-effd90643fee","metadata":{},"source":["## References \n","\n","1. https://docs.deepmodeling.com/projects/deepmd/en/master/index.html\n","2. https://github.com/deepmodeling/deepmd-kit "]},{"cell_type":"markdown","id":"98a7aff7-daaf-494f-beb9-aa99688ed0a2","metadata":{},"source":["\"Open"]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.13"}},"nbformat":4,"nbformat_minor":5} From 0a9d54e916e12bbf9837dfbc99030a41e06c2dd5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 12:34:41 +0000 Subject: [PATCH 02/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 1407 ++++++++++++++++++++++++- 1 file changed, 1406 insertions(+), 1 deletion(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 9946eb2ea5..a06f4c5e14 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1 +1,1406 @@ -{"cells":[{"cell_type":"markdown","id":"b22f597d-ec17-4ab9-8933-28e92af2438d","metadata":{},"source":["# DeePMD-kit Quick Start Tutorial"]},{"cell_type":"markdown","id":"7a41db5f","metadata":{},"source":["\"Open"]},{"cell_type":"markdown","id":"85b62e3d-dfae-402f-96a5-5672367d2d17","metadata":{},"source":["
\n","

\n"," ©️ Copyright 2024 @ Authors
\n"," 📖 Getting Started Guide
\n"," Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
\n"," This document can be executed directly on the Bohrium Notebook. To begin, click the Connect button located at the top of the interface. We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n","

\n","
"]},{"cell_type":"markdown","id":"dbab8963","metadata":{},"source":["

This is a quick start guide for \"Deep Potential\" molecular dynamics using DeePMD-kit, through which you can quickly understand the paradigm cycle that DeePMD-kit operates in and apply it to your projects.

\n","\n","

Deep Potential is the convergence of machine learning and physical principles, presenting a new computational paradigm as shown in the figure below.

\n","
\n"," \"Fig2\"\n","

Figure | A new computational paradigm, composed of Molecular Modeling, Machine Learning, and High-Performance Computing (HPC).

\n","
\n"]},{"cell_type":"markdown","id":"f4416190-479c-4b2f-9e08-33690bc4941d","metadata":{},"source":["## Task\n","\n","> **Mastering the paradigm cycle of using DeePMD-kit to establish deep potential molecular dynamics models, and following a complete case to learn how to apply it to molecular dynamics tasks.**\n","\n","By the end of this tutorial, you will be able to:\n","\n","* Prepare the formataive dataset and running scripts for training with DeePMD-kit;\n","* Train, freeze, and test DeePMD-kit models;\n","* Use DeePMD-kit in Lammps for calculations;\n","\n","Work through this tutorial. It will take you 20 minutes, max!"]},{"cell_type":"markdown","id":"8e6587cb-ba6e-42ba-a139-0595fc7f79d7","metadata":{},"source":["## Table of contents\n","\n","
\"deepmd-kit\"
\n","\n","* [Background](#background)\n","* [Practice](#practice)\n"," * [1. Data preparation](#dataprepare)\n"," * [2. Prepare input script](#inputscript)\n"," * [3. Train a model](#train)\n"," * [4. Freeze a model](#freeze)\n"," * [5. Test a model](#test)\n"," * [6. Run MD with LAMMPS](#lammpsmd)\n","* [References](#references)\n"]},{"cell_type":"markdown","id":"42afcb0e","metadata":{},"source":["## Background \n","\n","In this tutorial, we will take the gaseous methane molecule as an example to provide a detailed introduction to the training and application of the Deep Potential (DP) model.\n","\n","DeePMD-kit is a software tool that employs neural networks to fit potential energy models based on first-principles data for molecular dynamics simulations. Without manual intervention, it can end-to-end transform the data provided by users into a deep potential model in a matter of hours. This model can seamlessly integrate with common molecular dynamics simulation software (like LAMMPS, OpenMM, and GROMACS).\n","\n","DeePMD-kit significantly elevates the limits of molecular dynamics through high-performance computing and machine learning, achieving system scales of up to hundreds of millions of atoms while still maintaining the high accuracy of \"ab initio\" calculations. The simulation time scale is improved by at least 1000 times compared to traditional methods. Its achievements earned the 2020 ACM Gordon Bell Prize, one of the highest honors in the field of high-performance computing, and it has been used by over a thousand research groups in physics, chemistry, materials science, biology, and other fields globally.\n","\n","\"Fig1\"\n","\n","For more detailed usage, you can refer to the [DeePMD-kit’s documentation](https://docs.deepmodeling.org/projects/deepmd/en/master/index.html) as a comprehensive reference.\n","\n","In this case, the Deep Potential (DP) model was generated using the **DeePMD-kit package (v2.2.1)**.\n","\n"]},{"cell_type":"markdown","id":"275d9d23","metadata":{},"source":["## Practice "]},{"cell_type":"markdown","id":"e452966d","metadata":{},"source":["### 1 Data Preparation \n","\n","We have prepared the initial data for $CH_4$ required to run DeePMD-kit computations and placed it in the `DeePMD-kit_Tutorial` folder. You can view the corresponding files by clicking on the dataset on the left side:"]},{"cell_type":"code","execution_count":2,"id":"34ea0475","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Current path is: /personal/bohr/DeePMD-kit-Tutorial-21f1/v1\n"]}],"source":["# For security reasons, we do not have write permission to the dataset folder, so we copy it to the `/data/` directory:\n","! cp -nr /bohr/ /personal/\n","\n","# Here, we define some paths and switch to the working path for ease of subsequent calls:\n","import os\n","bohr_dataset_url = \"/bohr/DeePMD-kit-Tutorial-21f1/v1/\" # The URL can be copied from the dataset section on the left.\n","work_path = os.path.join(\"/personal\", bohr_dataset_url[1:]) # A slice operation is used to remove the leading \"/\" from the path.\n","os.chdir(work_path)\n","print(f\"Current path is: {os.getcwd()}\")\n"]},{"cell_type":"markdown","id":"a265a0d9","metadata":{},"source":["Let's take a look at the downloaded DeePMD-kit_Tutorial folder."]},{"cell_type":"code","execution_count":3,"id":"2ea12f86","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial\u001b[0m\n","├── \u001b[01;34m00.data\u001b[0m\n","├── \u001b[01;34m01.train\u001b[0m\n","├── \u001b[01;34m01.train.finished\u001b[0m\n","├── \u001b[01;34m02.lmp\u001b[0m\n","└── \u001b[01;34m02.lmp.finished\u001b[0m\n","\n","5 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial -L 1"]},{"cell_type":"markdown","id":"1da4b858","metadata":{},"source":["There are 3 subfolders under the DeePMD-kit_Tutorial folder: 00.data, 01.train, and 02.lmp.\n","\n","- The 00.data folder is used to store training and testing data.\n","- The 01.train folder contains example scripts for training models using DeePMD-kit.\n","- The 01.train.finished folder includes the complete results of the training process.\n","- The 02.lmp folder contains example scripts for molecular dynamics simulations using LAMMPS.\n","\n","Let's first take a look at the DeePMD-kit_Tutorial/00.data folder."]},{"cell_type":"code","execution_count":4,"id":"509f7efe","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data\u001b[0m\n","├── \u001b[01;34mabacus_md\u001b[0m\n","├── \u001b[01;34mtraining_data\u001b[0m\n","└── \u001b[01;34mvalidation_data\u001b[0m\n","\n","3 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data -L 1"]},{"cell_type":"markdown","id":"8373a3a4","metadata":{},"source":["DeePMD-kit's training data originates from first-principles calculation data, including atomic types, simulation cells, atomic coordinates, atomic forces, system energies, and virials.\n","\n","
\"image-20230116161737203\"
\n","\n","In the *00.data* folder, there is only the *abacus_md* folder, which contains data obtained through *ab initio* Molecular Dynamics (AIMD) simulations using ABACUS. In this tutorial, we have already completed the *ab initio* molecular dynamics calculations for the methane molecule for you.\n","\n","Detailed information about ABACUS can be found in its [documentation](https://abacus.deepmodeling.com/en/latest/). \n","\n","DeePMD-kit uses a compressed data format. All training data should first be converted into this format before they can be used in DeePMD-kit. This data format is explained in detail in the DeePMD-kit manual, which can be found on [DeePMD-kit's Github](http://www.github.com/deepmodeling/deepmd-kit).\n","\n","We provide a convenient tool **dpdata**, which can convert data generated by VASP, CP2K, Gaussian, Quantum Espresso, ABACUS, and LAMMPS into DeePMD-kit's compressed format.\n","\n","A snapshot of a molecular system that contains computational data information is called a frame. A data system comprises many frames sharing the same number of atoms and atom types.\n","\n","For example, a molecular dynamics trajectory can be converted into a data system, where each timestep corresponds to one frame in the system.\n"]},{"cell_type":"markdown","id":"e62f0115","metadata":{},"source":["Next, we use the dpdata tool to randomly split the data in abacus_md into training and validation data.\n"]},{"cell_type":"code","execution_count":5,"id":"b5fbc838","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["# the data contains 201 frames\n","# the training data contains 161 frames\n","# the validation data contains 40 frames\n"]}],"source":["import dpdata \n","import numpy as np\n","\n","# load data of abacus/md format\n","data = dpdata.LabeledSystem('DeePMD-kit_Tutorial/00.data/abacus_md', fmt = 'abacus/md') \n","print('# the data contains %d frames' % len(data))\n","\n","# random choose 40 index for validation_data\n","index_validation = np.random.choice(201,size=40,replace=False)\n","\n","# other indexes are training_data\n","index_training = list(set(range(201))-set(index_validation))\n","data_training = data.sub_system(index_training)\n","data_validation = data.sub_system(index_validation)\n","\n","# all training data put into directory:\"training_data\"\n","data_training.to_deepmd_npy('DeePMD-kit_Tutorial/00.data/training_data')\n","\n","# all validation data put into directory:\"validation_data\"\n","data_validation.to_deepmd_npy('DeePMD-kit_Tutorial/00.data/validation_data')\n","\n","print('# the training data contains %d frames' % len(data_training)) \n","print('# the validation data contains %d frames' % len(data_validation)) "]},{"cell_type":"markdown","id":"98719865-ab3d-4440-8c14-78a1c253c3a6","metadata":{},"source":["As you can see, 161 frames are picked as training data, and the other 40 frames are validation dat.\n","\n","Let's take another look at the 00.data folder, where new files have been generated, which are the training and validation sets required for Deep Potential training with DeePMD-kit.\n"]},{"cell_type":"code","execution_count":6,"id":"e5befaf5-c464-4e8f-8544-a2634f5fd1d2","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data/\u001b[0m\n","├── \u001b[01;34mabacus_md\u001b[0m\n","├── \u001b[01;34mtraining_data\u001b[0m\n","└── \u001b[01;34mvalidation_data\u001b[0m\n","\n","3 directories, 0 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data/ -L 1"]},{"cell_type":"code","execution_count":7,"id":"70cc9898","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\u001b[01;34mDeePMD-kit_Tutorial/00.data/training_data\u001b[0m\n","├── \u001b[01;34mset.000\u001b[0m\n","├── \u001b[01;32mtype.raw\u001b[0m\n","└── \u001b[01;32mtype_map.raw\u001b[0m\n","\n","1 directory, 2 files\n"]}],"source":["! tree DeePMD-kit_Tutorial/00.data/training_data -L 1"]},{"cell_type":"markdown","id":"542b24fd","metadata":{},"source":["The functions of these files are as follows:\n","\n","- set.000: It is a directory that contains compressed format data (NumPy compressed arrays).\n","- type.raw: It is a file that contains the types of atoms (represented as integers).\n","- type_map.raw: It is a file that contains the names of the types of atoms.\n","\n","Let's take a look at these files."]},{"cell_type":"markdown","id":"99770e51-4d9e-44db-bb93-1c7061c8862c","metadata":{},"source":["Let's have a look at `type.raw`:"]},{"cell_type":"code","execution_count":8,"id":"a686585c-3e5b-4a5c-9cc7-4db7759b74b2","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["0\n","0\n","0\n","0\n","1\n"]}],"source":["! cat DeePMD-kit_Tutorial/00.data/training_data/type.raw "]},{"cell_type":"markdown","id":"b5357cc5-9cdd-4c52-a611-a84cee739fb0","metadata":{},"source":["This tells us there are 5 atoms in this example, 4 atoms represented by type \"0\", and 1 atom represented by type \"1\".\n","Sometimes one needs to map the integer types to atom name. The mapping can be given by the file `type_map.raw`"]},{"cell_type":"code","execution_count":9,"id":"6216f02d-3a21-481f-99da-3f23b438a7c0","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["H\n","C\n"]}],"source":["! cat DeePMD-kit_Tutorial/00.data/training_data/type_map.raw"]},{"cell_type":"markdown","id":"1196aa0f-22c5-4b96-8640-c82068fa7828","metadata":{},"source":["This tells us the type \"0\" is named by \"H\", and the type \"1\" is named by \"C\".\n","\n","More detailed documentation on using dpdata for data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)"]},{"cell_type":"markdown","id":"ac6c969b-10cb-49f0-9b84-7dc9ffa38c61","metadata":{},"source":["### 2 Prepare input script \n","Once the data preparation is done, we can go on with training. Now go to the training directory.\n","DeePMD-kit requires a `json` format file to specify parameters for training. "]},{"cell_type":"code","execution_count":10,"id":"d371a240","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["{\n"," \"_comment\": \" model parameters\",\n"," \"model\": {\n","\t\"type_map\":\t[\"H\", \"C\"],\n","\t\"descriptor\" :{\n","\t \"type\":\t\t\"se_e2_a\",\n","\t \"sel\":\t\t\"auto\",\n","\t \"rcut_smth\":\t0.50,\n","\t \"rcut\":\t\t6.00,\n","\t \"neuron\":\t\t[25, 50, 100],\n","\t \"resnet_dt\":\tfalse,\n","\t \"axis_neuron\":\t16,\n","\t \"seed\":\t\t1,\n","\t \"_comment\":\t\t\" that's all\"\n","\t},\n","\t\"fitting_net\" : {\n","\t \"neuron\":\t\t[240, 240, 240],\n","\t \"resnet_dt\":\ttrue,\n","\t \"seed\":\t\t1,\n","\t \"_comment\":\t\t\" that's all\"\n","\t},\n","\t\"_comment\":\t\" that's all\"\n"," },\n","\n"," \"learning_rate\" :{\n","\t\"type\":\t\t\"exp\",\n","\t\"decay_steps\":\t50,\n","\t\"start_lr\":\t0.001,\t\n","\t\"stop_lr\":\t3.51e-8,\n","\t\"_comment\":\t\"that's all\"\n"," },\n","\n"," \"loss\" :{\n","\t\"type\":\t\t\"ener\",\n","\t\"start_pref_e\":\t0.02,\n","\t\"limit_pref_e\":\t1,\n","\t\"start_pref_f\":\t1000,\n","\t\"limit_pref_f\":\t1,\n","\t\"start_pref_v\":\t0,\n","\t\"limit_pref_v\":\t0,\n","\t\"_comment\":\t\" that's all\"\n"," },\n","\n"," \"training\" : {\n","\t\"training_data\": {\n","\t \"systems\": [\"../00.data/training_data\"],\n","\t \"batch_size\": \"auto\",\n","\t \"_comment\":\t \"that's all\"\n","\t},\n","\t\"validation_data\":{\n","\t \"systems\":\t [\"../00.data/validation_data\"],\n","\t \"batch_size\": \"auto\",\n","\t \"numb_btch\": 1,\n","\t \"_comment\":\t \"that's all\"\n","\t},\n","\t\"numb_steps\":\t10000,\n","\t\"seed\":\t\t10,\n","\t\"disp_file\":\t\"lcurve.out\",\n","\t\"disp_freq\":\t200,\n","\t\"save_freq\":\t1000,\n","\t\"_comment\":\t\"that's all\"\n"," }, \n","\n"," \"_comment\":\t\t\"that's all\"\n","}\n","\n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train/ && cat input.json"]},{"cell_type":"markdown","id":"0a4c680a-abcf-40b9-b00e-fa4615aa91b9","metadata":{},"source":["DeePMD-kit requires a `json` format file to specify parameters for training. \n","\n","In the model section, the parameters of embedding and fitting networks are specified.\n","```json\n","\"model\":{\n"," \"type_map\": [\"H\", \"C\"], \n"," \"descriptor\":{\n"," \"type\": \"se_e2_a\", \n"," \"rcut\": 6.00, \n"," \"rcut_smth\": 0.50, \n"," \"sel\": \"auto\", \n"," \"neuron\": [25, 50, 100], \n"," \"resnet_dt\": false,\n"," \"axis_neuron\": 16, \n"," \"seed\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"fitting_net\":{\n"," \"neuron\": [240, 240, 240], \n"," \"resnet_dt\": true,\n"," \"seed\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"_comment\": \"that's all\"'\n","},\n","```\n","The explanation for some of the parameters is as follows:\n","\n","| Parameter | Expiation |\n","| ------------------------ | ------------------------------------------------------------ |\n","| type_map | *the* *name* *of* *each* *type* *of* *atom* |\n","| descriptor > type | *the* *type* *of* *descriptor* |\n","| descriptor > rcut | *cut-off* *radius* |\n","| descriptor > rcut_smth | *where* *the* *smoothing* *starts* |\n","| descriptor > sel | *the* *maximum* *number* *of* *type* *i* *atoms* *in* *the* *cut-off* *radius* |\n","| descriptor > neuron | *size* *of* *the* *embedding* *neural* *network* |\n","| descriptor > axis_neuron | *the* *size* *of* *the* *submatrix* *of* *G* *(embedding* *matrix)* |\n","| fitting_net > neuron | *size* *of* *the* *fitting* *neural* *network* |\n","\n","The `se_e2_a` descriptor is used to train the DP model. The item neurons set the size of the descriptors and fitting network to [25, 50, 100] and [240, 240, 240], respectively. The components in local environment to smoothly go to zero from 0.5 to 6 Å.\n","\n","The following are the parameters that specify the learning rate and loss function.\n","```json\n"," \"learning_rate\" :{\n"," \"type\": \"exp\",\n"," \"decay_steps\": 50,\n"," \"start_lr\": 0.001, \n"," \"stop_lr\": 3.51e-8,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"loss\" :{\n"," \"type\": \"ener\",\n"," \"start_pref_e\": 0.02,\n"," \"limit_pref_e\": 1,\n"," \"start_pref_f\": 1000,\n"," \"limit_pref_f\": 1,\n"," \"start_pref_v\": 0,\n"," \"limit_pref_v\": 0,\n"," \"_comment\": \"that's all\"\n"," },\n","```\n","In the loss function, `pref_e` increases from 0.02 to 1, and `pref_f` decreases from 1000 to 1 progressively, which means that the force term dominates at the beginning, while energy and virial terms become important at the end. This strategy is very effective and reduces the total training time. `pref_v` is set to 0 , indicating that no virial data are included in the training process. The starting learning rate, stop learning rate, and decay steps are set to 0.001, 3.51e-8, and 50, respectively. The model is trained for 10000 steps.\n","\n","The training parameters are given in the following\n","```json\n"," \"training\" : {\n"," \"training_data\": {\n"," \"systems\": [\"../00.data/training_data\"], \n"," \"batch_size\": \"auto\", \n"," \"_comment\": \"that's all\"\n"," },\n"," \"validation_data\":{\n"," \"systems\": [\"../00.data/validation_data/\"],\n"," \"batch_size\": \"auto\", \n"," \"numb_btch\": 1,\n"," \"_comment\": \"that's all\"\n"," },\n"," \"numb_steps\": 10000, \n"," \"seed\": 10,\n"," \"disp_file\": \"lcurve.out\",\n"," \"disp_freq\": 200,\n"," \"save_freq\": 10000,\n"," },\n","```"]},{"cell_type":"markdown","id":"7b0edb0f-df47-4e6c-8c37-5f32c4bd6b39","metadata":{},"source":["More detailed docs about Data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)"]},{"cell_type":"markdown","id":"bafe20b8-3bde-403c-ae42-b68ba5f29703","metadata":{},"source":["### 3 Train a model \n","After the training script is prepared, we can start the training with DeePMD-kit by simply running"]},{"cell_type":"code","execution_count":11,"id":"e04a05a3-ccac-474b-bc24-58fbf20b9ffe","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD INFO Calculate neighbor statistics... (add --skip-neighbor-stat to skip this step)\n","DEEPMD INFO training data with min nbor dist: 1.0495341121569708\n","DEEPMD INFO training data with max nbor size: [4 1]\n","DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n","DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n","DEEPMD INFO | | | | ___ ___ | |__) || \\ / || | | | ______ | | __ _ | |_ \n","DEEPMD INFO | | | | / _ \\ / _ \\| ___/ | |\\/| || | | ||______|| |/ /| || __|\n","DEEPMD INFO | |__| || __/| __/| | | | | || |__| | | < | || |_ \n","DEEPMD INFO |_____/ \\___| \\___||_| |_| |_||_____/ |_|\\_\\|_| \\__|\n","DEEPMD INFO Please read and cite:\n","DEEPMD INFO Wang, Zhang, Han and E, Comput.Phys.Comm. 228, 178-184 (2018)\n","DEEPMD INFO Zeng et al, J. Chem. Phys., 159, 054801 (2023)\n","DEEPMD INFO See https://deepmd.rtfd.io/credits/ for details.\n","DEEPMD INFO installed to: /root/miniconda3/envs/deepmd\n","DEEPMD INFO source : v2.2.7\n","DEEPMD INFO source brach: HEAD\n","DEEPMD INFO source commit: 839f4fe7\n","DEEPMD INFO source commit at: 2023-10-27 21:10:24 +0800\n","DEEPMD INFO build float prec: double\n","DEEPMD INFO build variant: cpu\n","DEEPMD INFO build with tf inc: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/include;/root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/../../../../include\n","DEEPMD INFO build with tf lib: \n","DEEPMD INFO ---Summary of the training---------------------------------------\n","DEEPMD INFO running on: bohrium-21213-1088639\n","DEEPMD INFO computing device: cpu:0\n","DEEPMD INFO Count of visible GPU: 0\n","DEEPMD INFO num_intra_threads: 0\n","DEEPMD INFO num_inter_threads: 0\n","DEEPMD INFO -----------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: training -----------------------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n","DEEPMD INFO --------------------------------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: validation -----------------------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n","DEEPMD INFO --------------------------------------------------------------------------------------\n","DEEPMD INFO training without frame parameter\n","DEEPMD INFO data stating... (this step may take long time)\n","DEEPMD INFO built lr\n","DEEPMD INFO built network\n","DEEPMD INFO built training\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD INFO initialize model from scratch\n","DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","tf.py_func is deprecated in TF V2. Instead, there are two\n"," options available in V2.\n"," - tf.py_function takes a python function which manipulates tf eager\n"," tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n"," an ndarray (just call tensor.numpy()) but having access to eager tensors\n"," means `tf.py_function`s can use accelerators such as GPUs as well as\n"," being differentiable using a gradient tape.\n"," - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n"," (it is not differentiable, and manipulates numpy arrays). It drops the\n"," stateful argument making all functions stateful.\n"," \n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","tf.py_func is deprecated in TF V2. Instead, there are two\n"," options available in V2.\n"," - tf.py_function takes a python function which manipulates tf eager\n"," tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n"," an ndarray (just call tensor.numpy()) but having access to eager tensors\n"," means `tf.py_function`s can use accelerators such as GPUs as well as\n"," being differentiable using a gradient tape.\n"," - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n"," (it is not differentiable, and manipulates numpy arrays). It drops the\n"," stateful argument making all functions stateful.\n"," \n","DEEPMD INFO batch 200 training time 17.40 s, testing time 0.05 s, total wall time 18.58 s\n","DEEPMD INFO batch 400 training time 15.71 s, testing time 0.05 s, total wall time 15.89 s\n","DEEPMD INFO batch 600 training time 13.96 s, testing time 0.05 s, total wall time 14.12 s\n","DEEPMD INFO batch 800 training time 15.35 s, testing time 0.05 s, total wall time 15.52 s\n","DEEPMD INFO batch 1000 training time 14.23 s, testing time 0.04 s, total wall time 14.39 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 1200 training time 15.23 s, testing time 0.04 s, total wall time 16.49 s\n","DEEPMD INFO batch 1400 training time 12.84 s, testing time 0.04 s, total wall time 12.99 s\n","DEEPMD INFO batch 1600 training time 14.92 s, testing time 0.08 s, total wall time 15.12 s\n","DEEPMD INFO batch 1800 training time 15.05 s, testing time 0.05 s, total wall time 15.36 s\n","DEEPMD INFO batch 2000 training time 18.45 s, testing time 0.05 s, total wall time 18.63 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 2200 training time 16.82 s, testing time 0.05 s, total wall time 17.54 s\n","DEEPMD INFO batch 2400 training time 15.95 s, testing time 0.15 s, total wall time 16.21 s\n","DEEPMD INFO batch 2600 training time 16.61 s, testing time 0.04 s, total wall time 16.77 s\n","DEEPMD INFO batch 2800 training time 16.35 s, testing time 0.05 s, total wall time 16.52 s\n","DEEPMD INFO batch 3000 training time 15.06 s, testing time 0.05 s, total wall time 15.23 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 3200 training time 16.39 s, testing time 0.05 s, total wall time 16.97 s\n","DEEPMD INFO batch 3400 training time 16.54 s, testing time 0.09 s, total wall time 16.76 s\n","DEEPMD INFO batch 3600 training time 15.44 s, testing time 0.05 s, total wall time 15.65 s\n","DEEPMD INFO batch 3800 training time 17.46 s, testing time 0.05 s, total wall time 17.64 s\n","DEEPMD INFO batch 4000 training time 16.75 s, testing time 0.06 s, total wall time 16.93 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 4200 training time 15.56 s, testing time 0.05 s, total wall time 16.64 s\n","DEEPMD INFO batch 4400 training time 16.32 s, testing time 0.06 s, total wall time 16.49 s\n","DEEPMD INFO batch 4600 training time 16.56 s, testing time 0.05 s, total wall time 16.73 s\n","DEEPMD INFO batch 4800 training time 15.88 s, testing time 0.05 s, total wall time 16.05 s\n","DEEPMD INFO batch 5000 training time 16.26 s, testing time 0.05 s, total wall time 16.43 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 5200 training time 17.87 s, testing time 0.05 s, total wall time 18.63 s\n","DEEPMD INFO batch 5400 training time 22.08 s, testing time 0.08 s, total wall time 22.33 s\n","DEEPMD INFO batch 5600 training time 15.93 s, testing time 0.09 s, total wall time 16.14 s\n","DEEPMD INFO batch 5800 training time 14.56 s, testing time 0.05 s, total wall time 14.73 s\n","DEEPMD INFO batch 6000 training time 16.01 s, testing time 0.05 s, total wall time 16.19 s\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use standard file APIs to delete files with this prefix.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use standard file APIs to delete files with this prefix.\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 6200 training time 14.63 s, testing time 0.05 s, total wall time 15.18 s\n","DEEPMD INFO batch 6400 training time 16.34 s, testing time 0.05 s, total wall time 16.55 s\n","DEEPMD INFO batch 6600 training time 14.53 s, testing time 0.04 s, total wall time 14.70 s\n","DEEPMD INFO batch 6800 training time 16.01 s, testing time 0.04 s, total wall time 16.18 s\n","DEEPMD INFO batch 7000 training time 15.53 s, testing time 0.11 s, total wall time 15.77 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 7200 training time 15.02 s, testing time 0.05 s, total wall time 15.75 s\n","DEEPMD INFO batch 7400 training time 16.69 s, testing time 0.06 s, total wall time 16.89 s\n","DEEPMD INFO batch 7600 training time 14.35 s, testing time 0.05 s, total wall time 14.52 s\n","DEEPMD INFO batch 7800 training time 16.44 s, testing time 0.05 s, total wall time 16.63 s\n","DEEPMD INFO batch 8000 training time 16.67 s, testing time 0.07 s, total wall time 16.86 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 8200 training time 15.28 s, testing time 0.05 s, total wall time 16.07 s\n","DEEPMD INFO batch 8400 training time 16.78 s, testing time 0.05 s, total wall time 16.95 s\n","DEEPMD INFO batch 8600 training time 17.12 s, testing time 0.09 s, total wall time 17.36 s\n","DEEPMD INFO batch 8800 training time 15.89 s, testing time 0.05 s, total wall time 16.06 s\n","DEEPMD INFO batch 9000 training time 16.76 s, testing time 0.05 s, total wall time 16.97 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 9200 training time 16.94 s, testing time 0.05 s, total wall time 17.55 s\n","DEEPMD INFO batch 9400 training time 15.52 s, testing time 0.05 s, total wall time 15.70 s\n","DEEPMD INFO batch 9600 training time 16.85 s, testing time 0.05 s, total wall time 17.02 s\n","DEEPMD INFO batch 9800 training time 17.93 s, testing time 0.05 s, total wall time 18.11 s\n","DEEPMD INFO batch 10000 training time 15.91 s, testing time 0.11 s, total wall time 16.16 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO average training time: 0.0803 s/batch (exclude first 200 batches)\n","DEEPMD INFO finished training\n","DEEPMD INFO wall time: 822.217 s\n"]}],"source":["# ########## Time Warning: 120 secs ##########\n","! cd DeePMD-kit_Tutorial/01.train/ && dp train input.json"]},{"cell_type":"markdown","id":"c10e0a81-ef33-49ab-ae2d-83fbd35985ac","metadata":{"tags":[]},"source":["On the screen, you will see the information of the data system(s)\n","\n","```\n","DEEPMD INFO -----------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: training ----------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n","DEEPMD INFO -------------------------------------------------------------------------\n","DEEPMD INFO ---Summary of DataSystem: validation ----------------------------------\n","DEEPMD INFO found 1 system(s):\n","DEEPMD INFO system natoms bch_sz n_bch prob pbc\n","DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n","DEEPMD INFO -------------------------------------------------------------------------\n","```\n","\n","and the starting and final learning rate of this training\n","\n","```\n","DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n","```\n","\n","If everything works fine, you will see, on the screen, information printed every 1000 steps, like\n","\n","```\n","DEEPMD INFO batch 200 training time 6.04 s, testing time 0.02 s\n","DEEPMD INFO batch 400 training time 4.80 s, testing time 0.02 s\n","DEEPMD INFO batch 600 training time 4.80 s, testing time 0.02 s\n","DEEPMD INFO batch 800 training time 4.78 s, testing time 0.02 s\n","DEEPMD INFO batch 1000 training time 4.77 s, testing time 0.02 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","DEEPMD INFO batch 1200 training time 4.47 s, testing time 0.02 s\n","DEEPMD INFO batch 1400 training time 4.49 s, testing time 0.02 s\n","DEEPMD INFO batch 1600 training time 4.45 s, testing time 0.02 s\n","DEEPMD INFO batch 1800 training time 4.44 s, testing time 0.02 s\n","DEEPMD INFO batch 2000 training time 4.46 s, testing time 0.02 s\n","DEEPMD INFO saved checkpoint model.ckpt\n","```\n","\n","They present the training and testing time counts. At the end of the 1000th batch, the model is saved in Tensorflow's checkpoint file `model.ckpt`. At the same time, the training and testing errors are presented in file `lcurve.out`. \n","\n","The file contains 8 columns, form left to right, are the training step, the validation loss, training loss, root mean square (RMS) validation error of energy, RMS training error of energy, RMS validation error of force, RMS training error of force and the learning rate. The RMS error (RMSE) of the energy is normalized by number of atoms in the system. \n","```\n","head -n 2 lcurve.out\n","# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n"," 0 2.02e+01 1.51e+01 1.37e-01 1.41e-01 6.40e-01 4.79e-01 1.0e-03\n","```\n","and\n","```\n","$ tail -n 2 lcurve.out\n"," 9800 2.45e-02 4.02e-02 3.20e-04 3.88e-04 2.40e-02 3.94e-02 4.3e-08\n"," 10000 4.60e-02 3.76e-02 8.65e-04 5.35e-04 4.52e-02 3.69e-02 3.5e-08\n","```\n","Volumes 4, 5 and 6, 7 present energy and force training and testing errors, respectively. "]},{"cell_type":"code","execution_count":12,"id":"4aabcec8-9058-4582-863d-00550bb05187","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n","# If there is no available reference data, rmse_*_{val,trn} will print nan\n"," 9800 2.40e-02 2.82e-02 2.27e-04 3.77e-04 2.35e-02 2.76e-02 4.3e-08\n"," 10000 3.82e-02 3.02e-02 6.48e-04 3.29e-04 3.75e-02 2.97e-02 3.5e-08\n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train.finished/ && head -n 2 lcurve.out && tail -n 2 lcurve.out"]},{"cell_type":"markdown","id":"34f3de74-9b9c-4143-94c6-1b91adbfb8d4","metadata":{},"source":["The loss function can be visualized to monitor the training process."]},{"cell_type":"code","execution_count":13,"id":"a7444fb4-a869-4b44-a1e3-2d74679189ed","metadata":{},"outputs":[{"data":{"image/png":"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7XZycnIG9RwhhAApjQkhTkJOTo71x+12o2madbujo4OUlBRefPFFlixZQlxcHM8++yy1tbV861vfIi8vD5fLxfTp03n++eeDXje0NDZ27Fjuv/9+rr76apKSkhgzZgxPPvmk9Xhoaez9999H0zT+8Y9/UFxcjMvlYtGiRUFBGsC9995LVlYWSUlJXHvttdxxxx19ZnPq6+u57LLLyMzMJD4+ngkTJvDMM88AUFhYCMDs2bPRNI0lS5ZYz3vmmWeYPHkycXFxTJo0iccee6zHtb/wwgssWrSIuLg4pk6dyvvvvz+g8wohTo4EQkKIIfXjH/+Ym266id27d7N06VI6OjqYO3cur732Gjt37uR73/seV1xxBZ988kmfr/Pwww9TXFzM1q1b+cEPfsD111/Pnj17+nzOXXfdxcMPP8zmzZtxOBxcffXV1mN//vOfue+++3jooYfYsmULY8aM4fHHH+/z9e6++2527drF3//+d3bv3s3jjz9ORkYGABs3bgRg7dq1lJeX89e//hWAp556irvuuov77ruP3bt3c//993P33Xfzxz/+Mei1f/SjH3HrrbeydetWFi1axDe+8Q1qa2v7Pa8Q4iTpQghxCjzzzDO62+22bpeUlOiA/sgjj/T73OXLl+u33nqrdfvss8/Wf/jDH1q3CwoK9Msvv9y67fP59KysLP3xxx8POtfWrVt1Xdf19957Twf0tWvXWs95/fXXdUBvb2/XdV3XFyxYoN9www1B13HGGWfoM2fO7PU6L7zwQv273/1u2MdCr8GUn5+vP/fcc0H3/fznP9cXLlwY9LwHH3zQery7u1vPy8vTH3rooX7PK4Q4OZIREkIMqeLi4qDbXq+X++67jxkzZpCenk5iYiJvv/02R44c6fN1ZsyYYX1vluCqqqoG/JxRo0YBWM/Zu3cv8+fPDzo+9Hao66+/nhdeeIFZs2Zx++23s2HDhj6Pr66upqysjGuuuYbExETrz7333svBgweDjl24cKH1vcPhoLi4mN27d5/QeYUQAyeBkBBiSCUkJATdfvjhh1m1ahW333477777Ltu2bWPp0qV0dXX1+TqhTdaapuHz+Qb8HHOFW+BzQle96f0sol22bBmHDx/m5ptv5vjx45x77rncdtttvR5vnuupp55i27Zt1p+dO3fy8ccf93muwOsb7HmFEAMngZAQIqLWr1/PRRddxOWXX87MmTMZN24c+/fvj/h1TJw40errMW3evLnf52VmZnLVVVfx7LPP8sgjj1hN206nE1AZL1N2djajR4/m0KFDFBUVBf0xm6tNgYGRx+Nhy5YtTJo0qd/zCiFOjiyfF0JEVFFRES+//DIbNmwgNTWVX//611RUVDB58uSIXseNN97IddddR3FxMYsWLWLNmjXs2LGDcePG9fqclStXMnfuXKZOnUpnZyevvfaadd1ZWVnEx8fz5ptvkpeXR1xcHG63m5/85CfcdNNNJCcns2zZMjo7O9m8eTP19fXccsst1ms/+uijTJgwgcmTJ7Nq1Srq6+ut5u6+ziuEODmSERJCRNTdd9/NnDlzWLp0KUuWLCEnJ4cVK1ZE/Douu+wy7rzzTm677TbmzJlDSUkJV111FXFxcb0+x+l0cueddzJjxgwWL16M3W7nhRdeAFRfz29+8xt+//vfk5uby0UXXQTAtddey9NPP83q1auZPn06Z599NqtXr+6REXrwwQd56KGHmDlzJuvXr+fVV1+1Vob1dV4hxMmRydJCCGE4//zzycnJ4U9/+lPEzikTqYUYXlIaE0JEpba2Np544gmWLl2K3W7n+eefZ+3atbzzzjvDfWlCiAiSQEgIEZU0TeONN97g3nvvpbOzk4kTJ/Lyyy9z3nnnDfelCSEiSEpjQgghhIha0iwthBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKj1/wE5Gnyd5rBYFwAAAABJRU5ErkJggg==","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","with open(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\") as f:\n"," headers = f.readline().split()[1:]\n","lcurve = pd.DataFrame(np.loadtxt(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\"), columns = headers )\n","legends = [\"rmse_e_val\", \"rmse_e_trn\", \"rmse_f_val\" , \"rmse_f_trn\" ]\n","for legend in legends:\n"," plt.loglog(lcurve[\"step\"], lcurve[legend], label = legend )\n","plt.legend()\n","plt.xlabel(\"Training steps\")\n","plt.ylabel(\"Loss\")\n","plt.show()"]},{"cell_type":"markdown","id":"8009ad0a-9902-42d3-b280-caee92cbdf10","metadata":{},"source":["### 4 Freeze a model \n","\n","At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute"]},{"cell_type":"code","execution_count":14,"id":"b20d368a-135c-4314-ae4c-47bf1f28c4d7","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","DEEPMD WARNING The following nodes are not in the graph: {'spin_attr/ntypes_spin', 'fitting_attr/aparam_nall'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n","DEEPMD INFO The following nodes will be frozen: ['model_type', 'o_atom_virial', 'fitting_attr/daparam', 'model_attr/model_type', 'model_attr/tmap', 'o_force', 'o_virial', 'descrpt_attr/rcut', 'train_attr/min_nbor_dist', 'fitting_attr/dfparam', 't_mesh', 'o_atom_energy', 'train_attr/training_script', 'descrpt_attr/ntypes', 'o_energy', 'model_attr/model_version']\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.extract_sub_graph`\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.compat.v1.graph_util.extract_sub_graph`\n","DEEPMD INFO 1222 ops in the final graph.\n"]}],"source":["## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Train and Freeze the Model\n","! cd DeePMD-kit_Tutorial/01.train.finished/ && dp freeze -o graph.pb"]},{"cell_type":"markdown","id":"3b23f3c9-5809-4a65-9126-f9e6d2f3a10b","metadata":{},"source":["and it will output a model file named `graph.pb` in the current directory. "]},{"cell_type":"markdown","id":"2882c201-0e85-46d0-94f8-e055a540b6fb","metadata":{},"source":["### 5 Test a model \n","\n","We can check the quality of the trained model by running\n"]},{"cell_type":"code","execution_count":15,"id":"5d201246-b110-4e63-a09b-ad7308bc1367","metadata":{"scrolled":true,"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n","WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","DEEPMD WARNING You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n","DEEPMD INFO # ---------------output of dp test--------------- \n","DEEPMD INFO # testing system : ../00.data/validation_data\n","DEEPMD INFO # number of test data : 40 \n","DEEPMD INFO Energy MAE : 1.947297e-03 eV\n","DEEPMD INFO Energy RMSE : 2.568049e-03 eV\n","DEEPMD INFO Energy MAE/Natoms : 3.894594e-04 eV\n","DEEPMD INFO Energy RMSE/Natoms : 5.136098e-04 eV\n","DEEPMD INFO Force MAE : 2.478063e-02 eV/A\n","DEEPMD INFO Force RMSE : 3.354447e-02 eV/A\n","DEEPMD INFO Virial MAE : 2.883222e-02 eV\n","DEEPMD INFO Virial RMSE : 4.083024e-02 eV\n","DEEPMD INFO Virial MAE/Natoms : 5.766444e-03 eV\n","DEEPMD INFO Virial RMSE/Natoms : 8.166047e-03 eV\n","DEEPMD INFO # ----------------------------------------------- \n"]}],"source":["! cd DeePMD-kit_Tutorial/01.train.finished/ && dp test -m graph.pb -s ../00.data/validation_data"]},{"cell_type":"markdown","id":"7f48e0a9-644f-4588-b9f3-cc115851a1ed","metadata":{},"source":["The correlation between predicted data and original data can also be calculated."]},{"cell_type":"code","execution_count":16,"id":"be03c8da-e4f9-439d-bb22-800b651a7737","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","non-resource variables are not supported in the long term\n"]},{"name":"stderr","output_type":"stream","text":["WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n"]},{"name":"stdout","output_type":"stream","text":["WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n"]},{"name":"stderr","output_type":"stream","text":["2024-03-19 19:42:27.272130: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n","To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-03-19 19:42:27.275152: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n","2024-03-19 19:42:27.294336: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n","WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use `tf.config.list_physical_devices('GPU')` instead.\n","WARNING:deepmd.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n"]}],"source":["import dpdata\n","\n","training_systems = dpdata.LabeledSystem(\"./DeePMD-kit_Tutorial/00.data/training_data\", fmt = \"deepmd/npy\") \n","predict = training_systems.predict(\"./DeePMD-kit_Tutorial/01.train.finished/graph.pb\") "]},{"cell_type":"code","execution_count":17,"id":"b4005a62-8bf2-4aaf-8865-20ea303ea0f2","metadata":{},"outputs":[{"data":{"text/plain":["[]"]},"execution_count":17,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAmYAAAGwCAYAAAADo6klAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9DklEQVR4nO3deVhUZfsH8O+AMAwICLKKKAhupAaiBGopmkKlZmXllpFCWZK+LpVWvrikZppZ9kutjDR77VXT0nJHrVdDUQEVURBkkWVkU0CQbeb8/iAmxpmBGWQZ4Pu5rrku55znnHOfEYfb53nO/YgEQRBARERERC3OoKUDICIiIqJqTMyIiIiI9AQTMyIiIiI9wcSMiIiISE8wMSMiIiLSE0zMiIiIiPQEEzMiIiIiPdGhpQMg3cjlcmRlZcHc3BwikailwyEiIiItCIKA4uJidOnSBQYGmvvFmJi1MllZWXB2dm7pMIiIiKgBbt26ha5du2rcz8SslTE3NwdQ/RdrYWHRwtEQERGRNoqKiuDs7Kz4Pa4JE7NWpmb40sLCgokZERFRK1PfNCRO/iciIiLSE0zMiIiIiPQEEzMiIiIiPcHEjIiIiEhPMDEjIiIi0hNMzIiIiIj0BBMzIiIiIj3BxIyIiIhITzAxIyIiItITTMyIiIiI9AQTMyIiIiI9wcSMiIiISE8wMSMiIiLSE0zMiIiIiACguBgQhBYNgYkZERERUX4+EBHR4olZhxa9OhEREVFLEgQgPh64cweYMKGlo2GPGREREbVTcjnw00+AgwMwbFhLRwOAPWZERETUHqWmAhcvApMnt3QkSthjRkRERO3Lzz8DBgbACy+0dCQq2GNGRERE7UN+PnDsGPDSS9WJmR5iYkZERERtX2QkYG6u10kZwMSMiIiI2jKZDDh4EHjsMcDOrqWjqRcTMyIiImqbpFIgORkYOhSwtm7paLTCxIyIiIjanpiY6nIYQ4YAIlFLR6M1JmZERETUdshkwNWr1UmZt3dLR6MzJmZERETUNuTnA5cuAQMHAp06tXQ0DcLEjIiIiFoVmVxAVEoBcorLYGduAh9XaxgW3q1e6/LFF1vV0OWDmJgRERFRq3E4LhvLDsQju7AMACAS5Hiq4AamPOWJYS+91MLRPTz9LeRBREREVMvhuGy8uSNakZQZySoxNeYQjli545Wo+zgcl93CET48JmZERESk92RyAcsOxEP4+71X5nX0lyZhx8BnIDMwBAAsOxAPmVzQfJJWgIkZERER6b2olAJkF5bBQC7Di5ePIt6+B6Kd+ir2CwCyC8sQlVLQckE2As4xIyIiIr1Ue5L/jdv30LXwNpwKc7C/73CUdzBWe0xOcVkzR9m4mJgRERGR3nlwkv+wlBgI1k4459yvzqcu7cxNmivEJsHEjIiIiPRKzSR/AYBxVSX6S2/gVid7ZFpqXutSBMDBsrp0RmvGxIyIiIj0Ru1J/s53pbApuYt4ux64b6y5J6ym/yxsnAcMDVpvDTOAiRkRERHpkZpJ/t3uZMOpKAeR3R+t9xgHSxOEjfNAYD/HZoiwaTExIyIiIr2Rl3cXj2Yl4J7YtM6kLNTfDT3tzf+p/N/Ke8pqMDEjIiIi/VBWht7nTuK6rQvKjcR1Nh3qbgs/t87NFFjzYR0zIiIiank3bgB//AG30JmwtrHU2EwEwLENTPLXpFUkZqmpqZg5cyZcXV0hkUjg5uaGsLAwVFRUKLWbO3cuvL29IRaL4enpqfZcu3btgqenJ0xNTdG9e3esXbtWqxh+//13PPbYY5BIJLCxscHzzz+vtF8kEqm8Nm/erNTmypUrGD58OCQSCZycnLB8+XIIQuuuUExERPTQdu4EOnYEAgJgaCDC+EfrnivWFib5a9IqhjKvX78OuVyOLVu2wN3dHXFxcQgJCUFJSQnWrVunaCcIAmbMmIFz587h8uXLKuc5dOgQpk6dio0bN2LMmDG4du0agoODIZFIEBoaqvH6P//8M0JCQrBq1SqMHDkSgiDgypUrKu3Cw8MRGBioeG9p+U/GX1RUhNGjR8Pf3x/nz59HYmIigoKCYGZmhgULFjT0oyEiImq9bt0Czp4FJk9WbDocl42v/0zReMjrT7i2iUn+moiEVtpls3btWmzatAk3b95U2bd06VL88ssviI2NVdo+ZcoUVFZWYvfu3YptGzZswKeffor09HSI1BSsq6qqgouLC5YtW4aZM2dqjEckEmHfvn2YMGGC2v2bNm3C4sWLcfv2bYjF1ePmH3/8MTZu3IiMjAy111anqKgIlpaWKCwshIWFhVbHEBER6Z3ffwf69gV69FBskskFDFtzQlFU9kE1tcpOvzey1fWYafv7u1UMZapTWFgIa2vdxpfLy8thYqJcB0UikSAjIwNpaWlqj4mOjkZmZiYMDAzg5eUFR0dHPPXUU7h69apK29DQUNjY2GDw4MHYvHkz5HK5Yl9kZCSGDx+uSMoAICAgAFlZWUhNTa0z5qKiIqUXERFRq1VSAuzZA4wcqZSUAf+UytCkrayHWZdWmZglJydj48aNmDVrlk7HBQQEYO/evYiIiIBcLkdiYiI2bNgAAMjOzlZ7TE2P3NKlS/Hhhx/it99+g5WVFYYPH46Cgn9+MFasWIHdu3fj+PHjmDRpEhYsWIBVq1Yp9kulUtjb2yudu+a9VCrVGPPq1athaWmpeDk7O+t0z0RERHrj6lXg2jVg/HhAIlHZre06l619Pcy6tGhitnTpUrWT5mu/Lly4oHRMVlYWAgMD8eKLLyI4OFin64WEhCA0NBRjx46FsbExfH19MWnSJACAoaGh2mNqer0++OADvPDCC/D29kZ4eDhEIpHSkOiHH34IPz8/eHp6YsGCBVi+fLnKgwUPDlfWjCLXNYy5ePFiFBYWKl63bt3S6Z6JiIhanCAAJ08CJibAoEGAsfoFyLVd57K1r4dZlxad/B8aGqpIjDRxcXFR/DkrKwv+/v7w8/PD119/rfP1RCIR1qxZg1WrVkEqlcLW1hYREREq16nN0bF6gqGHh4dim1gsRo8ePZCenq7xWr6+vigqKsLt27dhb28PBwcHlZ6xnJwcAFDpSatNLBYrDX8SERG1KsXFQFxc9bBl9+51NvVxtYajpQmkhWVQNwG+rayHWZcWTcxsbGxgY2OjVdvMzEz4+/sreqwMDBre2WdoaAgnJycAwM6dO+Hn5wc7O/ULo9aU30hISMCwYcMAAJWVlUhNTUX3On7AYmJiYGJigk6dOgEA/Pz88P7776OiogLGf/9P4ejRo+jSpYvGpJCIiKhVS04GsrOBxx4DjIzqbW5oIELYOA+8uSMaIkApOWtL62HWpVWUy8jKysKIESPQrVs3rFu3Drm5uYp9Dg4Oij8nJSXh3r17kEqluH//vuKpTA8PDxgbGyMvLw979uzBiBEjUFZWhvDwcOzevRt//PGH4hxRUVGYPn06IiIi4OTkBAsLC8yaNQthYWFwdnZWqn324osvAgAOHDgAqVQKPz8/SCQSnDx5Eh988AFef/11RW/XlClTsGzZMgQFBeH999/HjRs3sGrVKvz73//W+olMIiIifSWTC4hKKUBOcRnsOorhg0IYpqdVT/LXQWA/R2yaNhDLDsQrPQjQltbDrEurSMyOHj2KpKQkJCUloWvXrkr7alf7CA4OVkqyvLy8AAApKSmKXqlt27Zh4cKFEAQBfn5+OHXqFHx8fBTHlJaWIiEhAZWVlYpta9euRYcOHfDKK6/g/v37eOyxx3DixAlYWVkBAIyMjPDVV19h/vz5kMvl6NGjB5YvX47Zs2crzmFpaYljx45h9uzZGDRoEKysrDB//nzMnz+/8T4oIiKiFnA4LluRSImrKuCdEY97Lm54a9pwBNZ/uIrAfo4Y7eHwT6LXxtbDrEurrWPWXrGOGRER6ZPDcdl4c0c0BACSijKMvf4/7O7/pGI0aNO0gW2+l0sb2v7+bhU9ZkRERKQfag9Z2piJsXR/PAQAPrficL+DGLsHjAZQPT9MBGDZgXiM9nBoF71djYGJGREREWml9pBljQ6yKky7dAQ7PQMhM1AuPVW7IKyfW+dmjrZ1YmJGRERE9ao9ZFnD4/ZNSCrL8KPXUxBEmqsltOWCsI2NiRkRERHVSSYXsOxA/D9JmSBg7PX/4Y8e3igWm9V7fFsuCNvYmJgRERFRnWqvYdnpfhF656bhtItnvUlZeygI29iYmBEREVGdaoYiH81KwH0jMaKcH6lz6BJoPwVhGxsTMyIiIqqTnZkxHpEmocqwAxJtXbQ6pr0UhG1sTMyIiIhIs9xc+EgTIHfqiusy9XPFRADsLcT49CVP5N0rb1cFYRsbEzMiIiJSLzcXiIyE4dixmGt1u841LJeOfwRD3bVb/5o0a/hK4ERERNQ2yWTA5ctASgowfjxgYKBYw9LBUrnXzMHShNX9GxF7zIiIiOgfcjnw00/AM88AnTop7WrPa1g2FyZmREREVC05GYiLA6ZO1djE0EAEP7fOiqWZfrucxQStEWmVmHl5eSkWI61PdHT0QwVERERELWDXLmDIEODZZ+ttqm5pJkc+hdkotErMJkyY0MRhEBERUYvIyQH++AOYOBEwqH/qubqlmQBAWliGN3dEc77ZQxIJgvDgZ0t6rKioCJaWligsLISFhUVLh0NERK3ZH38A9vZA796AFiNjMrmAYWtOKPWU1VZT6f/0eyM5rPkAbX9/86lMIiKi9qaqCjhwAOjXD+jTR6ukDFBemkkdAUB2YRmiUgoaKdD2R+fJ/zKZDJ999hl27dqF9PR0VFRUKO0vKOBfBhERkd7KyADS04HhwwEdR15qlmZqrHakSuces2XLlmH9+vV46aWXUFhYiPnz5+P555+HgYEBli5d2gQhEhERUaO4eBHIywP8/HROygDAzlx95f+GtiNVOidmP/74I7755hssXLgQHTp0wOTJk/Htt9/i3//+N86ePdsUMRIREZEWZHIBkcn5+DU2E5HJ+ZDJ/55GXlkJREcDRkaAp6fWQ5cP8nG1hqOlCTQdLUL105k+rtYNOj81YChTKpWif//+AICOHTuisLAQADB27FgsWbKkcaMjIiIirWgqYbFyiB1GynKBwYMBc/OHuoahgQhh4zzqXJopbJwHJ/4/BJ17zLp27Yrs7GwAgLu7O44ePQoAOH/+PMRiceNGR0RERPWqKWHx4MT8yiwpfvr8vzhs2+ehk7IaXJqpaencY/bcc88hIiICjz32GObOnYvJkydj69atSE9Px7x585oiRiIiItJAJhew7EC8cu+VIIdv+hXkdLTGsV5+uPLbNYx+xLHRerK4NFPT0Tkx+/jjjxV/njhxIrp27Yq//voL7u7uGD9+fKMGR0RERHV7sISFuKoCE68cx388AyGIqgfGakpY+Ll1brTr1izNRI3rodfK9PX1ha+vb2PEQkRERDqQyQWcScpVvPfOiEeVgSF+9HpapS1LWLQOWiVm+/fvx1NPPQUjIyPs37+/zrbsNSMiImp6tSf7G8plmHjlOH7uNwpVhup/tbOEReug1ZJMBgYGkEqlsLOzg0Ed62iJRCLIZLJGDZCUcUkmIiKqvV6lS0EmbErv4rJDL1R0MFJpy2WS9IO2v7+16jGTy+Vq/0xERETNq/Zk/xHJ5xFv1wMXuj6iti1LWLQ+OpfL2L59O8rLy1W2V1RUYPv27Y0SFBEREakXlVKAgrxCeGfEI8mmG3LMNU/AZwmL1kfnxOy1115TFJWtrbi4GK+99lqjBEVERETqlV6OQ++8NMQ5uCPD0l5ju1B/d5x+bySTslZG56cyBUGASM1SDhkZGbC0tGyUoIiIiEiNGzfgcL8Qlx171dt0qLsNhy9bIa0TMy8vL4hEIohEIowaNQodOvxzqEwmQ0pKCgIDA5skSCIionatpAS4cgWws0OfSePgmHYC0sIyqHt6r2ayP9erbJ20TswmTJgAAIiNjUVAQAA6duyo2GdsbAwXFxe88MILjR4gERFRu1ZaCvz2GzBhAiAWwxDgepVtmFblMmrbtm0bXn75ZZiYsB5KS2C5DCKitquiSo4fIlORVlCK7lYSvGJVBuMcKTBqlEpbTYuWh43z4LwyPaTt72+dE7MaFRUVyMnJUSmf0a1bt4acjrTExIyIqO2QyQXFepPH46X47bJU0QP27NWTONNjIJ4b8yhG9nFQuyZl7eO5XqV+a7LE7MaNG5gxYwb++usvpe01DwWwwGzTYmJGRNQ2qOvxAoCud6V45PZNHOk9RO1x7BVrnRq1wGxtQUFB6NChA3777Tc4OjqqfUKTiIiINKtdub+20TfO4qp9D41JGQBIC8vw5o5o1idro3ROzGJjY3Hx4kX06dOnKeIhIiJq02pX7q/RsbwUw1JjcMLNR+2ySrUJqJ7kv+xAPEZ7OHDoso3RucCsh4cH8vLymiIWjVJTUzFz5ky4urpCIpHAzc0NYWFhqKioUGo3d+5ceHt7QywWw9PTU+25du3aBU9PT5iamqJ79+5Yu3atVjH8/vvveOyxxyCRSGBjY4Pnn39ese/7779XlBJ58JWTk6O4B3X7Dx8+3LAPhYiIWqWolAKl4UuP2zfR7a4Ux3r61puU1RAAZBeWISqloImipJaic4/ZmjVr8O6772LVqlXo378/jIyUf4iaYt7T9evXIZfLsWXLFri7uyMuLg4hISEoKSnBunXrFO0EQcCMGTNw7tw5XL58WeU8hw4dwtSpU7Fx40aMGTMG165dQ3BwMCQSCUJDQzVe/+eff0ZISAhWrVqFkSNHQhAEXLlyRbH/5ZdfVqnhFhQUhLKyMtjZ2SltP378OB555J81zaytWWeGiKg9ySn+OykTBAxJu4T0Tg7I6OTwcOeiNkPnyf8GBtWdbA/OLWvuyf9r167Fpk2bcPPmTZV9S5cuxS+//ILY2Fil7VOmTEFlZSV2796t2LZhwwZ8+umnSE9PVztfrqqqCi4uLli2bBlmzpypVWy5ublwcnLC1q1b8corrwCo7jFzdXVFTEyMxt48bXDyPxFR6xaZnI83Nh5Hz7x03LK0r3Oty/rsDPGFn1vDj6fm02ST/0+ePPlQgTWWwsJCnXubysvLYWpqqrRNIpEgIyMDaWlpcHFxUTkmOjoamZmZMDAwgJeXF6RSKTw9PbFu3Tqlnq/atm/fDlNTU0ycOFFl3/jx41FWVoaePXti3rx5ats8GHPtReOLioq0uFMiItJXPlX58CuT4niX3pAZGDboHKzu33bpnJgNHz68KeLQSXJyMjZu3IhPP/1Up+MCAgIwb948BAUFwd/fH0lJSdiwYQMAIDs7W21iVtMjt3TpUqxfvx4uLi749NNPMXz4cCQmJqpNDr/77jtMmTIFEolEsa1jx45Yv349hg4dCgMDA+zfvx8vv/wytm3bhmnTpmmMefXq1Vi2bJlO90lERHpIEIDERBjm5OC50JdwVE3lfm2wun/bpvPkfwD43//+h2nTpmHIkCHIzMwEAPzwww84ffq0TudZunSpxknzNa8LFy4oHZOVlYXAwEC8+OKLCA4O1ul6ISEhCA0NxdixY2FsbAxfX19MmjQJAGBoqP5/LTUFdD/44AO88MIL8Pb2Rnh4OEQikdKQaI3IyEjEx8erDHva2Nhg3rx58PHxwaBBg7B8+XK89dZb+OSTT+qMefHixSgsLFS8bt26pdM9ExGRHigtBY4fBzp1Ah5/HIH9HLFp2kA4WOq+io6DpQlLZbRhOveY/fzzz3jllVcwdepUREdHK4bZiouLsWrVKhw8eFDrc4WGhioSI01q92JlZWXB398ffn5++Prrr3UNHSKRCGvWrMGqVasglUpha2uLiIgIlevU5uhY/YPv4eGh2CYWi9GjRw+kp6ertP/222/h6ekJb2/veuPx9fXFt99+W2cbsVgMsVhc77mIiEhPFRUBv/4KTJsG1JrLHNjPEaM9HBCVUoAzSbn48mRyvada8kxfBA11ZU9ZG6ZzYvbRRx9h8+bNmD59On766SfF9iFDhmD58uU6ncvGxgY2NjZatc3MzIS/v7+ix6rmIYSGMDQ0hJOTEwBg586d8PPzU3l6skZN+Y2EhAQMGzYMAFBZWYnU1FR0795dqe29e/ewa9curF69Wqs4YmJiFIkfERG1QadOVfeS/f0g2IMMDUTwc+sMH1dr/BydCWlhmdqhzZo5ZUzK2j6dE7OEhAQ88cQTKtstLCxw9+7dxohJRVZWFkaMGIFu3bph3bp1yM3NVexzcPjnEeOkpCTcu3cPUqkU9+/fVzyV6eHhAWNjY+Tl5WHPnj0YMWIEysrKEB4ejt27d+OPP/5QnCMqKgrTp09HREQEnJycYGFhgVmzZiEsLAzOzs5Ktc9efPFFpTj/+9//oqqqClOnTlW5h23btsHIyAheXl4wMDDAgQMH8MUXX2DNmjWN+VEREZE+KC8HvvsOeOMNQIuOBEMDEcLGeeBNNfPOOKesfdE5MXN0dERSUpLK0N/p06fRo0ePxopLydGjR5GUlISkpCR07dpVaV/tah/BwcFKSZaXlxcAICUlRRHvtm3bsHDhQgiCAD8/P5w6dQo+Pj6KY0pLS5GQkIDKykrFtrVr16JDhw545ZVXcP/+fTz22GM4ceIErKyslGLZunUrnn/+eZXtNT766COkpaXB0NAQvXr1wnfffVfnxH8iImqFzp8HZDJg1iylocv61Mw7e3D9TAeujdmu6FzH7JNPPsG2bdvw3XffYfTo0Th48CDS0tIwb948/Pvf/66zUCs9PNYxIyLSU3I5sHMnMGECYGbW4NPI5AKiUgqQU1wGO/PqkhjsKWv9mqyO2bvvvovCwkL4+/ujrKwMTzzxBMRiMRYuXMikjIiI2qfbt4GEBOCZZx4qKQP+mXdG7ZPOPWY1SktLER8fD7lcDg8PD3Ts2LGxYyM12GNGRKRnTp8GbGyA3r11Grqk9kXb3986P9o4Y8YMFBcXw9TUFIMGDYKPjw86duyIkpISzJgx46GCJiIiajVkMuDiRcDCAujTh0kZNQqde8wMDQ2RnZ2tUl4iLy8PDg4OqKqqatQASRl7zIiI9EBWFpCSAnh4AGoe+OI8MXpQo88xKyoqgiAIEAQBxcXFMDH5p1qxTCbDwYMHNdYCIyIiajNu3waio6vnk6npJTscl63yZKUjn6wkLWmdmHXq1EmxTFKvXr1U9otEIq7pSEREbVdVFXD5cnUyNnas2iaH47Lx5o5olSKx0sIyvLkjmkspUb20TsxOnjwJQRAwcuRI/Pzzz0qLdxsbG6N79+7o0qVLkwRJRETUomQy4KefgGefBczN1TeRC1h2IF5t5X4B1YVilx2Ix2gPBw5rkkZaJ2bDhw8HUF2s1dnZ+aGWRCIiImo1EhOBGzeq17qsQ1RKgdLw5YMEANmFZYhKKWA5DNJI5zpm3bt3x927d7F161Zcu3YNIpEIHh4emDFjBiwtLZsiRiIiopbxn/8A/v7V88nqkVOsOSlrSDtqn3Tu9rpw4QLc3Nzw2WefoaCgAHl5eVi/fj3c3NwQHR3dFDESERE1r6ws4OefgcmTAUft5oTZmZvU30iHdtQ+6Vwu4/HHH4e7uzu++eYbdOhQ3eFWVVWF4OBg3Lx5E3/++WeTBErVWC6DiKiJHT8OuLgAbm461SaTyQUMW3MC0sIytfPMRKhe9/L0eyM5x6wdarICsxcuXMB7772nSMoAoEOHDnj33Xdx4cKFhkVLRETU0ioqgP37AW9vwN1d54KxhgYihI3zAFCdhNVW8z5snAeTMqqTzomZhYUF0tPTVbbfunUL5hqeVCEiItJrN29W1yYbNUptwVhtBfZzxKZpA+FgqTxc6WBpwlIZpBWdJ/+//PLLmDlzJtatW4chQ4ZAJBLh9OnTeOeddzB58uSmiJGIiKjpREUBYjHg69sopwvs54jRHg6s/E8NonNitm7dOohEIkyfPl2x/JKRkRHefPNNfPzxx40eIBERUZMoKwOuXPlnrctGZGggYkkMahCdJ//XKC0tRXJyMgRBgLu7O0xNTRs7NlKDk/+JiBqBVApcvQr4+QH8/UXNoNHXynyQqampYpkmJmVERNRqZGYCMTEal1Uiakk6T/6vqqrCkiVLYGlpCRcXF3Tv3h2Wlpb48MMPUVlZ2RQxEhERNZhMLiAyOR+/XkxH/LafISspZVJGekvnHrPQ0FDs27cPn3zyCfz8/AAAkZGRWLp0KfLy8rB58+ZGD5KIiKghDsdlY9mBeNzNvYsJ8acw99EAOGalI2xcRz4hSXpJ5zlmlpaW+Omnn/DUU08pbT906BAmTZqEwsLCRg2QlHGOGRGRdg7HZePNHdHwSb+CUiMTXHHsCeCfmmIsX0HNqckKzJqYmMDFxUVlu4uLC4yNjXU9HRERUaOTyQWs3HcJL8cexvmuHoqkDICiKv+yA/GQyRv0/BtRk9E5MZs9ezZWrFiB8vJyxbby8nKsXLkSoaGhjRocERFRQ1w5GgnbhDj83H8U5AaGKvsFANmFZYhKKWj+4IjqoPMcs5iYGERERKBr16549NFHAQCXLl1CRUUFRo0aheeff17Rdu/evY0XKRERUX0EAdi/H9nmLoju2rfe5jnFZc0QFJH2dE7MOnXqhBdeeEFpm7Ozc6MFRERE1CD37gGxscDAgehUYQogo95D7MxN6m1D1Jx0TszCw8ObIg4iIqKGu3KlehFyHx/A2Bg+cgGOliaQFpZB3SwyEQBrM2NIC+8jMjmfSyaR3tB5jhkREZHeEATI4q8hLj4dvxo6IPJWMWRyAYYGIoSN8wDwz1OYSocByC+pwLxdlzD5m7MYtuYEDsdlN2voROo0eEkmahksl0FE9LeiIpzdfwqrr5Tgkuif70NHSxOEjfNAYD9HRR2z7MK655KxhAY1NW1/fzMxa2WYmBFReyOTC4hKKUBOcRnszE2qhx3vlyJ20w5MzHFE1QNPXT6YZNUcLy0qw4rfrqKgRP0qNSIADpYmOP3eSA5rUqNr8rUyiYiImppKj5cgYGiZFG8/ao15le6oMlDtCRNQnWQtOxCP0R4OMDQQwc+tMyKT8zUmZTXH1ZTQ8HPr3CT3Q1QfzjEjIiK9VFO5v3ZS9vzVE7iKjpiUKK5zeFJdnTJtS2OwhAa1pAYlZhERERg7dizc3Nzg7u6OsWPH4vjx440dGxERtVMVVXK8vy9O8URl9ztZGJ10Dnv7jcJdibnW56mdZGlbGoMlNKgl6ZyYffnllwgMDIS5uTnmzp2LOXPmwMLCAk8//TS+/PLLpoiRiIjakcNx2fBdfRwFJRUAgKeun0ZZB2Mc6+mr87lqJ1k+rtZwtDRR+5QmUD386WhZPYeNqKXoPPnfyckJixcvVll+6f/+7/+wcuVKZGVlNWqApIyT/4moLasZvhQAWN4vhm/6FZxwH4xKQyOdzqNpIn/N+QEo1TfjU5nU1JpsEfOioiIEBgaqbB8zZgyKiop0PR0REbVjMrmAyOR8/BqbiTNJeVi6/yoEAI9mJcDhXj6O9Xys3qTswR6wmvdh4zxUnq4M7OeITdMGwsFSebjSwdKESRnpBZ2fyhw/fjz27duHd955R2n7r7/+inHjxjVaYERE1LapqzEmEuQYlnoJKdZOyLS003hsTY/Ykmf6YsXv15TO4VCrjpk6gf0cMdrDQbUEB0tkkB7QOTHr27cvVq5ciVOnTsHPzw8AcPbsWZw5cwYLFizAF198oWg7Z86cxouUiIjajNpDljWsSgvRoyAT1+xckW/Wqd5z1CRfAf0cdU6yakpoEOkbneeYubq6andikQg3b95sUFCkGeeYEVFrJ5MLGLbmhFIvl1v+LXS6X4xopz4QRHXPsulsZoyVz/XjsCO1Kk02xywlJUWrV2MmZampqZg5cyZcXV0hkUjg5uaGsLAwVFRUKLWbO3cuvL29IRaL4enpqfZcu3btgqenJ0xNTdG9e3esXbu2zmufOnUKIpFI7ev8+fOKdunp6Rg3bhzMzMxgY2ODOXPmqMR35coVDB8+HBKJBE5OTli+fDm48AIRtTdRKQWKpEwkyNEzNw3m5aW42NWj3qTM2swIkYtHMSmjNqvBlf8rKiqQkpICNzc3dOjQtAsIXL9+HXK5HFu2bIG7uzvi4uIQEhKCkpISrFu3TtFOEATMmDED586dw+XLl1XOc+jQIUydOhUbN27EmDFjcO3aNQQHB0Mikag8ZVpjyJAhyM5WXth2yZIlOH78OAYNGgQAkMlkeOaZZ2Bra4vTp08jPz8fr776KgRBwMaNGwFUZ8qjR4+Gv78/zp8/j8TERAQFBcHMzAwLFixorI+KiEjv1dQWM624j0EZ8bjs2BM3JHWPANQMTK56rj+MO7A2OrVdOg9llpaW4u2338a2bdsAAImJiejRowfmzJmDLl26YNGiRU0S6IPWrl2LTZs2qe2ZW7p0KX755RfExsYqbZ8yZQoqKyuxe/duxbYNGzbg008/RXp6OkSi+id+VlZWomvXrggNDcWSJUsAVCd8Y8eOxa1bt9ClSxcAwE8//YSgoCDk5OTAwsICmzZtwuLFi3H79m2IxWIAwMcff4yNGzciIyNDq2sDHMokIv2mdl3LB+Z7RSbnY9YXxzA8JRr7+z4BaPH951jPhH4ifddka2UuXrwYly5dwqlTp5TKZjz55JMICwtrtsSssLAQ1ta6FQEsLy+Hqamp0jaJRIKMjAykpaXBxcWl3nPs378feXl5CAoKUmyLjIxEv379FEkZAAQEBKC8vBwXL16Ev78/IiMjMXz4cEVSVtNm8eLFSE1N1Th3r7y8HOXl5Yr3LElCRPpK3VOWKgmVIMAnORr9UYwDHsPVnqfmict1Ex9FXkk5n5qkdkXn/uBffvkFX375JYYNG6bUy+Ph4YHk5ORGDU6T5ORkbNy4EbNmzdLpuICAAOzduxcRERGQy+VITEzEhg0bAEBluFKTrVu3IiAgAM7OzoptUqkU9vb2Su2srKxgbGwMqVSqsU3N+5o26qxevRqWlpaKV+3rEhHpC5V1Lf8mLSzDmzuicTguGygtBTZvhuHoJzEtZCyAumuQDe1pg2c9neDn1plJGbUbOidmubm5sLNTrS1TUlKi9XBcjaVLl2qcWF/zunDhgtIxWVlZCAwMxIsvvojg4GCdrhcSEoLQ0FCMHTsWxsbG8PX1xaRJkwAAhoaG9R6fkZGBI0eOYObMmSr71N27IAhK2x9sUzOKXNfntnjxYhQWFipet27dqjdOIqLmJJMLWHYgHurmxdRs+/n/9kB2JQ6YNQsQibQu9Fq7AG1kcj5kcj4wRW2bzkOZgwcPxu+//463334bwD9JxTfffKOoa6at0NBQRWKkSe3hxaysLPj7+8PPzw9ff/21boH/HeuaNWuwatUqSKVS2NraIiIiQuU6moSHh6Nz584YP3680nYHBwecO3dOadudO3dQWVmp6BVzcHBQ6RnLyckBAJWetNrEYrHS8CcRkb6p/ZTlgwzkMkyIP4Xfew9DlI0b/Gr9R7S+Qq9aDY0StTE6J2arV69GYGAg4uPjUVVVhc8//xxXr15FZGQk/vjjD53OZWNjAxsbG63aZmZmwt/fH97e3ggPD4eBQcOfyjE0NISTkxMAYOfOnfDz81PbC1ibIAgIDw/H9OnTYWSkvDyIn58fVq5ciezsbDg6Vn9ZHD16FGKxGN7e3oo277//PioqKmBsbKxo06VLF62SQiIifVXzlOWD7Ivz4Fx4G0d7+qHcSKzU7sGHBMYO6KJ2TcsH+8dqhka5fBK1VTpnN0OGDMGZM2dQWloKNzc3HD16FPb29oiMjFQkIY0tKysLI0aMgLOzM9atW4fc3FxIpVKVHqikpCTExsZCKpXi/v37iI2NRWxsrKKeWF5eHjZv3ozr168jNjYWc+fOxe7duxXzzAAgKioKffr0QWZmptK5T5w4gZSUFLXDmGPGjIGHhwdeeeUVxMTEICIiAgsXLkRISIjiyYspU6ZALBYjKCgIcXFx2LdvH1atWoX58+frPARMRNRS1A0t2pmbqLTzTb8Mk6oKXHDywD1x9UNXNe0Ox2Vj2JoTmPzNWcz9KRaTvzmLYWtOVM9Dg3ZDo8sOxHNYk9qkBhUg69+/v6JcRnM4evQokpKSkJSUhK5duyrtq13tIzg4WKnXzsvLC0B1UdyaXqlt27Zh4cKFEAQBfn5+OHXqFHx8fBTHlJaWIiEhAZWVlUrX2bp1K4YMGYK+ffuqxGdoaIjff/8db731FoYOHQqJRIIpU6Yo1ViztLTEsWPHMHv2bAwaNAhWVlaYP38+5s+f3/APhoioGWkaWlzyTF84WppAWlgGQ1kVPHJuIl9iiTSr6ifVa56y9HG11qonzFJirHFoFKhOzrILyxCVUsBllajN0bmOGVD9VGR4eDhu3ryJDRs2wM7ODocPH4azszMeeeSRpoiT/sY6ZkTUEjQlVDX9/a8/4YrffjsHh6J8XLftjpK/e8lq9m+aNhCjPRxUlmJ68FwOliZ4N7AP5v03tt6YPp/kiWc9nRpyO0TNrsmWZPrjjz/Qv39/nDt3Dj///DPu3bsHALh8+TLCwsIaHjEREeklbYYW//rfFWx4xAhZHp6KpAxQfsqyrocEas6VXViGgnvlGtvUpm4Ilai103koc9GiRfjoo48wf/58mJubK7b7+/vj888/b9TgiIioZdSenJ9XXK4xoTKSVaJPTirKOxihKngSTrtaa3zKUtNDAg+yNjNWDI2qSwZrD40StTU6J2ZXrlzBf/7zH5Xttra2yM/Pb5SgiIio5aibS6aOoVyGsdf+h0O9h6DMyAQ5xWUwNBDBz62zIrH77XKWIkHTtofLwVKCsHEeeHNHNESAUnJWuwAti85SW6RzYtapUydkZ2erLCEUExOjKEFBREStS00idTxeiq1nUutt75Z3C05FOdjXb6RiW+2nLtU/JOChdU+YoYEIm6YNVDmPA+uYURunc2I2ZcoUvPfee9i9ezdEIhHkcjnOnDmDhQsXYvr06U0RIxERNSFte8hqPBd3An+6DkSyTfUScdo+dTn7P9F4/QlXfP1nilY9YfUVoCVqi3R+KrOyshJBQUH46aefIAgCOnToAJlMhilTpuD777/Xamkjajg+lUlEjUlTIqVOl6Ic9JMm42hPX6D2cnPQ7anLJc/0xYrfr7GiP7Ur2v7+blC5DKC6ZEZMTAzkcjm8vLzQs2fPBgdL2mNiRkSNRSYX6kykahuRfAFJNs7IsFReQs5ABHw52QtPD+iCyOR8TP7mbL3n2hniC586HhIgaou0/f3doAKzAODm5gY3N7eGHk5ERC2svvIVACCuLMfjqbE4160fisVmKvvlAmBlVr2er7ZPXdZ+SICIlGmVmOlSnX79+vUNDoaIiJpPfYlUj/wMmJeX4H+uXijvYFzvebR96pL1x4g00yoxi4mJUXp/8eJFyGQy9O7dGwCQmJgIQ0PDJlsrk4iIGpdMLuB/iXka93tlXkeJsQkudeld77lqEi0fV2vWHyN6SFolZidPnlT8ef369TA3N8e2bdtgZWUFALhz5w5ee+01PP74400TJRERNUjtQrE1c7mOxUuxaO8V3C2tVGlvUlmGvjmpKDC1UKx1WRfHWomWoYGI9ceIHpLOk/+dnJxw9OhRlTUx4+LiMGbMGGRlZTVqgKSMk/+JSFvqymB0MjVSm5ABgH1xHtzyM3Ch6yOo6GBU7/lrnsZ88ElKTXXM+NQltWdNNvm/qKgIt2/fVknMcnJyUFxcrHukRETU6DSVwVCblAkCnIpy4ZZ/C3/20G5KipWpEVY/319tosX6Y0QNp3Ni9txzz+G1117Dp59+Cl9fXwDA2bNn8c477+D5559v9ACJiEg3dS06/iBDuQzDUmOR1NlZ66Rs3AAHbJg0sM5Ei09dEjWMzonZ5s2bsXDhQkybNg2VldX/8+rQoQNmzpyJtWvXNnqARESkG23KYACAWXkpnk44jd39RysVjK1hZWqEO7V62DqbGWPFs/3w9AAORxI1lQYXmC0pKUFycjIEQYC7uzvMzFTr21Dj4xwzIlKnZpK/tPA+dkalIyr1Tp3t/dIuocikI67aq69H6Whpgj/e8cfFtDscjiRqBE1eYNbMzAwDBgxo6OFERNQIZHIBX564gfAzqbh7X/2k/trEVRV4Lu4E/vvoGAgiA43twsZ5wLiDAYcjiZpZgxMzIiJqWYfjsjWWvVCnb85NiKsqsXvAaI1JWUdxB7w0qCssJcaQyQX2kBE1swYPZVLL4FAmEQG6LT4OQUBAYiTOduuPQom52iZmxoYQiYB75TLFNpa4IGo82v7+1tyPTUREekmXpy7Ny0swKDMe0U591CZlof5umPdkT5RUyJSSMgCQFpbhzR3ROByX3UiRE1F9dE7MSkpKmiIOIiLSkrZPXT5yOxldC28jpksf5HZUXQbJ0dIEc0b1wk/nb6k9vibxW3YgHjI5B1eImoPOiZm9vT1mzJiB06dPN0U8RERUj/oWH4cgoGduGsRVFbhm1wMyA0O1zcLGeeBi2p06kzwBQHZhGaJSCh4iYiLSls6J2c6dO1FYWIhRo0ahV69e+Pjjj7kMExFRE5HJBUQm5+PX2ExEJudDJhcUi4arY3m/GN6Z13BXYoFop74a2817shcC+znWn+T9Tdt2RPRwdH4qc9y4cRg3bhzy8/Oxfft2fP/991iyZAkCAgIwY8YMjB8/Hh068GFPIqKHpWnNybEDHGEgAh4cXTQrL8XQtEs43MsPcg29ZADgYCFG6Eh3AKgzyatN23ZE9HAa5anMjRs34p133kFFRQVsbGwwa9YsLFq0CKampo0RI9XCpzKJ2ofDcdmYtSNaq7YiQY4+uamQVJQjuqvmXrKawhe1Fx6XyQUMW3MC0sIytQ8TiAA4WJrg9HsjWTqD6CE0+VOZUqkUn3zyCfr27YtFixZh4sSJiIiIwGeffYZ9+/ZhwoQJDT01EVG7VlElx4Ldl7RrLAh4Ie4EMizt60zKgOoEq3ZSBlSvaRk2zgPAP4lbjZr3YeM8mJQRNROdxxz37t2L8PBwHDlyBB4eHpg9ezamTZuGTp06Kdp4enrCy8urMeMkImpzapZRqr3k0bF4KRbuvoySB0pXqNMjPwPd72ZjT/8n62wX6u+Ooe42GpdUCuzniE3TBqoMmzqwjhlRs9M5MXvttdcwadIknDlzBoMHD1bbpkePHvjggw8eOjgiorZK3fyxTqZGWlfxH3vtT5zt1h8n3dR/DwP/DEPOG92r3h6vwH6OGO3hoJIosqeMqHnpPMestLSUc8daEOeYEbV+OlXtf4B1aSEGZ1xFhJsPqgzr/r+1CFAZuiSiltFki5ibmppCJpNh3759uHbtGkQiEfr06YMJEybwaUwionroUrX/Qd4Z8bhrYo6jPX3rXIAcAKzNjLDquf5MyohaGZ0zqbi4OIwfPx63b99G7969AQCJiYmwtbXF/v370b9//0YPkoiordC2an9tBnIZhqZdwo3O3SC1sKm3fWczY0QuHgXjDlx1j6i10flfbXBwMPr164eMjAxER0cjOjoat27dwoABA/D66683RYxERG2GroVabe8VwCsrAZcce2mVlAHARG8nJmVErZTOPWaXLl3ChQsXYGVlpdhmZWWFlStXanwYgIiIqulSqLVnbhrMK0px0akvINJ+Ev7+S9l4N7AvJ+4TtUI6/5eqd+/euH37tsr2nJwcuLu7N0pQRERtlY+rNRwtTVRqhtVmKJehb85NGMsqq5dV0iEpA7i2JVFrplViVlRUpHitWrUKc+bMwZ49e5CRkYGMjAzs2bMH//rXv7BmzZqmjpeIqFWrXdBVnY7lpRiWGosMS3tcdWj4f3a5tiVR66TVUGanTp0gqvU/NkEQ8NJLLym21VTcGDduHGSy+osiEhG1Z4H9HPF0f0f8fiVbaXvnkrvwuRWHQ32GPfQ1uLYlUeukVWJ28uTJpo6DiKjNerDCf35xOQ7WTsoEAY+nxiDL3Pahk7KaorI+rtYPFzQRtQitErPhw4c3dRx1Sk1NxYoVK3DixAlIpVJ06dIF06ZNwwcffABjY2NFu7lz5+L06dOIi4tD3759ERsbq3KuXbt2YdWqVYoSH6GhoXjnnXc0XvvUqVPw9/dXuy8qKgqDBw/GpUuX8PHHH+P06dPIy8uDi4sLZs2ahblz5yrdg6urq8o5Dh06hMDAQB0+DSJqTdRV+K/NtOI+JsSfwn8eDdR5LtmDuLYlUevXKirCXr9+HXK5HFu2bIG7uzvi4uIQEhKCkpISrFu3TtFOEATMmDED586dw+XLl1XOc+jQIUydOhUbN27EmDFjcO3aNQQHB0MikSA0NFTttYcMGYLsbOXhhiVLluD48eMYNGgQAODixYuwtbXFjh074OzsjL/++guvv/46DA0NVc57/PhxPPLII4r31tb8Xy1RW1Vfhf/Bt+JQamRSZ1ImAtQeP3aAIy6k3oG0iGtbErUlOi/JpC/Wrl2LTZs24ebNmyr7li5dil9++UWlx2zKlCmorKzE7t27Fds2bNiATz/9FOnp6Urz6DSprKxE165dERoaiiVLlmhsN3v2bFy7dg0nTpwA8E+PWUxMDDw9PbW7STW4JBORfnpwuNK7uxWGrz2ptqesg6wKz8b/gf0eT6DS0EjjOccOcMTFtDtK53CslXypWwSdPWVE+qnJlmTSF4WFhTr3NpWXl6us8ymRSJCRkYG0tDS4uLjUe479+/cjLy8PQUFBDYpv/PjxKCsrQ8+ePTFv3jxMnDix3pjLy8sV74uKiuqNkYial7rhSmszYxSUVKi07XpXCrt7d3Cw99A6k7KOYkOsf8kThgYijcmXoYEIfm6dG/+GiKjFtMrS0MnJydi4cSNmzZql03EBAQHYu3cvIiIiIJfLkZiYiA0bNgCAynClJlu3bkVAQACcnZ01tomMjMSuXbvwxhtvKLZ17NgR69evx549e3Dw4EGMGjUKL7/8Mnbs2FHn9VavXg1LS0vFq67rElHzqxmufLBnTF1SNjQ1FhCJEN21L+4b1/3U5L1yGYavPYlj8VL4uXXGs55O8HPrzB4xojauRROzpUuXQiQS1fm6cOGC0jFZWVkIDAzEiy++iODgYJ2uFxISgtDQUIwdOxbGxsbw9fXFpEmTAACGhob1Hp+RkYEjR45g5syZGttcvXoVzz77LP79739j9OjRiu02NjaYN28efHx8MGjQICxfvhxvvfUWPvnkkzqvuXjxYhQWFipet27d0vJuiaipabsguXFVJTyzEpBtboMMS3utzy8tLMObO6JxOE67/zgSUeun1VCml5eXVvOvACA6Olrri4eGhioSI01qDy9mZWXB398ffn5++Prrr7W+Tg2RSIQ1a9Zg1apVkEqlsLW1RUREhMp1NAkPD0fnzp0xfvx4tfvj4+MxcuRIhISE4MMPP6z3fL6+vvj222/rbCMWiyEWi+s9FxE1v7M38+tdkLzbnWxY3y/CddvuKDPSrbaYgOrJ/8sOxGO0hwN7y4jaAa0SswkTJij+XFZWhq+++goeHh7w8/MDAJw9exZXr17FW2+9pdPFbWxsYGOj3aK8mZmZ8Pf3h7e3N8LDw2Fg0PDOPkNDQzg5OQEAdu7cCT8/P9jZ2dV5jCAICA8Px/Tp02FkpDov5OrVqxg5ciReffVVrFy5Uqs4YmJi4OjIp6eIWqPDcdlY9POVOts4FuXC5U4W/uzh3eDrCPhniSXOJyNq+7RKzMLCwhR/Dg4Oxpw5c7BixQqVNk01zJaVlYURI0agW7duWLduHXJzcxX7HBwcFH9OSkrCvXv3IJVKcf/+fcVTmR4eHjA2NkZeXh727NmDESNGoKysDOHh4di9ezf++OMPxTmioqIwffp0REREKJI3ADhx4gRSUlLUDmNevXoV/v7+GDNmDObPnw+pVAqgOgG0tbUFAGzbtg1GRkbw8vKCgYEBDhw4gC+++ILLWBG1QvWVwRBXlqNPbiqKTDo+VFJWG5dYImofdH4qc/fu3SrzvgBg2rRpGDRoEL777rtGCay2o0ePIikpCUlJSejatavSvtrVPoKDg5WSLC8vLwBASkqKYqhy27ZtWLhwIQRBgJ+fH06dOgUfHx/FMaWlpUhISEBlZaXSdbZu3YohQ4agb9++KvHt3r0bubm5+PHHH/Hjjz8qtnfv3h2pqamK9x999BHS0tJgaGiIXr164bvvvsO0adN0/0CIqFlVVMnxQ2Qq0gpK4Wxlim//d1NjUtZBVoWnE87gYJ9hKO9grKGV7rjEElH7oHMdMwcHB6xevRqvvfaa0vbw8HAsWrQIt2/fbtQASRnrmBE1r9UH4/HN/1Ig1+KbsmduGuxK7uCMi2ejXb9miaXT743kHDOiVqzJ6pj961//wptvvomLFy/C19cXQPUcs++++w7//ve/Gx4xEZEekckFvP2faByMk2rVfuKV4zju7oMbtt0bLQYusUTU/uicmC1atAg9evTA559/jv/85z8AgL59++L777/HSy+91OgBEhE1t8Nx2Zj/31iUVsrrbet8V4peeWnY02/UQ691aSCCUs8cl1gian9a7ZJM7RWHMoma1uG4bMzaoV3ZnydvnEOcvRukFto9Xa5JTTr3f1MGwsrMmEssEbVBTbok0927d7Fnzx7cvHkTCxcuhLW1NaKjo2Fvb6/0JCMRUWsikwtYsOtSve1MK+7DL/0yIrv1R4nYtN729WHPGBHV0Dkxu3z5Mp588klYWloiNTUVwcHBsLa2xr59+5CWlobt27c3RZxERE1uY8QNlFTI6mzTKzcVxrIq/Ok6sM61LrXRydQI/zd5IHy51BIR/U3nKq3z589HUFAQbty4AROTfx7ffuqpp/Dnn382anBERE1BJhcQmZyPX2MzEZmcD5lcgEwu4Jv/3dR8kCBgYMY1yEUGiHNwf+ikDADullbCwEDEpIyIFHTuMTt//jy2bNmist3JyUlRWJWISF8djsvGsgPxSkspOVqawLu7lcbeMrPyUvTOS4PUojOyLOpeJURXLBxLRLXpnJiZmJigqKhIZXtCQoKiyj0RkT7SVLE/u7AMv11Wv1C4Y1EuXAsyEeXcD1WGDZqWWycWjiWi2nQeynz22WexfPlyRWV8kUiE9PR0LFq0CC+88EKjB0hE1BhkcgHLDsRrrNivQhDQ/U4WXO5k4y8Xz0ZPykSo7qnzcbVu1PMSUeumc2JWs1alnZ0d7t+/j+HDh8Pd3R3m5uZaL95NRNTcolIKlIYv69JBVoURNy+grIMxIrsPaPA1rUyr56E9OIOMhWOJSBOd/wtoYWGB06dP48SJE4iOjoZcLsfAgQPx5JNPNkV8RESNQtu5XBZl9/Bk0jns7TeqQdeZ92RPuNiYKeqQHYuXqsxpY3kMItJE5wKz27dvx8svvwyxWKy0vaKiAj/99BOmT5/eqAGSMhaYJWqYyOR8TP7mbJ1thqXEIM+sE67buep8/o7iDlj34gC1yZZMLiAqpYCFY4naMW1/f+ucmBkaGiI7Oxt2dspPJuXn58POzg4yWd01gOjhMDEjahiZXMCwNSfUDmeaVJZhwtVT+OnRgAYtq2Rl2gHn3h8N4w46zw4honZC29/fOn+LCIIAkZovroyMDFhaWup6OiKiZmFoIELYOA+V7f2kSeiZdwu7BozWOSkT/f1a/fwAJmVE1Ci0nmPm5eUFkUgEkUiEUaNGoUOHfw6VyWRISUlBYGBgkwRJRNQYAvs5Yt6TvfDZ8USIBDmeSvgL/3P1QrHYrM7jHC1NMP5RR+y/lM25YkTUpLROzCZMmAAAiI2NRUBAADp27KjYZ2xsDBcXF5bLICK9FzrSHb+fugKL1CSc7da/zqTM0qQDvprmDd8e1UsmvRvYl3PFiKhJ6TzHbNu2bZg0aZLK5H9qHpxjRvSQoqJwOrME08/eg1ykefhRBGDTtIHsDSOiRtFkc8w8PDwQGxursv3cuXO4cOGCrqcjImowdWteaiSXA5cvAyIRhj3nj69eGQRHS/VV9x0tTZiUEVGL0LmO2ezZs/Huu+/iscceU9qemZmJNWvW4Ny5c40WHBGRJofjshH2axxuF1cottmbG2PZs/1UE6qcHODGDaB3b8DGBkD1fLPRHg6ISimAtKgMBffKYW1mDAdLCYcoiajF6DyU2bFjR1y+fBk9evRQ2p6SkoIBAwaguLi4UQMkZRzKJKpOymbtiNa4f3Pt3q67d4Hjx4HnnwcM+OQkEbWMJhvKFIvFuH37tsr27OxspSc1iYgam0wu4ExSHub8FFtnuzk/xUJWWQVER1f3lE2cyKSMiFoFnb+pRo8ejcWLF6OwsFCx7e7du3j//fcxevToRg2OiAioTsg+P34DA1ccw9Rvz6GiSl5n+4pKGY4v+gTo1QsYPLiZoiQieng6d3F9+umneOKJJ9C9e3d4eXkBqC6hYW9vjx9++KHRAySi9u1wXDYW7b2Cu6WVWrV3z0tH18IchPYcjO+zy+DrZsb5YkTUaug8xwwASkpK8OOPP+LSpUuQSCQYMGAAJk+eDCMjo6aIkWrhHDNqT+qbS/agCVdP4k/XgSgw/WcVEkcWgSUiPdBka2VSy2JiRu1FXWtbPsj2XgEezb6Bk26DIDMwVNpX01fG8hdE1JK0/f2t1VDm/v378dRTT8HIyAj79++vs+348eN1i5SISI2olAKtkjLf9MuQduyM4+4+ate6FFCdnC07EI/RHg4c1iQivaZVYjZhwgRIpVLY2dkplmZSRyQSQSaTNVZsRNSO5RTXnZR1kFVhSNolXLd1QY555zrbCgCyC8sQlVIAP7e62xIRtSStEjO5XK72z0REDSWTC0rrTnp3t8LFtDuK9zZmmpd9cyzKhWNRHqKd+uKe2FTra9aX7BERtTQWHiOiZnc4LhvLDsQrDVUaiIDaKypZmxqjk8QId+8rP43ZOzcVkspyRDv1UTt0WRc7c/VLMBER6QutErMvvvhC6xPOmTOnwcEQUdt3OC4bb+6IxoNPHT24zGVBaYXSeyNZJXrnpqHSsANiu/TW6ZoiAA6WJvBxtdY9YCKiZqRVYvbZZ58pvc/NzUVpaSk6deoEoLrArKmpKezs7JiYEZFGMrmAZQfiVZKy+nSuLEH/9GuIcn4EpcYSnY6t6VMLG+fBif9EpPe0qvyfkpKieK1cuRKenp64du0aCgoKUFBQgGvXrmHgwIFYsWJFU8dLRK2Ytk9a1mZXnI+BqVdwym2QVklZJ4lyPUUHSxOWyiCiVkPnOmZubm7Ys2ePoup/jYsXL2LixIlISUlp1ABJGeuYUWu2LzoD83Zd0q6xIGDEzYtItXJEqrWT1tf4MfgxGIhEiocIfFyt2VNGRC2uUeuY1ZadnY3KStWlUWQymdrFzYmIahSUVNTfCIB5eQmeun4GuwaM1nqCf808Mt8enZmIEVGrpfMi5qNGjUJISAguXLiAms62Cxcu4I033sCTTz7Z6AESUdth3VFzCYwafmmX4Xz3NnY9OkanpAzgPDIiav10Tsy+++47ODk5wcfHByYmJhCLxXjsscfg6OiIb7/9tiliJKJWRiYXEJmcj19jMxGZnA/Z349cOlhoLldhXFWJiVeOI8r5EcTb99DpepxHRkRthc5Dmba2tjh48CASExNx/fp1CIKAvn37olevXk0RHxG1MupqlNUsJK6pPrVrQSY63S/GgT6Pq6x1qcmSZ/rCxlzMeWRE1Kbo3GNWw8XFBb1798YzzzzT5ElZamoqZs6cCVdXV0gkEri5uSEsLAwVFcrzVebOnQtvb2+IxWJ4enqqPdeuXbvg6ekJU1NTdO/eHWvXrq3z2qdOnYJIJFL7On/+vKKduv2bN29WOteVK1cwfPhwSCQSODk5Yfny5eAa8tSW1NQoe/DJS2lhGWbtiMb7v1xROWb4zYu430GMGKc+KDeqf6hThOpEL2ioK571dIKfG+eUEVHboXOPWWlpKd5++21s27YNAJCYmIgePXpgzpw56NKlCxYtWtToQV6/fh1yuRxbtmyBu7s74uLiEBISgpKSEqxbt07RThAEzJgxA+fOncPly5dVznPo0CFMnToVGzduxJgxY3Dt2jUEBwdDIpEgNDRU7bWHDBmC7OxspW1LlizB8ePHMWjQIKXt4eHhCAwMVLy3tLRU/LmoqAijR4+Gv78/zp8/j8TERAQFBcHMzAwLFixo0OdCpE/qqlFWs+1u6T8PDplUlsEjJwUpVl0gtbDR6hqcS0ZEbZ3OidnixYtx6dIlnDp1SikJefLJJxEWFtYkiVlgYKDStXr06IGEhARs2rRJKTGrWaEgNzdXbWL2ww8/YMKECZg1a5biPO+99x7WrFmD2bNnQ6RmorGxsTEcHBwU7ysrK7F//36EhoaqtO/UqZNS29p+/PFHlJWV4fvvv4dYLEa/fv2QmJiI9evXY/78+WqvTdSa6FKjzC3/FjqWl+KqvRvKOxhrfQ2Hv4dEOZeMiNoqnYcyf/nlF3z55ZcYNmyYUjLh4eGB5OTkRg2uLoWFhbC21m15lfLycpiYKE8+lkgkyMjIQFpamlbn2L9/P/Ly8hAUFKSyLzQ0FDY2Nhg8eDA2b96stOB7ZGQkhg8fDrH4n6GagIAAZGVlITU1tc6Yi4qKlF5E+kYmF7A9Ursahl3vSuFQnI9LXXrXm5R1MjXCvCd74fNJntgZ4ovT741kUkZEbZrOPWa5ubmws7NT2V5SUtJsvT7JycnYuHEjPv30U52OCwgIwLx58xAUFAR/f38kJSVhw4YNAKrrs7m4uNR7jq1btyIgIADOzs5K21esWIFRo0ZBIpEgIiICCxYsQF5eHj788EMAgFQqVTm/vb29Yp+rq6va661evRrLli3T6T6JmtPBy1n44Jc43ClVrW9Ym6SiDH1zU5BrZoUzLp51tu1kaoTXhrgidKQ7hyyJqF3Rucds8ODB+P333xXva5Kxb775Bn5+fjqda+nSpRon1te8Lly4oHRMVlYWAgMD8eKLLyI4OFin64WEhCA0NBRjx46FsbExfH19MWnSJACAoWH9T4JlZGTgyJEjmDlzpsq+Dz/8EH5+fvD09MSCBQuwfPlylQcLHkxcayb+15XQLl68GIWFhYrXrVu36o2TqLmsPhiPt/4TU29SZiSrxFOJZ3C9S0/c6qR+uB8AZg51wc4QX1z8cDTmPtmTSRkRtTs695itXr0agYGBiI+PR1VVFT7//HNcvXoVkZGR+OOPP3Q6V2hoqCIx0qR2L1NWVhb8/f3h5+eHr7/+WtfQIRKJsGbNGqxatQpSqRS2traIiIhQuY4m4eHh6Ny5M8aPH19vW19fXxQVFeH27duwt7eHg4MDpFKpUpucnBwA//ScqSMWi5WGP4laikwuICqlQLHUUd69cmz5s57hS0FA39wUWJbdw95+o+psOtrDDkvGPdKIERMRtT46J2ZDhgzBX3/9hbVr18LNzQ1Hjx7FwIEDERkZif79++t0LhsbG9jYaPc0VmZmJvz9/eHt7Y3w8HAYGDS40gcMDQ3h5FS99t7OnTvh5+endni2NkEQEB4ejunTp8PIyKjOtgAQExMDExMTdOrUCQDg5+eH999/HxUVFTA2rp5Xc/ToUXTp0kWrpJCoJamrTabNzIWXLh/D4d5DcM2u/oKxx+JzcPByFp4e0OVhQiUiatV0SswqKyvx+uuvY8mSJYpyGc0hKysLI0aMQLdu3bBu3Trk5uYq9tV+CjIpKQn37t2DVCrF/fv3ERsbC6D6wQRjY2Pk5eVhz549GDFiBMrKyhAeHo7du3cr9fRFRUVh+vTpiIiIUCRvAHDixAmkpKSoHcY8cOAApFIp/Pz8IJFIcPLkSXzwwQd4/fXXFb1dU6ZMwbJlyxAUFIT3338fN27cwKpVq/Dvf/+bT2SSXqupTfZgGYy6SvC5FmTC5U6WTmtdAsCHv8YhoJ8jhzCJqN3SKTEzMjLCvn37sGTJkqaKR62jR48iKSkJSUlJ6Nq1q9K+2gVag4ODlZIsLy8vAEBKSoqiV2rbtm1YuHAhBEGAn58fTp06BR8fH8UxpaWlSEhIUFmofevWrRgyZAj69u2rEp+RkRG++uorzJ8/H3K5HD169MDy5csxe/ZsRRtLS0scO3YMs2fPxqBBg2BlZYX58+dj/vz5Df9giJpYXbXJNAlI+AvRTn1w0m2wztcrKKlEVEoB/Nw663wsEVFbIBJ0LD3/2muvoX///kwoWkhRUREsLS1RWFgICwuLlg6H2rjI5HxM/uasVm3Ny0sw+NZVRHYbgPvGmtfErM/nkzzxrKdT/Q2JiFoRbX9/6zzHzN3dHStWrMBff/0Fb29vmJmZKe2fM2eO7tESUYt7cHK/j6s1coq1Kxj7iDQJcgMD/NHDW+u1LjWxM294UkdE1Nrp3GOmqd4WUP3U482bNx86KNKMPWbUFDQtPP7SIGd8HnFD84GCgMEZV1Fgaonkzs6a22nJ0dIEp98byTlmRNTmNFmPWUqKdtW9iah10DS5P7uwrM6kzKLsHnrmpSPVqgtyO+q2Coc6InANTCIinROz2rQpkEpE+qshk/sBoGvhbXS7k42z3fpD/pBDl0B1TxnXwCQiamBitnXrVnz22We4caP6f9M9e/bEv/71L50r8RNRy9Jl4XEAgCDArSADVveLcLXvIMjvV0EE6JzYAcCSZ/rCxlysmM/GnjIiogYkZkuWLMFnn32Gt99+W7EEU2RkJObNm4fU1FR89NFHjR4kETUNbSf3A9XLKj2REo1Ljr2Q3NkZP071RnFZpdq5afcrZSgsrVSbsIkAOFiaIGioK5MxIqIH6JyYbdq0Cd988w0mT56s2DZ+/HgMGDAAb7/9NhMzolbExky75b6sSgvxeGoM9nuMUGzLu1eOZz2dMNrDQeVpzmPxUry5I1qlN60mDeNcMiIi9XROzGQyGQYNGqSy3dvbG1VVVY0SFBE1jdolMVLzSvCfc+n1HjP85kVkmdsoJWXAP2UtDA1EKgVhA/s5YtO0gSq9aQ6cS0ZEVCedE7Np06Zh06ZNWL9+vdL2r7/+GlOnTm20wIiocakriVEX04r7GHftT/x3wBiVZZUcLat7xuoS2M9RbW8ae8qIiDRr8OT/o0ePwtfXFwBw9uxZ3Lp1C9OnT1daEeDB5I2IWoamkhiaeGVeR4VhB41rXWo7FKmuN42IiDTTOTGLi4vDwIEDAQDJyckAAFtbW9ja2iIuLk7RjiU0iPSDTC5g6X7tSmIYyGUYe/00jrv7oNRYorbNvCd7cSiSiKiJ6JyYnTx5siniIKIm8uWJG5AW1T98aXvvDrrfzcIfrgM1JmUOFmKEjnRv7BCJiOhvD1Vgloj02+G4bHx2vI4llf42MOMaikzMcMHJQ+3QZY2l4x/hHDEioibExIyojaqp6l8XA7kMfXLTUG5kjCSbbprbiYAvJw/kECYRURNjYkbUBtQug1Hz9GN9Vf3tivPhXHgbN2y6ocikY53n/3KyF54ewKSMiKipMTEjauXUlcGwNjNC/y6WGo/pdL8IXtkJONLTr86hS6B6sv/TA7o0WrxERKSZzolZSUkJzMzMmiIWItKRpjIYBSWV+ONGnkp7Q7kMj9xORpVBBxzpNUSra7jYmDZCpEREpA0DXQ+wt7fHjBkzcPr06aaIh4i0VDOHTOsFxAUBL1yJQKJNN8Tb99D6OjUV/omIqOnpnJjt3LkThYWFGDVqFHr16oWPP/4YWVlZTREbEdWhvjlktfXOTcWw1FjsenQMyoy0S7RE0K7CPxERNR6dE7Nx48bh559/RlZWFt58803s3LkT3bt3x9ixY7F3716ul0nURGRyAZHJ+fg1NhORyfmQFt7X6rgXrkRA2rEzTrt6aWzz4CwzLjZORNQyRIIgaD0SosnGjRvxzjvvoKKiAjY2Npg1axYWLVoEU1POTWlsRUVFsLS0RGFhISwsLFo6HGom6ib4dxR3wL1yzf8RcizKRd+cFJzq4Q25gaHKfgcLMZaOfwQAVM7tyMXGiYgalba/vxv8VKZUKsX27dsRHh6O9PR0TJw4ETNnzkRWVhY+/vhjnD17FkePHm3o6Ynob5om+NeVlA1LiUGqlSNOuA3W+NTlpy95Yqi7DQBwsXEiIj2hc2K2d+9ehIeH48iRI/Dw8MDs2bMxbdo0dOrUSdHG09MTXl6ah02ISDu6TvA3rqqEb/plxNv3QJ6ZVZ1t8+6VK/7MxcaJiPSDzonZa6+9hkmTJuHMmTMYPHiw2jY9evTABx988NDBEbV3ukzw73YnG51LC3G+6yO4b1z/BH8+bUlEpH90Tsyys7PrnTsmkUgQFhbW4KCIqJo2i48DQN+cmzCSVSHGqU+9bUUAHPi0JRGRXtI5MauqqkJRUZHKdpFIBLFYDGNj40YJjIiAglrDjeqIqyrQJycF98SmuGZXf20yPm1JRKTfdC6X0alTJ1hZWam8OnXqBIlEgu7duyMsLAxyubwp4iVqV6zNNP9Hx/J+MfzSLuG6rQuSOzur7H/jCVc4WioPVzpYmmDTNC5GTkSkr3TuMfv+++/xwQcfICgoCD4+PhAEAefPn8e2bdvw4YcfIjc3F+vWrYNYLMb777/fFDETtRvpBeprlXUpykHv3DScdFM/z1PcwQDvBvbFu4F9+bQlEVEronNitm3bNnz66ad46aWXFNvGjx+P/v37Y8uWLYiIiEC3bt2wcuVKJmZEDSCTC4hKKYC08D62RaYq7xQEjEw+j0SbbhqTMgAor5IjKqUAfm6d+bQlEVEronNiFhkZic2bN6ts9/LyQmRkJABg2LBhSE9Pf/joiNoZdYVka1jeL8aYG2exe8Borc6VU6zdgwNERKQ/dE7Munbtiq1bt+Ljjz9W2r5161Y4O1fPc8nPz4eVVd01lIjaO0XPWFEZCu6V49adUnz/V5ratkNTY5Fn1knrpAxgOQwiotZI58Rs3bp1ePHFF3Ho0CEMHjwYIpEI58+fx/Xr17Fnzx4AwPnz5/Hyyy83erBEbUVdPWO1iSvLMf7an/i530i1yyqpw3IYREStV4PWykxLS8PmzZuRkJAAQRDQp08fvPHGG3BxcWmCEKk2rpXZ+mlaYulBPXPTYFpZhnj7Hqg0NNLq3DXT+vnkJRGRfmmStTIrKysxZswYbNmyBatXr37oIInaG62WWPp7gv8Vh564YdtdbRMRAAFAJ1Mj3C2tVGx34OLjREStmk6JmZGREeLi4iDSsCgyEWkmkwv47nRKncOXZuWl6J2bhgRbF+R21DxPsyYB4+LjRERti85zzKZPn6528j8RaXY4LhuL9l5R6t16UK/cVBjLqnDZsSeqDFX/aVqbGWHJ2EfgYKGcgLEcBhFR26FzYlZRUYFvv/0Wx44dw6BBg2BmZqa0f/369Y0WHFFbcDguG7N2RGtuIAhwuZMF6/tFONttgNomIgCrnuvPIUoiojZO5yWZ4uLiMHDgQFhYWCAxMRExMTGKV2xsbBOECKSmpmLmzJlwdXWFRCKBm5sbwsLCUFFRodRu7ty58Pb2hlgshqenp9pz7dq1C56enjA1NUX37t2xdu3aOq996tQpiEQita/z588DqF4NQVObnJwcxT2o23/48OGH/4BI78jkAiKT87EvOgMLd1/W2K5jeSkGZl5HWQexxqSsk6kRJ/MTEbUTOveYnTx5siniqNP169chl8uxZcsWuLu7Iy4uDiEhISgpKcG6desU7QRBwIwZM3Du3Dlcvqz6y/DQoUOYOnUqNm7ciDFjxuDatWsIDg6GRCJBaGio2msPGTIE2dnZStuWLFmC48ePY9CgQQCAl19+GYGBgUptgoKCUFZWBjs7O6Xtx48fxyOPPKJ4b23NkgZtjS6lMJ5MOocDfZ+ArI5SGP83eSCG9rRp7DCJiEgP6ZyY1UhKSkJycjKeeOIJSCQSCILQZA8FBAYGKiU+PXr0QEJCAjZt2qSUmH3xxRcAgNzcXLWJ2Q8//IAJEyZg1qxZivO89957WLNmDWbPnq02fmNjYzg4OCjeV1ZWYv/+/QgNDVW0l0gkkEgkija5ubk4ceIEtm7dqnK+zp07K52P2hatSmEIAh7JuQmTynL88oi/xmY19ch8OYeMiKjd0HkoMz8/H6NGjUKvXr3w9NNPK3qTgoODsWDBgkYPUJPCwkKde5vKy8thYqJcDV0ikSAjIwNpaeorrj9o//79yMvLQ1BQkMY227dvh6mpKSZOnKiyb/z48bCzs8PQoUMVBXnri7moqEjpRfql9rDl+/vi6k3KJl06gtROjrjY1UNjs5r/IoSN8+BTlkRE7YjOidm8efNgZGSE9PR0mJqaKra//PLLzTZfKjk5GRs3blT0fGkrICAAe/fuRUREBORyORITE7FhwwYAUBmu1GTr1q0ICAhQLD+lznfffYcpU6Yo9aJ17NgR69evx549e3Dw4EGMGjUKL7/8Mnbs2FHn9VavXg1LS0vFq67rUvM7HJeNYWtOYPI3ZzFv1yUUlFRobOuel47hKdH4yTMQJWJTpX0P5l4OliacV0ZE1A7pPJR59OhRHDlyBF27dlXa3rNnT617nWosXboUy5Ytq7PN+fPnFXO5ACArKwuBgYF48cUXERwcrNP1QkJCkJycjLFjx6KyshIWFhaYO3culi5dCkPD+pe7ycjIwJEjR7Br1y6NbSIjIxEfH4/t27crbbexscG8efMU7wcNGoQ7d+7gk08+wbRp0zSeb/HixZg/f77ifVFREZMzPaFtBX8AGHvtT/zV/VEk2XRTu//LyV6wMhOzHhkRUTunc2JWUlKi1FNWIy8vD2KxWKdzhYaGYtKkSXW2qb3MU1ZWFvz9/eHn54evv/5ap2sBgEgkwpo1a7Bq1SpIpVLY2toiIiJC5TqahIeHo3Pnzhg/frzGNt9++y08PT3h7e1d7/l8fX3x7bff1tlGLBbr/LlS09Oqgj8Ay/vFGJh1HcfdfVBmpLqouAjA/03xwtMDujRJnERE1LronJg98cQT2L59O1asWAGgOtmRy+VYu3Yt/P01T2RWx8bGBjY22j1tlpmZCX9/f3h7eyM8PBwGBjqPwioYGhrCyckJALBz5074+fmpPD35IEEQEB4ejunTp8PISP26hffu3cOuXbu0Xq4qJiYGjo4cqmqNolIK6n3q0jMrAaVGYpzq4Q1BpP7n9f+mDMTTA/gzQERE1XROzNauXYsRI0bgwoULqKiowLvvvourV6+ioKAAZ86caYoYkZWVhREjRqBbt25Yt24dcnNzFftqP+GYlJSEe/fuQSqV4v79+4q6ah4eHjA2NkZeXh727NmDESNGoKysDOHh4di9ezf++OMPxTmioqIwffp0REREKJI3ADhx4gRSUlIwc+ZMjXH+97//RVVVFaZOnaqyb9u2bTAyMoKXlxcMDAxw4MABfPHFF1izZs3DfDTUQnKKNSdlIkGOwRnxyDGzQqq1k9o2jlzTkoiI1NA5MfPw8MDly5exadMmGBoaoqSkBM8//zxmz57dZL0/R48eRVJSEpKSklTmtgnCP4NJwcHBSkmWl5cXACAlJUUxVLlt2zYsXLgQgiDAz88Pp06dgo+Pj+KY0tJSJCQkoLJSeemcrVu3YsiQIejbt6/GOLdu3Yrnn38eVlbq1zj86KOPkJaWBkNDQ/Tq1QvfffddnfPLqOXJ5ILatSjtzFWHJQHAurQQrgWZSOrsjAJTS8V2BwsxJvt0g4uNGeeQERGRRiKhdmZDeq+oqAiWlpYoLCyEhYVFS4fTph28nI0Pf41TetLSsdbi4cPWnIC0sEwxz8z5rhRdC3Nwtls/CCIDjWtbEhFR+6Pt7+8GJWZ3795FVFQUcnJyIJfLlfZNnz5d92hJa0zMmp5MLmDuzhj8dkV9CRURgE3TBgIA3twRDQO5DG75tyCpLMelLr0VNchY7oKIiGo0WWJ24MABTJ06FSUlJTA3N1eqli8SiVBQUNDwqKleTMya1uG4bMz7byzuV8rrbOdoaYLT741EREwqjn2+A8es3HFXYqHYx/ljRERUW5MlZjUV/1etWqW2bAY1LSZmTefg5Wy89Z9ordvvea4HBqVdgWzii2rnoREREdXQ9ve3zpP/MzMzMWfOHCZl1KYcvJyF2f+J0bq9f/J5FGabAy+9BEMAflzPkoiIGoHOxcACAgJw4cKFpoiFqEUcjsvGW/+J0aqCv3l5CV68fBQn3QbDtP8jTR4bERG1Lzr3mD3zzDN45513EB8fj/79+6sUW62rKj6Rvqmp4K+NQRlXUWIswe7+o9HZzBg+rtZNHB0REbU3OidmISEhAIDly5er7BOJRJDJZA8fFVEz0aaCv6Fchmeu/w9He/oqllVa8Ww/ziMjIqJGp3Ni9mB5DKLWrK4K/gDgUJSHLkW5OOk2WJGUhTzuymWUiIioSTR8wUmiNkBTBX8A8LkVB0lVOaKd+qBYbAYAmDnMBR8849Fc4RERUTujdWL29NNPo7CwUPF+5cqVuHv3ruJ9fn4+PDz4C4taFx9XazhamqD2oGQHWRX6SZNQaNIRKdZOwN+1+kIed8GSsZzwT0RETUfrxOzIkSMoLy9XvF+zZo1SMdmqqiokJCQ0bnRETczQQISwcdX/oRABcCzKxYDsG0ix6oIEWxcAgKmxAb6a4oUPnmFSRkRETUvrOWYP1qHlEpuk7zQtQP6gwH6O2DRtIL7YeQaOOTcR4eYDiEToZGqE14a4InSkOyf6ExFRs9B58j9Ra3A4LhvLDsQrPXGpcamkigoElqRj9KQ+iDL1x3hW8CciohaidWImEomU1sWs2Uakbw7HZePNHdEqBWOlhWV4c0e08uLicjnwww/A1KkwNDGBX7NHS0RE9A+dhjKDgoIgFosBAGVlZZg1axbMzKqfVqs9/4yopdQUjFU30C6geh7ZsgPxGO3hAMMrl4H8fGDmzGaOkoiISD2tE7NXX31V6f20adNU2kyfPv3hIyJ6CPUVjBUAZN+9j9Q1X8DtrSDg0UebLTYiIqL6aJ2YhYeHN2UcRI2ivoKxznel6FGQibhFr8HN0rKZoiIiItIOC8xSm1JXwdgRyedRadABf/Twhp2laTNGRUREpB0mZtSmqCsYK64sx+Mp0bjs2Au3LWzgaGnCBciJiEgvMTGjNuXBgrFu+bfQOy8NUc79cMe0eugybJwHy2AQEZFeYmJGbU5Nwdgn7t2CSWU5Ljv2QnkHYzhYmiiXyiAiItIzLDBLbU9JCQLvpWH0v0YjStSp3sr/RERE+oKJGbUteXlAVBTw5JMwNDZmwVgiImpVmJhR2yAIQEoKkJwMPP10S0dDRETUIJxjRq2fXA4cOAAYGwOjR7d0NERERA3GHjNq3XJzgUOHAK46QUREbQATM9IrMrmAqJQC7SbsHz4MdOvGpIyIiNoMJmakNw7HZWPZgXiltS4dLU0QNs5DucRFSQmwe3d1QmbA0XgiImo7+FuN9MLhuGy8uSNaZQFyaWEZ3twRjcNx2dUbYmOB69eBadOYlBERUZvDHjNqcTK5gGUH4iGo2SeguoL/sv1XMfrGORgOGwrY2jZzhERERM2DXQ7U4qJSClR6ymozL7uHLvExiLF3Z1JGRERtGnvMqMXlFGtOyjxu34QIAmK69EamqRUGNWNcREREzY09ZtTi7MxNVDcKAtzyb0FSWYar9m6QGxiqb0dERNSGMDGjFufjag1HSxPUFMWwKLuHQZnxKDTpiItdPSBC9dOZPq7WLRkmERFRk2NiRi3O0ECEsHEeAADTijKMuHkB0V36IM/MSpGshY3z4ALkRETU5jExI70Q6GGPH70M4VeWjf0eIyA3MAQAOFiaYNO0gcp1zIiIiNooTv6nlicIwDffYMgrr+CxFwO0r/xPRETUxrSKHrPU1FTMnDkTrq6ukEgkcHNzQ1hYGCoqKpTazZ07F97e3hCLxfD09FR7rl27dsHT0xOmpqbo3r071q5dW+/1ExMT8eyzz8LGxgYWFhYYOnQoTp48qdQmPT0d48aNg5mZGWxsbDBnzhyV+K5cuYLhw4dDIpHAyckJy5cvhyCoq97V+snkAiKT8/FrbCYik/Mhk2u4zytXgOPHgTfeAExNYWgggp9bZzzr6QQ/t85MyoiIqF1pFT1m169fh1wux5YtW+Du7o64uDiEhISgpKQE69atU7QTBAEzZszAuXPncPnyZZXzHDp0CFOnTsXGjRsxZswYXLt2DcHBwZBIJAgNDdV4/WeeeQa9evXCiRMnIJFIsGHDBowdOxbJyclwcHCATCbDM888A1tbW5w+fRr5+fl49dVXIQgCNm7cCAAoKirC6NGj4e/vj/PnzyMxMRFBQUEwMzPDggULGv9Da0FaL63044/A008D/fu3QJRERET6RyS00i6btWvXYtOmTbh586bKvqVLl+KXX35BbGys0vYpU6agsrISu3fvVmzbsGEDPv30U6Snp0MkUu2dycvLg62tLf788088/vjjAIDi4mJYWFjg+PHjGDVqFA4dOoSxY8fi1q1b6NKlCwDgp59+QlBQEHJycmBhYYFNmzZh8eLFuH37NsRiMQDg448/xsaNG5GRkaH22uoUFRXB0tIShYWFsLCw0OqY5lSztNKDP1Q1d7dp2kAE2hoA0dGAvz9gwhIYRETU9mn7+7tVDGWqU1hYCGtr3conlJeXw+SBREAikSAjIwNpaWlqj+ncuTP69u2L7du3o6SkBFVVVdiyZQvs7e3h7e0NAIiMjES/fv0USRkABAQEoLy8HBcvXlS0GT58uCIpq2mTlZWF1NTUOmMuKipSeumr+pZWAoB9G/8LWX4BEBjIpIyIiOgBrTIxS05OxsaNGzFr1iydjgsICMDevXsREREBuVyOxMREbNiwAQCQnZ2t9hiRSIRjx44hJiYG5ubmMDExwWeffYbDhw+jU6dOAACpVAp7e3ul46ysrGBsbAypVKqxTc37mjbqrF69GpaWloqXs7OzTvfcnOpaWslALoNP+hXEi8wRJbYDtOwhJCIiak9aNDFbunQpRCJRna8LFy4oHZOVlYXAwEC8+OKLCA4O1ul6ISEhCA0NxdixY2FsbAxfX19MmjQJAGBoaKj2GEEQ8NZbb8HOzg7/+9//EBUVhWeffRZjx45VSubUDUUKgqC0/cE2NaPIdQ1jLl68GIWFhYrXrVu3tL/hZqZpaSXbewXwykrANTtX3OrkUOcSTERERO1Zi07+Dw0NVSRGmri4uCj+nJWVBX9/f/j5+eHrr7/W+XoikQhr1qzBqlWrIJVKYWtri4iICJXr1HbixAn89ttvuHPnjmJM+KuvvsKxY8ewbds2LFq0CA4ODjh37pzScXfu3EFlZaWiV8zBwUGlZywnJwcAVHrSahOLxUrDn/pM3ZJJ3e9kwaE4H+ec+yl6ybi0EhERkXotmpjZ2NjAxsZGq7aZmZnw9/eHt7c3wsPDYWDQ8M4+Q0NDODk5AQB27twJPz8/2NnZqW1bWloKACrXMzAwgFwuBwD4+flh5cqVyM7OhqNj9VOHR48ehVgsVsxD8/Pzw/vvv4+KigoYGxsr2nTp0kVjUtja1CytJC0sg4Fcht65aRBBwLlu1U9dilBdMJZLKxEREanXKuaYZWVlYcSIEXB2dsa6deuQm5sLqVSq0gOVlJSE2NhYSKVS3L9/H7GxsYiNjVXUE8vLy8PmzZtx/fp1xMbGYu7cudi9e7dinhkAREVFoU+fPsjMzARQnVBZWVnh1VdfxaVLl5CYmIh33nkHKSkpeOaZZwAAY8aMgYeHB1555RXExMQgIiICCxcuREhIiKKXbcqUKRCLxQgKCkJcXBz27duHVatWYf78+Vo/kanvapZWEleWY1TyedzqZI+r9m4AwKWViIiItNAq6pgdPXoUSUlJSEpKQteuXZX21a72ERwcjD/++EPx3svLCwCQkpKi6JXatm0bFi5cCEEQ4Ofnh1OnTsHHx0dxTGlpKRISElBZWQmgulfv8OHD+OCDDzBy5EhUVlbikUcewa+//opHH30UQHUP3O+//4633noLQ4cOhUQiwZQpU5RqrFlaWuLYsWOYPXs2Bg0aBCsrK8yfPx/z589v3A+rhQVaybHT+Q7eshmB4loPAjioq2NGRERESlptHbP2Sq/rmO3fD3h4AO7ukMkFLq1ERET0N21/f7eKHjPScwUF1UlZUJBiU83SSkRERKQ9Jmb0cE6eBGxtgVdfbelIiIiIWj0mZtQwFRXA7t3ACy+wgj8REVEjYWJGurt5E8jJASZMYFJGRETUiFpFuQzSIydPAoIA+PoCZmYtHQ0REVGbwh4z0k5ZGXDlCuDoCLi5tXQ0REREbRITM6rfzZvA7duApycgkbR0NERERG0WhzKpbpmZwPXrgJ8fkzIiIqImxsSM1CsrAyIjgZIS4OmnWzoaIiKidoGJGamqqgJ+/BHw9gZ69WrpaIiIiNoNzjEjZRcvAvfuATNntnQkRERE7Q4TM6omCMA33wBTpgAdO7Z0NERERO0SEzOqJhIBwcGAAUe3iYiIWgp/C9M/mJQRERG1KP4mJiIiItITTMyIiIiI9AQTMyIiIiI9wcSMiIiISE8wMSMiIiLSE0zMiIiIiPQEEzMiIiIiPcHEjIiIiEhPMDEjIiIi0hNMzIiIiIj0BBMzIiIiIj3BxIyIiIhITzAxIyIiItITTMyIiIiI9ESHlg6AdCMIAgCgqKiohSMhIiIibdX83q75Pa4JE7NWpri4GADg7OzcwpEQERGRroqLi2Fpaalxv0ioL3UjvSKXy5GVlQVzc3OIRKKWDkdnRUVFcHZ2xq1bt2BhYdHS4TS79n7/AD8D3n/7vn+An0F7vX9BEFBcXIwuXbrAwEDzTDL2mLUyBgYG6Nq1a0uH8dAsLCza1T/IB7X3+wf4GfD+2/f9A/wM2uP919VTVoOT/4mIiIj0BBMzIiIiIj3BxIyalVgsRlhYGMRicUuH0iLa+/0D/Ax4/+37/gF+Bu39/uvDyf9EREREeoI9ZkRERER6gokZERERkZ5gYkZERESkJ5iYEREREekJJmakVmpqKmbOnAlXV1dIJBK4ubkhLCwMFRUVSu3mzp0Lb29viMVieHp6qj3Xrl274OnpCVNTU3Tv3h1r166t9/qJiYl49tlnYWNjAwsLCwwdOhQnT55UapOeno5x48bBzMwMNjY2mDNnjkp8V65cwfDhwyGRSODk5ITly5fXu05ZS9//qVOnIBKJ1L7Onz8PAPj+++81tsnJyVHcg7r9hw8fbvX3D0Dt/s2bNyudq6F//63hM7h06RImT54MZ2dnSCQS9O3bF59//rnKPbTln4Gm/A5o6c+gxu+//47HHnsMEokENjY2eP755xX72vL3gDb3DzT990CLEIjUOHTokBAUFCQcOXJESE5OFn799VfBzs5OWLBggVK7t99+W/jyyy+FV155RXj00UdVznPw4EGhQ4cOwqZNm4Tk5GTht99+ExwcHISNGzfWeX13d3fh6aefFi5duiQkJiYKb731lmBqaipkZ2cLgiAIVVVVQr9+/QR/f38hOjpaOHbsmNClSxchNDRUcY7CwkLB3t5emDRpknDlyhXh559/FszNzYV169bp9f2Xl5cL2dnZSq/g4GDBxcVFkMvlgiAIQmlpqUqbgIAAYfjw4YrzpKSkCACE48ePK7UrLy9v9fcvCIIAQAgPD1dqV1paqtj/MH//reEz2Lp1q/D2228Lp06dEpKTk4UffvhBkEgkSudtyz8DTf0d0NKfgSAIwp49ewQrKyth06ZNQkJCgnD9+nVh9+7div1t+XtAm/sXhKb/HmgJTMxIa5988ong6uqqdl9YWJjaf5CTJ08WJk6cqLTts88+E7p27ar0S7a23NxcAYDw559/KrYVFRUpvlwEofofuoGBgZCZmalos3PnTkEsFguFhYWCIAjCV199JVhaWgplZWWKNqtXrxa6dOmi8dp1aa77f1BFRYVgZ2cnLF++XGObnJwcwcjISNi+fbtiW80XckxMjFbXqY++3T8AYd++fRqPa+y/f0HQv8/gQW+99Zbg7++veN+WfwZa4jtAEJrvM6isrBScnJyEb7/9VuvY2tL3gLb33xLfA02NQ5mktcLCQlhbW+t0THl5OUxMTJS2SSQSZGRkIC0tTe0xnTt3Rt++fbF9+3aUlJSgqqoKW7Zsgb29Pby9vQEAkZGR6NevH7p06aI4LiAgAOXl5bh48aKizfDhw5WKGAYEBCArKwupqak63QfQfPf/oP379yMvLw9BQUEa22zfvh2mpqaYOHGiyr7x48fDzs4OQ4cOxZ49e3SKvzZ9vP/Q0FDY2Nhg8ODB2Lx5M+RyuWJfY//9A/r5GWgTX1v8GWiJ7wCg+T6D6OhoZGZmwsDAAF5eXnB0dMRTTz2Fq1evarxOW/oe0OX+m/t7oKkxMSOtJCcnY+PGjZg1a5ZOxwUEBGDv3r2IiIiAXC5HYmIiNmzYAADIzs5We4xIJMKxY8cQExMDc3NzmJiY4LPPPsPhw4fRqVMnAIBUKoW9vb3ScVZWVjA2NoZUKtXYpuZ9TRttNef9P2jr1q0ICAiAs7OzxjbfffcdpkyZAolEotjWsWNHrF+/Hnv27MHBgwcxatQovPzyy9ixY4dO9wDo5/2vWLECu3fvxvHjxzFp0iQsWLAAq1atUuxvzL9/QD8/g9oiIyOxa9cuvPHGG4ptbflnoLm/A4Dm/Qxu3rwJAFi6dCk+/PBD/Pbbb7CyssLw4cNRUFCg9pi29D2g7f039/dAs2jpLjtqXmFhYQKAOl/nz59XOiYzM1Nwd3cXZs6cWed51XVhy+Vy4d133xVMTEwEQ0NDwcrKSli6dKkAQDh37pzac8nlcmH8+PHCU089JZw+fVq4ePGi8OabbwpOTk5CVlaWIAiCEBISIowZM0blWCMjI2Hnzp2CIAjC6NGjhddff11p/7x58/T+/mu7deuWYGBgIOzZs0djm7/++ksAIFy4cKHe8w0ePLjN3X+NdevWCRYWFor36v7+MzIy6r3/1vgZxMXFCba2tsKKFSvqPV9b+Rlo6HdAa/kZ+PHHHwUAwpYtWxTbysrKBBsbG2Hz5s0q7dva94Cu919Dl++ByMhIjedpSR0eJqmj1ic0NBSTJk2qs42Li4viz1lZWfD394efnx++/vprna8nEomwZs0arFq1ClKpFLa2toiIiFC5Tm0nTpzAb7/9hjt37sDCwgIA8NVXX+HYsWPYtm0bFi1aBAcHB5w7d07puDt37qCyslLxvyEHBweV/xGNHTsWn332GY4dO4auXbvq5f3XFh4ejs6dO2P8+PEa23z77bfw9PRUDPPWZcaMGbh06RIuXbqksU1ru/8avr6+KCoqwu3bt2Fvb6/277/mSbW6/v4fjE3fP4P4+HiMHDkSISEh+PDDD+s9X1v5GWjod0Br+RlwdHQEAHh4eCi2icVi9OjRA+np6Srt29r3gK73X0OX74EHe9L0BROzdsbGxgY2NjZatc3MzIS/vz+8vb0RHh4OA4OGj3wbGhrCyckJALBz5074+fnBzs5ObdvS0lIAULmegYGBYu6An58fVq5ciezsbMU/4KNHj0IsFiu+mPz8/PD++++joqICxsbGAIDz58+jS5cuGDVqFEQiUZ0xt9T91xAEAeHh4Zg+fTqMjIzUtrl37x527dqF1atXaxVHUlISnJyc0KdPn3rbtob7ry0mJgYmJiaK4W51f/9Hjx7V+u8f0P/P4OrVqxg5ciReffVVrFy5Uqs42srPQEO/A1rLz0BN+YmEhAQMGzYMAFBZWYnU1FR0795dqW1b/B7Q5f5r0+V7QJv/GLSIlu2wI31V0209cuRIISMjQ+lR5Npu3LghxMTECG+88YbQq1cvISYmRoiJiVE8ip2bmyts2rRJuHbtmhATEyPMmTNHMDExUeq+PnfunNC7d28hIyNDcUznzp2F559/XoiNjRUSEhKEhQsXCkZGRkJsbKwgCP88Kj9q1CghOjpaOH78uNC1a1elR+Xv3r0r2NvbC5MnTxauXLki7N27V7CwsNDqMemWvP8ax48fFwAI8fHxGuP89ttvBRMTE6GgoEBl3/fffy/8+OOPQnx8vHD9+nVh7dq1gpGRkbB+/fpWf//79+8Xvv76a+HKlStCUlKS8M033wgWFhbCnDlzFG0e5u+/NXwGNcOXU6dOVYotJydH0aYt/ww09XeAPnwGc+fOFZycnIQjR44I169fF2bOnCnY2dmp/Htvq98D9d1/c3wPtAQmZqRWeHi4xrkHtQ0fPlxtm5SUFEEQqv9B+vr6CmZmZoKpqakwatQo4ezZs0rnOHnypNIxgiAI58+fF8aMGSNYW1sL5ubmgq+vr3Dw4EGl49LS0oRnnnlGkEgkgrW1tRAaGqr0SLQgCMLly5eFxx9/XBCLxYKDg4OwdOlSrR6Rbun7F4TqR8yHDBlSZ5x+fn7ClClT1O77/vvvhb59+wqmpqaCubm54O3tLfzwww/13ntruP9Dhw4Jnp6eQseOHQVTU1OhX79+woYNG4TKykqldg39+28Nn4Gm+aLdu3dXtGnLPwOC0LTfAfrwGVRUVAgLFiwQ7OzsBHNzc+HJJ58U4uLiVOJsq98D9d1/c3wPtASRIOhz+VsiIiKi9oPlMoiIiIj0BBMzIiIiIj3BxIyIiIhITzAxIyIiItITTMyIiIiI9AQTMyIiIiI9wcSMiIiISE8wMSMiIiLSE0zMiIjagDNnzqB///4wMjLChAkTWjocImogJmZE1KYEBQVBJBKpvAIDA1s6tCY1f/58eHp6IiUlBd9//73aNiNGjFB8HmKxGE5OThg3bhz27t2r0lbdZzhs2DCNn2/tFxE1XIeWDoCIqLEFBgYiPDxcaZtYLG7Sa1ZUVMDY2LhJr1GX5ORkzJo1C127dq2zXUhICJYvX47KykpkZmZi3759mDRpEoKCgvD1118rtQ0PD1dKaI2NjWFoaIiPP/5Ysc3R0VGlHRE1HHvMiKjNEYvFcHBwUHpZWVkp9otEInz77bd47rnnYGpqip49e2L//v1K54iPj8fTTz+Njh07wt7eHq+88gry8vIU+0eMGIHQ0FDMnz8fNjY2GD16NABg//796NmzJyQSCfz9/bFt2zaIRCLcvXsXJSUlsLCwwJ49e5SudeDAAZiZmaG4uFjt/ZSXl2POnDmws7ODiYkJhg0bhvPnzwMAUlNTIRKJkJ+fjxkzZkAkEmnsMQMAU1NTODg4wNnZGb6+vlizZg22bNmCb775BsePH1dq26lTJ6XP0NraGpaWlkrb1LUjooZjYkZE7dKyZcvw0ksv4fLly3j66acxdepUFBQUAACys7MxfPhweHp64sKFCzh8+DBu376Nl156Sekc27ZtQ4cOHXDmzBls2bIFqampmDhxIiZMmIDY2Fi88cYb+OCDDxTtzczMMGnSJJXevPDwcEycOBHm5uZqY3333Xfx888/Y9u2bYiOjoa7uzsCAgJQUFAAZ2dnZGdnw8LCAhs2bEB2djZefvllnT6LV199FVZWVmqHNImomQlERG3Iq6++KhgaGgpmZmZKr+XLlyvaABA+/PBDxft79+4JIpFIOHTokCAIgrBkyRJhzJgxSue9deuWAEBISEgQBEEQhg8fLnh6eiq1ee+994R+/fopbfvggw8EAMKdO3cEQRCEc+fOCYaGhkJmZqYgCIKQm5srGBkZCadOnVJ7P/fu3ROMjIyEH3/8UbGtoqJC6NKli/DJJ58otllaWgrh4eF1fjbDhw8X5s6dq3bfY489Jjz11FOK9wAEExMTpc9w3759KscBULudiBqGc8yIqM3x9/fHpk2blLZZW1srvR8wYIDiz2ZmZjA3N0dOTg4A4OLFizh58iQ6duyocu7k5GT06tULADBo0CClfQkJCRg8eLDSNh8fH5X3jzzyCLZv345Fixbhhx9+QLdu3fDEE0+ovZfk5GRUVlZi6NChim1GRkbw8fHBtWvX1B7TEIIgqEzc/+yzz/Dkk08q3js6Ojba9YhIPSZmRNTmmJmZwd3dvc42RkZGSu9FIhHkcjkAQC6XY9y4cVizZo3KcbWTEzMzM6V96pIbQRBUzhEcHIwvv/wSixYtQnh4OF577TWNTzPWHK/uvI31BKRMJsONGzdUkkoHB4d6P0cialycY0ZE9ICBAwfi6tWrcHFxgbu7u9LrwWSstj59+igm5de4cOGCSrtp06YhPT0dX3zxBa5evYpXX31V4znd3d1hbGyM06dPK7ZVVlbiwoUL6Nu3bwPuTtW2bdtw584dvPDCC41yPiJqOCZmRNTmlJeXQyqVKr1qP1FZn9mzZ6OgoACTJ09GVFQUbt68iaNHj2LGjBmQyWQaj3vjjTdw/fp1vPfee0hMTMSuXbsUT0jW7t2ysrLC888/j3feeQdjxoyps8SFmZkZ3nzzTbzzzjs4fPgw4uPjERISgtLSUsycOVPre6pRWloKqVSKjIwMnDt3Du+99x5mzZqFN998E/7+/jqfj4gaFxMzImpzDh8+DEdHR6XXsGHDtD6+S5cuOHPmDGQyGQICAtCvXz/MnTsXlpaWMDDQ/LXp6uqKPXv2YO/evRgwYAA2bdqkeCrzwTpqM2fOREVFBWbMmFFvPB9//DFeeOEFvPLKKxg4cCCSkpJw5MgRpRIg2vrmm2/g6OgINzc3PPfcc4iPj8d///tffPXVVzqfi4gan0hQNwGCiIgaxcqVK7F582bcunVLafuPP/6IuXPnIisrq0UL0xKRfuHkfyKiRvTVV19h8ODB6Ny5M86cOYO1a9ciNDRUsb+0tBQpKSlYvXo13njjDSZlRKSEQ5lERI3oxo0bePbZZ+Hh4YEVK1ZgwYIFWLp0qWL/J598Ak9PT9jb22Px4sUtFygR6SUOZRIRERHpCfaYEREREekJJmZEREREeoKJGREREZGeYGJGREREpCeYmBERERHpCSZmRERERHqCiRkRERGRnmBiRkRERKQn/h/Erey0KMMzLAAAAABJRU5ErkJggg==","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","plt.scatter(training_systems[\"energies\"], predict[\"energies\"])\n","\n","x_range = np.linspace(plt.xlim()[0], plt.xlim()[1])\n","\n","plt.plot(x_range, x_range, \"r--\", linewidth = 0.25)\n","plt.xlabel(\"Energy of DFT\")\n","plt.ylabel(\"Energy predicted by deep potential\")\n","plt.plot()"]},{"cell_type":"markdown","id":"fffaad23-53a6-47dd-8d91-9beb68d1212b","metadata":{},"source":["### 6 Run MD with LAMMPS\n","\n","The model can drive molecular dynamics in LAMMPS. \n"]},{"cell_type":"code","execution_count":18,"id":"d0ceac75-9753-4ae8-b954-c2cc6d005e46","metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["DeePMD-kit_Tutorial\n","\u001b[01;34m.\u001b[0m\n","├── \u001b[01;32mch4.dump\u001b[0m\n","├── \u001b[01;32mconf.lmp\u001b[0m\n","├── \u001b[01;32mgraph.pb\u001b[0m\n","└── \u001b[01;32min.lammps\u001b[0m\n","\n","0 directories, 4 files\n"]}],"source":["! ls\n","! cd ./DeePMD-kit_Tutorial/02.lmp && cp ../01.train.finished/graph.pb ./ && tree -L 1"]},{"cell_type":"markdown","id":"c794572f-7e9c-42f7-b78a-4d82bd3f3118","metadata":{},"source":["Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the lammps input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n","```\n","pair_style deepmd graph.pb\n","pair_coeff * *\n","```\n","where the pair style deepmd is invoked and the model file `graph.pb` is provided, which means the atomic interaction will be computed by the DP model that is stored in the file `graph.pb`. \n","\n","In an environment with a compatibable version of LAMMPS, the deep potential molecular dynamics can be performed via \n","\n","```bash\n","lmp -i input.lammps\n","```"]},{"cell_type":"code","execution_count":19,"id":"f4501e9c-541c-431d-8847-d0d9eecfb0e0","metadata":{"scrolled":true},"outputs":[{"name":"stdout","output_type":"stream","text":["LAMMPS (2 Aug 2023 - Update 1)\n","OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)\n"," using 1 OpenMP thread(s) per MPI task\n","Loaded 1 plugins from /root/miniconda3/envs/deepmd/lib/deepmd_lmp\n","Reading data file ...\n"," triclinic box = (0 0 0) to (10.114259 10.263124 10.216793) with tilt (0.036749877 0.13833062 -0.056322169)\n"," 1 by 1 by 1 MPI processor grid\n"," reading atoms ...\n"," 5 atoms\n"," read_data CPU = 0.011 seconds\n","DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n","Summary of lammps deepmd module ...\n"," >>> Info of deepmd-kit:\n"," installed to: /root/miniconda3/envs/deepmd\n"," source: v2.2.7\n"," source branch: HEAD\n"," source commit: 839f4fe7\n"," source commit at: 2023-10-27 21:10:24 +0800\n"," surpport model ver.:1.1 \n"," build variant: cpu\n"," build with tf inc: /root/miniconda3/envs/deepmd/include;/root/miniconda3/envs/deepmd/include\n"," build with tf lib: /root/miniconda3/envs/deepmd/lib/libtensorflow_cc.so\n"," set tf intra_op_parallelism_threads: 0\n"," set tf inter_op_parallelism_threads: 0\n"," >>> Info of lammps module:\n"," use deepmd-kit at: /root/miniconda3/envs/deepmdDeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n","2024-03-19 19:42:31.143521: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n","To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n","2024-03-19 19:42:31.150107: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n","2024-03-19 19:42:31.217323: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n","INVALID_ARGUMENT: Tensor spin_attr/ntypes_spin:0, specified in either feed_devices or fetch_devices was not found in the Graph\n"," >>> Info of model(s):\n"," using 1 model(s): graph.pb \n"," rcut in model: 6\n"," ntypes in model: 2\n","\n","CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n","\n","Your simulation uses code contributions which should be cited:\n","- USER-DEEPMD package:\n","The log file lists these citations in BibTeX format.\n","\n","CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n","\n","Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule\n","Neighbor list info ...\n"," update: every = 10 steps, delay = 0 steps, check = no\n"," max neighbors/atom: 2000, page size: 100000\n"," master list distance cutoff = 7\n"," ghost atom cutoff = 7\n"," binsize = 3.5, bins = 3 3 3\n"," 1 neighbor lists, perpetual/occasional/extra = 1 0 0\n"," (1) pair deepmd, perpetual\n"," attributes: full, newton on\n"," pair build: full/bin/atomonly\n"," stencil: full/bin/3d\n"," bin: standard\n","Setting up Verlet run ...\n"," Unit style : metal\n"," Current step : 0\n"," Time step : 0.001\n","Per MPI rank memory allocation (min/avg/max) = 2.559 | 2.559 | 2.559 Mbytes\n"," Step PotEng KinEng TotEng Temp Press Volume \n"," 0 -219.77406 0.025852029 -219.74821 50 -779.25188 1060.5429 \n"," 100 -219.7691 0.020797437 -219.7483 40.223994 -637.14305 1060.5429 \n"," 200 -219.77444 0.024939285 -219.7495 48.234676 -320.40098 1060.5429 \n"," 300 -219.78439 0.033072979 -219.75132 63.965925 43.026442 1060.5429 \n"," 400 -219.78739 0.034550668 -219.75284 66.823899 351.67696 1060.5429 \n"," 500 -219.78236 0.028176993 -219.75419 54.496675 666.75737 1060.5429 \n"," 600 -219.78253 0.025728877 -219.7568 49.761815 711.163 1060.5429 \n"," 700 -219.78894 0.028382389 -219.76055 54.893929 479.13643 1060.5429 \n"," 800 -219.78903 0.024859643 -219.76417 48.080642 83.077656 1060.5429 \n"," 900 -219.78291 0.015448216 -219.76746 29.878151 -300.47299 1060.5429 \n"," 1000 -219.78076 0.009958727 -219.7708 19.261016 -547.51181 1060.5429 \n"," 1100 -219.78482 0.010708236 -219.77412 20.710629 -528.61764 1060.5429 \n"," 1200 -219.79088 0.014010222 -219.77687 27.096949 -271.00462 1060.5429 \n"," 1300 -219.79342 0.014851244 -219.77856 28.723555 113.17225 1060.5429 \n"," 1400 -219.79258 0.013154759 -219.77943 25.442411 429.376 1060.5429 \n"," 1500 -219.79351 0.013439034 -219.78007 25.992223 502.07008 1060.5429 \n"," 1600 -219.79556 0.015244258 -219.78032 29.483679 283.58943 1060.5429 \n"," 1700 -219.79243 0.012780435 -219.77965 24.718437 -118.65863 1060.5429 \n"," 1800 -219.78753 0.0093475149 -219.77818 18.078881 -440.59299 1060.5429 \n"," 1900 -219.78644 0.010485894 -219.77595 20.280601 -548.35192 1060.5429 \n"," 2000 -219.78657 0.014291536 -219.77228 27.641033 -379.53425 1060.5429 \n"," 2100 -219.78582 0.019271324 -219.76655 37.272363 3.8622352 1060.5429 \n"," 2200 -219.78342 0.023480599 -219.75994 45.413455 421.70988 1060.5429 \n"," 2300 -219.7843 0.029382788 -219.75492 56.828785 667.59953 1060.5429 \n"," 2400 -219.78777 0.035686462 -219.75209 69.020621 708.56999 1060.5429 \n"," 2500 -219.78484 0.034331665 -219.75051 66.400331 560.05263 1060.5429 \n"," 2600 -219.781 0.031551297 -219.74945 61.022863 272.92453 1060.5429 \n"," 2700 -219.77767 0.028694937 -219.74898 55.498424 -150.97111 1060.5429 \n"," 2800 -219.77576 0.026724406 -219.74903 51.68725 -531.59493 1060.5429 \n"," 2900 -219.77353 0.02427308 -219.74926 46.946179 -733.24223 1060.5429 \n"," 3000 -219.77341 0.023395232 -219.75001 45.248349 -706.66882 1060.5429 \n"," 3100 -219.77969 0.028192211 -219.7515 54.526108 -543.66237 1060.5429 \n"," 3200 -219.78698 0.033417316 -219.75356 64.631901 -242.21772 1060.5429 \n"," 3300 -219.79019 0.034565479 -219.75562 66.852545 120.70082 1060.5429 \n"," 3400 -219.78417 0.026911374 -219.75726 52.048862 557.3674 1060.5429 \n"," 3500 -219.77449 0.01580688 -219.75868 30.571837 766.81564 1060.5429 \n"," 3600 -219.77669 0.015991276 -219.7607 30.928474 683.18009 1060.5429 \n"," 3700 -219.78572 0.022618548 -219.7631 43.746176 290.23355 1060.5429 \n"," 3800 -219.79279 0.027795739 -219.76499 53.759299 -181.24253 1060.5429 \n"," 3900 -219.78826 0.022283131 -219.76598 43.097451 -515.8167 1060.5429 \n"," 4000 -219.78236 0.015546589 -219.76681 30.068411 -608.47483 1060.5429 \n"," 4100 -219.7863 0.018324324 -219.76797 35.440785 -500.82916 1060.5429 \n"," 4200 -219.79138 0.022304319 -219.76908 43.138431 -200.46212 1060.5429 \n"," 4300 -219.78855 0.019344221 -219.7692 37.413352 235.01595 1060.5429 \n"," 4400 -219.78187 0.013421854 -219.76845 25.958995 569.04151 1060.5429 \n"," 4500 -219.77866 0.011098531 -219.76756 21.465493 679.98587 1060.5429 \n"," 4600 -219.78476 0.018276314 -219.76649 35.347929 462.8788 1060.5429 \n"," 4700 -219.79061 0.026535396 -219.76407 51.321689 -44.12474 1060.5429 \n"," 4800 -219.78698 0.027259367 -219.75972 52.721911 -476.42292 1060.5429 \n"," 4900 -219.77955 0.025502005 -219.75405 49.323023 -698.38931 1060.5429 \n"," 5000 -219.77457 0.026622642 -219.74795 51.49043 -707.85111 1060.5429 \n","Loop time of 44.1004 on 1 procs for 5000 steps with 5 atoms\n","\n","Performance: 9.796 ns/day, 2.450 hours/ns, 113.378 timesteps/s, 566.888 atom-step/s\n","94.5% CPU use with 1 MPI tasks x 1 OpenMP threads\n","\n","MPI task timing breakdown:\n","Section | min time | avg time | max time |%varavg| %total\n","---------------------------------------------------------------\n","Pair | 43.95 | 43.95 | 43.95 | 0.0 | 99.66\n","Neigh | 0.008028 | 0.008028 | 0.008028 | 0.0 | 0.02\n","Comm | 0.0354 | 0.0354 | 0.0354 | 0.0 | 0.08\n","Output | 0.0056147 | 0.0056147 | 0.0056147 | 0.0 | 0.01\n","Modify | 0.085761 | 0.085761 | 0.085761 | 0.0 | 0.19\n","Other | | 0.0159 | | | 0.04\n","\n","Nlocal: 5 ave 5 max 5 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","Nghost: 130 ave 130 max 130 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","Neighs: 0 ave 0 max 0 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","FullNghs: 20 ave 20 max 20 min\n","Histogram: 1 0 0 0 0 0 0 0 0 0\n","\n","Total # of neighbors = 20\n","Ave neighs/atom = 4\n","Neighbor list builds = 500\n","Dangerous builds not checked\n","Total wall time: 0:00:45\n"]}],"source":["! cd ./DeePMD-kit_Tutorial/02.lmp && lmp -i in.lammps"]},{"cell_type":"markdown","id":"3c1f883a-a768-4de1-8681-effd90643fee","metadata":{},"source":["## References \n","\n","1. https://docs.deepmodeling.com/projects/deepmd/en/master/index.html\n","2. https://github.com/deepmodeling/deepmd-kit "]},{"cell_type":"markdown","id":"98a7aff7-daaf-494f-beb9-aa99688ed0a2","metadata":{},"source":["\"Open"]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.13"}},"nbformat":4,"nbformat_minor":5} +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", + "metadata": {}, + "source": [ + "# DeePMD-kit Quick Start Tutorial" + ] + }, + { + "cell_type": "markdown", + "id": "7a41db5f", + "metadata": {}, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "85b62e3d-dfae-402f-96a5-5672367d2d17", + "metadata": {}, + "source": [ + "
\n", + "

\n", + " ©️ Copyright 2024 @ Authors
\n", + " 📖 Getting Started Guide
\n", + " Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
\n", + " This document can be executed directly on the Bohrium Notebook. To begin, click the Connect button located at the top of the interface. We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "dbab8963", + "metadata": {}, + "source": [ + "

This is a quick start guide for \"Deep Potential\" molecular dynamics using DeePMD-kit, through which you can quickly understand the paradigm cycle that DeePMD-kit operates in and apply it to your projects.

\n", + "\n", + "

Deep Potential is the convergence of machine learning and physical principles, presenting a new computational paradigm as shown in the figure below.

\n", + "
\n", + " \"Fig2\"\n", + "

Figure | A new computational paradigm, composed of Molecular Modeling, Machine Learning, and High-Performance Computing (HPC).

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "f4416190-479c-4b2f-9e08-33690bc4941d", + "metadata": {}, + "source": [ + "## Task\n", + "\n", + "> **Mastering the paradigm cycle of using DeePMD-kit to establish deep potential molecular dynamics models, and following a complete case to learn how to apply it to molecular dynamics tasks.**\n", + "\n", + "By the end of this tutorial, you will be able to:\n", + "\n", + "* Prepare the formataive dataset and running scripts for training with DeePMD-kit;\n", + "* Train, freeze, and test DeePMD-kit models;\n", + "* Use DeePMD-kit in Lammps for calculations;\n", + "\n", + "Work through this tutorial. It will take you 20 minutes, max!" + ] + }, + { + "cell_type": "markdown", + "id": "8e6587cb-ba6e-42ba-a139-0595fc7f79d7", + "metadata": {}, + "source": [ + "## Table of contents\n", + "\n", + "
\"deepmd-kit\"
\n", + "\n", + "* [Background](#background)\n", + "* [Practice](#practice)\n", + " * [1. Data preparation](#dataprepare)\n", + " * [2. Prepare input script](#inputscript)\n", + " * [3. Train a model](#train)\n", + " * [4. Freeze a model](#freeze)\n", + " * [5. Test a model](#test)\n", + " * [6. Run MD with LAMMPS](#lammpsmd)\n", + "* [References](#references)\n" + ] + }, + { + "cell_type": "markdown", + "id": "42afcb0e", + "metadata": {}, + "source": [ + "## Background \n", + "\n", + "In this tutorial, we will take the gaseous methane molecule as an example to provide a detailed introduction to the training and application of the Deep Potential (DP) model.\n", + "\n", + "DeePMD-kit is a software tool that employs neural networks to fit potential energy models based on first-principles data for molecular dynamics simulations. Without manual intervention, it can end-to-end transform the data provided by users into a deep potential model in a matter of hours. This model can seamlessly integrate with common molecular dynamics simulation software (like LAMMPS, OpenMM, and GROMACS).\n", + "\n", + "DeePMD-kit significantly elevates the limits of molecular dynamics through high-performance computing and machine learning, achieving system scales of up to hundreds of millions of atoms while still maintaining the high accuracy of \"ab initio\" calculations. The simulation time scale is improved by at least 1000 times compared to traditional methods. Its achievements earned the 2020 ACM Gordon Bell Prize, one of the highest honors in the field of high-performance computing, and it has been used by over a thousand research groups in physics, chemistry, materials science, biology, and other fields globally.\n", + "\n", + "\"Fig1\"\n", + "\n", + "For more detailed usage, you can refer to the [DeePMD-kit’s documentation](https://docs.deepmodeling.org/projects/deepmd/en/master/index.html) as a comprehensive reference.\n", + "\n", + "In this case, the Deep Potential (DP) model was generated using the **DeePMD-kit package (v2.2.1)**.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "275d9d23", + "metadata": {}, + "source": [ + "## Practice " + ] + }, + { + "cell_type": "markdown", + "id": "e452966d", + "metadata": {}, + "source": [ + "### 1 Data Preparation \n", + "\n", + "We have prepared the initial data for $CH_4$ required to run DeePMD-kit computations and placed it in the `DeePMD-kit_Tutorial` folder. You can view the corresponding files by clicking on the dataset on the left side:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "34ea0475", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current path is: /personal/bohr/DeePMD-kit-Tutorial-21f1/v1\n" + ] + } + ], + "source": [ + "# For security reasons, we do not have write permission to the dataset folder, so we copy it to the `/data/` directory:\n", + "! cp -nr /bohr/ /personal/\n", + "\n", + "# Here, we define some paths and switch to the working path for ease of subsequent calls:\n", + "import os\n", + "\n", + "bohr_dataset_url = \"/bohr/DeePMD-kit-Tutorial-21f1/v1/\" # The URL can be copied from the dataset section on the left.\n", + "work_path = os.path.join(\n", + " \"/personal\", bohr_dataset_url[1:]\n", + ") # A slice operation is used to remove the leading \"/\" from the path.\n", + "os.chdir(work_path)\n", + "print(f\"Current path is: {os.getcwd()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "a265a0d9", + "metadata": {}, + "source": [ + "Let's take a look at the downloaded DeePMD-kit_Tutorial folder." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2ea12f86", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[01;34mDeePMD-kit_Tutorial\u001b[0m\n", + "├── \u001b[01;34m00.data\u001b[0m\n", + "├── \u001b[01;34m01.train\u001b[0m\n", + "├── \u001b[01;34m01.train.finished\u001b[0m\n", + "├── \u001b[01;34m02.lmp\u001b[0m\n", + "└── \u001b[01;34m02.lmp.finished\u001b[0m\n", + "\n", + "5 directories, 0 files\n" + ] + } + ], + "source": [ + "! tree DeePMD-kit_Tutorial -L 1" + ] + }, + { + "cell_type": "markdown", + "id": "1da4b858", + "metadata": {}, + "source": [ + "There are 3 subfolders under the DeePMD-kit_Tutorial folder: 00.data, 01.train, and 02.lmp.\n", + "\n", + "- The 00.data folder is used to store training and testing data.\n", + "- The 01.train folder contains example scripts for training models using DeePMD-kit.\n", + "- The 01.train.finished folder includes the complete results of the training process.\n", + "- The 02.lmp folder contains example scripts for molecular dynamics simulations using LAMMPS.\n", + "\n", + "Let's first take a look at the DeePMD-kit_Tutorial/00.data folder." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "509f7efe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[01;34mDeePMD-kit_Tutorial/00.data\u001b[0m\n", + "├── \u001b[01;34mabacus_md\u001b[0m\n", + "├── \u001b[01;34mtraining_data\u001b[0m\n", + "└── \u001b[01;34mvalidation_data\u001b[0m\n", + "\n", + "3 directories, 0 files\n" + ] + } + ], + "source": [ + "! tree DeePMD-kit_Tutorial/00.data -L 1" + ] + }, + { + "cell_type": "markdown", + "id": "8373a3a4", + "metadata": {}, + "source": [ + "DeePMD-kit's training data originates from first-principles calculation data, including atomic types, simulation cells, atomic coordinates, atomic forces, system energies, and virials.\n", + "\n", + "
\"image-20230116161737203\"
\n", + "\n", + "In the *00.data* folder, there is only the *abacus_md* folder, which contains data obtained through *ab initio* Molecular Dynamics (AIMD) simulations using ABACUS. In this tutorial, we have already completed the *ab initio* molecular dynamics calculations for the methane molecule for you.\n", + "\n", + "Detailed information about ABACUS can be found in its [documentation](https://abacus.deepmodeling.com/en/latest/). \n", + "\n", + "DeePMD-kit uses a compressed data format. All training data should first be converted into this format before they can be used in DeePMD-kit. This data format is explained in detail in the DeePMD-kit manual, which can be found on [DeePMD-kit's Github](http://www.github.com/deepmodeling/deepmd-kit).\n", + "\n", + "We provide a convenient tool **dpdata**, which can convert data generated by VASP, CP2K, Gaussian, Quantum Espresso, ABACUS, and LAMMPS into DeePMD-kit's compressed format.\n", + "\n", + "A snapshot of a molecular system that contains computational data information is called a frame. A data system comprises many frames sharing the same number of atoms and atom types.\n", + "\n", + "For example, a molecular dynamics trajectory can be converted into a data system, where each timestep corresponds to one frame in the system.\n" + ] + }, + { + "cell_type": "markdown", + "id": "e62f0115", + "metadata": {}, + "source": [ + "Next, we use the dpdata tool to randomly split the data in abacus_md into training and validation data.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b5fbc838", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# the data contains 201 frames\n", + "# the training data contains 161 frames\n", + "# the validation data contains 40 frames\n" + ] + } + ], + "source": [ + "import dpdata\n", + "import numpy as np\n", + "\n", + "# load data of abacus/md format\n", + "data = dpdata.LabeledSystem(\"DeePMD-kit_Tutorial/00.data/abacus_md\", fmt=\"abacus/md\")\n", + "print(\"# the data contains %d frames\" % len(data))\n", + "\n", + "# random choose 40 index for validation_data\n", + "index_validation = np.random.choice(201, size=40, replace=False)\n", + "\n", + "# other indexes are training_data\n", + "index_training = list(set(range(201)) - set(index_validation))\n", + "data_training = data.sub_system(index_training)\n", + "data_validation = data.sub_system(index_validation)\n", + "\n", + "# all training data put into directory:\"training_data\"\n", + "data_training.to_deepmd_npy(\"DeePMD-kit_Tutorial/00.data/training_data\")\n", + "\n", + "# all validation data put into directory:\"validation_data\"\n", + "data_validation.to_deepmd_npy(\"DeePMD-kit_Tutorial/00.data/validation_data\")\n", + "\n", + "print(\"# the training data contains %d frames\" % len(data_training))\n", + "print(\"# the validation data contains %d frames\" % len(data_validation))" + ] + }, + { + "cell_type": "markdown", + "id": "98719865-ab3d-4440-8c14-78a1c253c3a6", + "metadata": {}, + "source": [ + "As you can see, 161 frames are picked as training data, and the other 40 frames are validation dat.\n", + "\n", + "Let's take another look at the 00.data folder, where new files have been generated, which are the training and validation sets required for Deep Potential training with DeePMD-kit.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e5befaf5-c464-4e8f-8544-a2634f5fd1d2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[01;34mDeePMD-kit_Tutorial/00.data/\u001b[0m\n", + "├── \u001b[01;34mabacus_md\u001b[0m\n", + "├── \u001b[01;34mtraining_data\u001b[0m\n", + "└── \u001b[01;34mvalidation_data\u001b[0m\n", + "\n", + "3 directories, 0 files\n" + ] + } + ], + "source": [ + "! tree DeePMD-kit_Tutorial/00.data/ -L 1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "70cc9898", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[01;34mDeePMD-kit_Tutorial/00.data/training_data\u001b[0m\n", + "├── \u001b[01;34mset.000\u001b[0m\n", + "├── \u001b[01;32mtype.raw\u001b[0m\n", + "└── \u001b[01;32mtype_map.raw\u001b[0m\n", + "\n", + "1 directory, 2 files\n" + ] + } + ], + "source": [ + "! tree DeePMD-kit_Tutorial/00.data/training_data -L 1" + ] + }, + { + "cell_type": "markdown", + "id": "542b24fd", + "metadata": {}, + "source": [ + "The functions of these files are as follows:\n", + "\n", + "- set.000: It is a directory that contains compressed format data (NumPy compressed arrays).\n", + "- type.raw: It is a file that contains the types of atoms (represented as integers).\n", + "- type_map.raw: It is a file that contains the names of the types of atoms.\n", + "\n", + "Let's take a look at these files." + ] + }, + { + "cell_type": "markdown", + "id": "99770e51-4d9e-44db-bb93-1c7061c8862c", + "metadata": {}, + "source": [ + "Let's have a look at `type.raw`:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a686585c-3e5b-4a5c-9cc7-4db7759b74b2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "0\n", + "0\n", + "0\n", + "1\n" + ] + } + ], + "source": [ + "! cat DeePMD-kit_Tutorial/00.data/training_data/type.raw " + ] + }, + { + "cell_type": "markdown", + "id": "b5357cc5-9cdd-4c52-a611-a84cee739fb0", + "metadata": {}, + "source": [ + "This tells us there are 5 atoms in this example, 4 atoms represented by type \"0\", and 1 atom represented by type \"1\".\n", + "Sometimes one needs to map the integer types to atom name. The mapping can be given by the file `type_map.raw`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6216f02d-3a21-481f-99da-3f23b438a7c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "H\n", + "C\n" + ] + } + ], + "source": [ + "! cat DeePMD-kit_Tutorial/00.data/training_data/type_map.raw" + ] + }, + { + "cell_type": "markdown", + "id": "1196aa0f-22c5-4b96-8640-c82068fa7828", + "metadata": {}, + "source": [ + "This tells us the type \"0\" is named by \"H\", and the type \"1\" is named by \"C\".\n", + "\n", + "More detailed documentation on using dpdata for data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)" + ] + }, + { + "cell_type": "markdown", + "id": "ac6c969b-10cb-49f0-9b84-7dc9ffa38c61", + "metadata": {}, + "source": [ + "### 2 Prepare input script \n", + "Once the data preparation is done, we can go on with training. Now go to the training directory.\n", + "DeePMD-kit requires a `json` format file to specify parameters for training. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d371a240", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"_comment\": \" model parameters\",\n", + " \"model\": {\n", + "\t\"type_map\":\t[\"H\", \"C\"],\n", + "\t\"descriptor\" :{\n", + "\t \"type\":\t\t\"se_e2_a\",\n", + "\t \"sel\":\t\t\"auto\",\n", + "\t \"rcut_smth\":\t0.50,\n", + "\t \"rcut\":\t\t6.00,\n", + "\t \"neuron\":\t\t[25, 50, 100],\n", + "\t \"resnet_dt\":\tfalse,\n", + "\t \"axis_neuron\":\t16,\n", + "\t \"seed\":\t\t1,\n", + "\t \"_comment\":\t\t\" that's all\"\n", + "\t},\n", + "\t\"fitting_net\" : {\n", + "\t \"neuron\":\t\t[240, 240, 240],\n", + "\t \"resnet_dt\":\ttrue,\n", + "\t \"seed\":\t\t1,\n", + "\t \"_comment\":\t\t\" that's all\"\n", + "\t},\n", + "\t\"_comment\":\t\" that's all\"\n", + " },\n", + "\n", + " \"learning_rate\" :{\n", + "\t\"type\":\t\t\"exp\",\n", + "\t\"decay_steps\":\t50,\n", + "\t\"start_lr\":\t0.001,\t\n", + "\t\"stop_lr\":\t3.51e-8,\n", + "\t\"_comment\":\t\"that's all\"\n", + " },\n", + "\n", + " \"loss\" :{\n", + "\t\"type\":\t\t\"ener\",\n", + "\t\"start_pref_e\":\t0.02,\n", + "\t\"limit_pref_e\":\t1,\n", + "\t\"start_pref_f\":\t1000,\n", + "\t\"limit_pref_f\":\t1,\n", + "\t\"start_pref_v\":\t0,\n", + "\t\"limit_pref_v\":\t0,\n", + "\t\"_comment\":\t\" that's all\"\n", + " },\n", + "\n", + " \"training\" : {\n", + "\t\"training_data\": {\n", + "\t \"systems\": [\"../00.data/training_data\"],\n", + "\t \"batch_size\": \"auto\",\n", + "\t \"_comment\":\t \"that's all\"\n", + "\t},\n", + "\t\"validation_data\":{\n", + "\t \"systems\":\t [\"../00.data/validation_data\"],\n", + "\t \"batch_size\": \"auto\",\n", + "\t \"numb_btch\": 1,\n", + "\t \"_comment\":\t \"that's all\"\n", + "\t},\n", + "\t\"numb_steps\":\t10000,\n", + "\t\"seed\":\t\t10,\n", + "\t\"disp_file\":\t\"lcurve.out\",\n", + "\t\"disp_freq\":\t200,\n", + "\t\"save_freq\":\t1000,\n", + "\t\"_comment\":\t\"that's all\"\n", + " }, \n", + "\n", + " \"_comment\":\t\t\"that's all\"\n", + "}\n", + "\n" + ] + } + ], + "source": [ + "! cd DeePMD-kit_Tutorial/01.train/ && cat input.json" + ] + }, + { + "cell_type": "markdown", + "id": "0a4c680a-abcf-40b9-b00e-fa4615aa91b9", + "metadata": {}, + "source": [ + "DeePMD-kit requires a `json` format file to specify parameters for training. \n", + "\n", + "In the model section, the parameters of embedding and fitting networks are specified.\n", + "```json\n", + "\"model\":{\n", + " \"type_map\": [\"H\", \"C\"], \n", + " \"descriptor\":{\n", + " \"type\": \"se_e2_a\", \n", + " \"rcut\": 6.00, \n", + " \"rcut_smth\": 0.50, \n", + " \"sel\": \"auto\", \n", + " \"neuron\": [25, 50, 100], \n", + " \"resnet_dt\": false,\n", + " \"axis_neuron\": 16, \n", + " \"seed\": 1,\n", + " \"_comment\": \"that's all\"\n", + " },\n", + " \"fitting_net\":{\n", + " \"neuron\": [240, 240, 240], \n", + " \"resnet_dt\": true,\n", + " \"seed\": 1,\n", + " \"_comment\": \"that's all\"\n", + " },\n", + " \"_comment\": \"that's all\"'\n", + "},\n", + "```\n", + "The explanation for some of the parameters is as follows:\n", + "\n", + "| Parameter | Expiation |\n", + "| ------------------------ | ------------------------------------------------------------ |\n", + "| type_map | *the* *name* *of* *each* *type* *of* *atom* |\n", + "| descriptor > type | *the* *type* *of* *descriptor* |\n", + "| descriptor > rcut | *cut-off* *radius* |\n", + "| descriptor > rcut_smth | *where* *the* *smoothing* *starts* |\n", + "| descriptor > sel | *the* *maximum* *number* *of* *type* *i* *atoms* *in* *the* *cut-off* *radius* |\n", + "| descriptor > neuron | *size* *of* *the* *embedding* *neural* *network* |\n", + "| descriptor > axis_neuron | *the* *size* *of* *the* *submatrix* *of* *G* *(embedding* *matrix)* |\n", + "| fitting_net > neuron | *size* *of* *the* *fitting* *neural* *network* |\n", + "\n", + "The `se_e2_a` descriptor is used to train the DP model. The item neurons set the size of the descriptors and fitting network to [25, 50, 100] and [240, 240, 240], respectively. The components in local environment to smoothly go to zero from 0.5 to 6 Å.\n", + "\n", + "The following are the parameters that specify the learning rate and loss function.\n", + "```json\n", + " \"learning_rate\" :{\n", + " \"type\": \"exp\",\n", + " \"decay_steps\": 50,\n", + " \"start_lr\": 0.001, \n", + " \"stop_lr\": 3.51e-8,\n", + " \"_comment\": \"that's all\"\n", + " },\n", + " \"loss\" :{\n", + " \"type\": \"ener\",\n", + " \"start_pref_e\": 0.02,\n", + " \"limit_pref_e\": 1,\n", + " \"start_pref_f\": 1000,\n", + " \"limit_pref_f\": 1,\n", + " \"start_pref_v\": 0,\n", + " \"limit_pref_v\": 0,\n", + " \"_comment\": \"that's all\"\n", + " },\n", + "```\n", + "In the loss function, `pref_e` increases from 0.02 to 1, and `pref_f` decreases from 1000 to 1 progressively, which means that the force term dominates at the beginning, while energy and virial terms become important at the end. This strategy is very effective and reduces the total training time. `pref_v` is set to 0 , indicating that no virial data are included in the training process. The starting learning rate, stop learning rate, and decay steps are set to 0.001, 3.51e-8, and 50, respectively. The model is trained for 10000 steps.\n", + "\n", + "The training parameters are given in the following\n", + "```json\n", + " \"training\" : {\n", + " \"training_data\": {\n", + " \"systems\": [\"../00.data/training_data\"], \n", + " \"batch_size\": \"auto\", \n", + " \"_comment\": \"that's all\"\n", + " },\n", + " \"validation_data\":{\n", + " \"systems\": [\"../00.data/validation_data/\"],\n", + " \"batch_size\": \"auto\", \n", + " \"numb_btch\": 1,\n", + " \"_comment\": \"that's all\"\n", + " },\n", + " \"numb_steps\": 10000, \n", + " \"seed\": 10,\n", + " \"disp_file\": \"lcurve.out\",\n", + " \"disp_freq\": 200,\n", + " \"save_freq\": 10000,\n", + " },\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "7b0edb0f-df47-4e6c-8c37-5f32c4bd6b39", + "metadata": {}, + "source": [ + "More detailed docs about Data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)" + ] + }, + { + "cell_type": "markdown", + "id": "bafe20b8-3bde-403c-ae42-b68ba5f29703", + "metadata": {}, + "source": [ + "### 3 Train a model \n", + "After the training script is prepared, we can start the training with DeePMD-kit by simply running" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e04a05a3-ccac-474b-bc24-58fbf20b9ffe", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "DEEPMD INFO Calculate neighbor statistics... (add --skip-neighbor-stat to skip this step)\n", + "DEEPMD INFO training data with min nbor dist: 1.0495341121569708\n", + "DEEPMD INFO training data with max nbor size: [4 1]\n", + "DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n", + "DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n", + "DEEPMD INFO | | | | ___ ___ | |__) || \\ / || | | | ______ | | __ _ | |_ \n", + "DEEPMD INFO | | | | / _ \\ / _ \\| ___/ | |\\/| || | | ||______|| |/ /| || __|\n", + "DEEPMD INFO | |__| || __/| __/| | | | | || |__| | | < | || |_ \n", + "DEEPMD INFO |_____/ \\___| \\___||_| |_| |_||_____/ |_|\\_\\|_| \\__|\n", + "DEEPMD INFO Please read and cite:\n", + "DEEPMD INFO Wang, Zhang, Han and E, Comput.Phys.Comm. 228, 178-184 (2018)\n", + "DEEPMD INFO Zeng et al, J. Chem. Phys., 159, 054801 (2023)\n", + "DEEPMD INFO See https://deepmd.rtfd.io/credits/ for details.\n", + "DEEPMD INFO installed to: /root/miniconda3/envs/deepmd\n", + "DEEPMD INFO source : v2.2.7\n", + "DEEPMD INFO source brach: HEAD\n", + "DEEPMD INFO source commit: 839f4fe7\n", + "DEEPMD INFO source commit at: 2023-10-27 21:10:24 +0800\n", + "DEEPMD INFO build float prec: double\n", + "DEEPMD INFO build variant: cpu\n", + "DEEPMD INFO build with tf inc: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/include;/root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/../../../../include\n", + "DEEPMD INFO build with tf lib: \n", + "DEEPMD INFO ---Summary of the training---------------------------------------\n", + "DEEPMD INFO running on: bohrium-21213-1088639\n", + "DEEPMD INFO computing device: cpu:0\n", + "DEEPMD INFO Count of visible GPU: 0\n", + "DEEPMD INFO num_intra_threads: 0\n", + "DEEPMD INFO num_inter_threads: 0\n", + "DEEPMD INFO -----------------------------------------------------------------\n", + "DEEPMD INFO ---Summary of DataSystem: training -----------------------------------------------\n", + "DEEPMD INFO found 1 system(s):\n", + "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", + "DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n", + "DEEPMD INFO --------------------------------------------------------------------------------------\n", + "DEEPMD INFO ---Summary of DataSystem: validation -----------------------------------------------\n", + "DEEPMD INFO found 1 system(s):\n", + "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", + "DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n", + "DEEPMD INFO --------------------------------------------------------------------------------------\n", + "DEEPMD INFO training without frame parameter\n", + "DEEPMD INFO data stating... (this step may take long time)\n", + "DEEPMD INFO built lr\n", + "DEEPMD INFO built network\n", + "DEEPMD INFO built training\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "DEEPMD INFO initialize model from scratch\n", + "DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "tf.py_func is deprecated in TF V2. Instead, there are two\n", + " options available in V2.\n", + " - tf.py_function takes a python function which manipulates tf eager\n", + " tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n", + " an ndarray (just call tensor.numpy()) but having access to eager tensors\n", + " means `tf.py_function`s can use accelerators such as GPUs as well as\n", + " being differentiable using a gradient tape.\n", + " - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n", + " (it is not differentiable, and manipulates numpy arrays). It drops the\n", + " stateful argument making all functions stateful.\n", + " \n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/train/trainer.py:1197: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "tf.py_func is deprecated in TF V2. Instead, there are two\n", + " options available in V2.\n", + " - tf.py_function takes a python function which manipulates tf eager\n", + " tensors instead of numpy arrays. It's easy to convert a tf eager tensor to\n", + " an ndarray (just call tensor.numpy()) but having access to eager tensors\n", + " means `tf.py_function`s can use accelerators such as GPUs as well as\n", + " being differentiable using a gradient tape.\n", + " - tf.numpy_function maintains the semantics of the deprecated tf.py_func\n", + " (it is not differentiable, and manipulates numpy arrays). It drops the\n", + " stateful argument making all functions stateful.\n", + " \n", + "DEEPMD INFO batch 200 training time 17.40 s, testing time 0.05 s, total wall time 18.58 s\n", + "DEEPMD INFO batch 400 training time 15.71 s, testing time 0.05 s, total wall time 15.89 s\n", + "DEEPMD INFO batch 600 training time 13.96 s, testing time 0.05 s, total wall time 14.12 s\n", + "DEEPMD INFO batch 800 training time 15.35 s, testing time 0.05 s, total wall time 15.52 s\n", + "DEEPMD INFO batch 1000 training time 14.23 s, testing time 0.04 s, total wall time 14.39 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 1200 training time 15.23 s, testing time 0.04 s, total wall time 16.49 s\n", + "DEEPMD INFO batch 1400 training time 12.84 s, testing time 0.04 s, total wall time 12.99 s\n", + "DEEPMD INFO batch 1600 training time 14.92 s, testing time 0.08 s, total wall time 15.12 s\n", + "DEEPMD INFO batch 1800 training time 15.05 s, testing time 0.05 s, total wall time 15.36 s\n", + "DEEPMD INFO batch 2000 training time 18.45 s, testing time 0.05 s, total wall time 18.63 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 2200 training time 16.82 s, testing time 0.05 s, total wall time 17.54 s\n", + "DEEPMD INFO batch 2400 training time 15.95 s, testing time 0.15 s, total wall time 16.21 s\n", + "DEEPMD INFO batch 2600 training time 16.61 s, testing time 0.04 s, total wall time 16.77 s\n", + "DEEPMD INFO batch 2800 training time 16.35 s, testing time 0.05 s, total wall time 16.52 s\n", + "DEEPMD INFO batch 3000 training time 15.06 s, testing time 0.05 s, total wall time 15.23 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 3200 training time 16.39 s, testing time 0.05 s, total wall time 16.97 s\n", + "DEEPMD INFO batch 3400 training time 16.54 s, testing time 0.09 s, total wall time 16.76 s\n", + "DEEPMD INFO batch 3600 training time 15.44 s, testing time 0.05 s, total wall time 15.65 s\n", + "DEEPMD INFO batch 3800 training time 17.46 s, testing time 0.05 s, total wall time 17.64 s\n", + "DEEPMD INFO batch 4000 training time 16.75 s, testing time 0.06 s, total wall time 16.93 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 4200 training time 15.56 s, testing time 0.05 s, total wall time 16.64 s\n", + "DEEPMD INFO batch 4400 training time 16.32 s, testing time 0.06 s, total wall time 16.49 s\n", + "DEEPMD INFO batch 4600 training time 16.56 s, testing time 0.05 s, total wall time 16.73 s\n", + "DEEPMD INFO batch 4800 training time 15.88 s, testing time 0.05 s, total wall time 16.05 s\n", + "DEEPMD INFO batch 5000 training time 16.26 s, testing time 0.05 s, total wall time 16.43 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 5200 training time 17.87 s, testing time 0.05 s, total wall time 18.63 s\n", + "DEEPMD INFO batch 5400 training time 22.08 s, testing time 0.08 s, total wall time 22.33 s\n", + "DEEPMD INFO batch 5600 training time 15.93 s, testing time 0.09 s, total wall time 16.14 s\n", + "DEEPMD INFO batch 5800 training time 14.56 s, testing time 0.05 s, total wall time 14.73 s\n", + "DEEPMD INFO batch 6000 training time 16.01 s, testing time 0.05 s, total wall time 16.19 s\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use standard file APIs to delete files with this prefix.\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use standard file APIs to delete files with this prefix.\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 6200 training time 14.63 s, testing time 0.05 s, total wall time 15.18 s\n", + "DEEPMD INFO batch 6400 training time 16.34 s, testing time 0.05 s, total wall time 16.55 s\n", + "DEEPMD INFO batch 6600 training time 14.53 s, testing time 0.04 s, total wall time 14.70 s\n", + "DEEPMD INFO batch 6800 training time 16.01 s, testing time 0.04 s, total wall time 16.18 s\n", + "DEEPMD INFO batch 7000 training time 15.53 s, testing time 0.11 s, total wall time 15.77 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 7200 training time 15.02 s, testing time 0.05 s, total wall time 15.75 s\n", + "DEEPMD INFO batch 7400 training time 16.69 s, testing time 0.06 s, total wall time 16.89 s\n", + "DEEPMD INFO batch 7600 training time 14.35 s, testing time 0.05 s, total wall time 14.52 s\n", + "DEEPMD INFO batch 7800 training time 16.44 s, testing time 0.05 s, total wall time 16.63 s\n", + "DEEPMD INFO batch 8000 training time 16.67 s, testing time 0.07 s, total wall time 16.86 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 8200 training time 15.28 s, testing time 0.05 s, total wall time 16.07 s\n", + "DEEPMD INFO batch 8400 training time 16.78 s, testing time 0.05 s, total wall time 16.95 s\n", + "DEEPMD INFO batch 8600 training time 17.12 s, testing time 0.09 s, total wall time 17.36 s\n", + "DEEPMD INFO batch 8800 training time 15.89 s, testing time 0.05 s, total wall time 16.06 s\n", + "DEEPMD INFO batch 9000 training time 16.76 s, testing time 0.05 s, total wall time 16.97 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 9200 training time 16.94 s, testing time 0.05 s, total wall time 17.55 s\n", + "DEEPMD INFO batch 9400 training time 15.52 s, testing time 0.05 s, total wall time 15.70 s\n", + "DEEPMD INFO batch 9600 training time 16.85 s, testing time 0.05 s, total wall time 17.02 s\n", + "DEEPMD INFO batch 9800 training time 17.93 s, testing time 0.05 s, total wall time 18.11 s\n", + "DEEPMD INFO batch 10000 training time 15.91 s, testing time 0.11 s, total wall time 16.16 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO average training time: 0.0803 s/batch (exclude first 200 batches)\n", + "DEEPMD INFO finished training\n", + "DEEPMD INFO wall time: 822.217 s\n" + ] + } + ], + "source": [ + "# ########## Time Warning: 120 secs ##########\n", + "! cd DeePMD-kit_Tutorial/01.train/ && dp train input.json" + ] + }, + { + "cell_type": "markdown", + "id": "c10e0a81-ef33-49ab-ae2d-83fbd35985ac", + "metadata": { + "tags": [] + }, + "source": [ + "On the screen, you will see the information of the data system(s)\n", + "\n", + "```\n", + "DEEPMD INFO -----------------------------------------------------------------\n", + "DEEPMD INFO ---Summary of DataSystem: training ----------------------------------\n", + "DEEPMD INFO found 1 system(s):\n", + "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", + "DEEPMD INFO ../00.data/training_data 5 7 23 1.000 T\n", + "DEEPMD INFO -------------------------------------------------------------------------\n", + "DEEPMD INFO ---Summary of DataSystem: validation ----------------------------------\n", + "DEEPMD INFO found 1 system(s):\n", + "DEEPMD INFO system natoms bch_sz n_bch prob pbc\n", + "DEEPMD INFO ../00.data/validation_data 5 7 5 1.000 T\n", + "DEEPMD INFO -------------------------------------------------------------------------\n", + "```\n", + "\n", + "and the starting and final learning rate of this training\n", + "\n", + "```\n", + "DEEPMD INFO start training at lr 1.00e-03 (== 1.00e-03), decay_step 50, decay_rate 0.950006, final lr will be 3.51e-08\n", + "```\n", + "\n", + "If everything works fine, you will see, on the screen, information printed every 1000 steps, like\n", + "\n", + "```\n", + "DEEPMD INFO batch 200 training time 6.04 s, testing time 0.02 s\n", + "DEEPMD INFO batch 400 training time 4.80 s, testing time 0.02 s\n", + "DEEPMD INFO batch 600 training time 4.80 s, testing time 0.02 s\n", + "DEEPMD INFO batch 800 training time 4.78 s, testing time 0.02 s\n", + "DEEPMD INFO batch 1000 training time 4.77 s, testing time 0.02 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "DEEPMD INFO batch 1200 training time 4.47 s, testing time 0.02 s\n", + "DEEPMD INFO batch 1400 training time 4.49 s, testing time 0.02 s\n", + "DEEPMD INFO batch 1600 training time 4.45 s, testing time 0.02 s\n", + "DEEPMD INFO batch 1800 training time 4.44 s, testing time 0.02 s\n", + "DEEPMD INFO batch 2000 training time 4.46 s, testing time 0.02 s\n", + "DEEPMD INFO saved checkpoint model.ckpt\n", + "```\n", + "\n", + "They present the training and testing time counts. At the end of the 1000th batch, the model is saved in Tensorflow's checkpoint file `model.ckpt`. At the same time, the training and testing errors are presented in file `lcurve.out`. \n", + "\n", + "The file contains 8 columns, form left to right, are the training step, the validation loss, training loss, root mean square (RMS) validation error of energy, RMS training error of energy, RMS validation error of force, RMS training error of force and the learning rate. The RMS error (RMSE) of the energy is normalized by number of atoms in the system. \n", + "```\n", + "head -n 2 lcurve.out\n", + "# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n", + " 0 2.02e+01 1.51e+01 1.37e-01 1.41e-01 6.40e-01 4.79e-01 1.0e-03\n", + "```\n", + "and\n", + "```\n", + "$ tail -n 2 lcurve.out\n", + " 9800 2.45e-02 4.02e-02 3.20e-04 3.88e-04 2.40e-02 3.94e-02 4.3e-08\n", + " 10000 4.60e-02 3.76e-02 8.65e-04 5.35e-04 4.52e-02 3.69e-02 3.5e-08\n", + "```\n", + "Volumes 4, 5 and 6, 7 present energy and force training and testing errors, respectively. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4aabcec8-9058-4582-863d-00550bb05187", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n", + "# If there is no available reference data, rmse_*_{val,trn} will print nan\n", + " 9800 2.40e-02 2.82e-02 2.27e-04 3.77e-04 2.35e-02 2.76e-02 4.3e-08\n", + " 10000 3.82e-02 3.02e-02 6.48e-04 3.29e-04 3.75e-02 2.97e-02 3.5e-08\n" + ] + } + ], + "source": [ + "! cd DeePMD-kit_Tutorial/01.train.finished/ && head -n 2 lcurve.out && tail -n 2 lcurve.out" + ] + }, + { + "cell_type": "markdown", + "id": "34f3de74-9b9c-4143-94c6-1b91adbfb8d4", + "metadata": {}, + "source": [ + "The loss function can be visualized to monitor the training process." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a7444fb4-a869-4b44-a1e3-2d74679189ed", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7XZycnIG9RwhhAApjQkhTkJOTo71x+12o2madbujo4OUlBRefPFFlixZQlxcHM8++yy1tbV861vfIi8vD5fLxfTp03n++eeDXje0NDZ27Fjuv/9+rr76apKSkhgzZgxPPvmk9Xhoaez9999H0zT+8Y9/UFxcjMvlYtGiRUFBGsC9995LVlYWSUlJXHvttdxxxx19ZnPq6+u57LLLyMzMJD4+ngkTJvDMM88AUFhYCMDs2bPRNI0lS5ZYz3vmmWeYPHkycXFxTJo0iccee6zHtb/wwgssWrSIuLg4pk6dyvvvvz+g8wohTo4EQkKIIfXjH/+Ym266id27d7N06VI6OjqYO3cur732Gjt37uR73/seV1xxBZ988kmfr/Pwww9TXFzM1q1b+cEPfsD111/Pnj17+nzOXXfdxcMPP8zmzZtxOBxcffXV1mN//vOfue+++3jooYfYsmULY8aM4fHHH+/z9e6++2527drF3//+d3bv3s3jjz9ORkYGABs3bgRg7dq1lJeX89e//hWAp556irvuuov77ruP3bt3c//993P33Xfzxz/+Mei1f/SjH3HrrbeydetWFi1axDe+8Q1qa2v7Pa8Q4iTpQghxCjzzzDO62+22bpeUlOiA/sgjj/T73OXLl+u33nqrdfvss8/Wf/jDH1q3CwoK9Msvv9y67fP59KysLP3xxx8POtfWrVt1Xdf19957Twf0tWvXWs95/fXXdUBvb2/XdV3XFyxYoN9www1B13HGGWfoM2fO7PU6L7zwQv273/1u2MdCr8GUn5+vP/fcc0H3/fznP9cXLlwY9LwHH3zQery7u1vPy8vTH3rooX7PK4Q4OZIREkIMqeLi4qDbXq+X++67jxkzZpCenk5iYiJvv/02R44c6fN1ZsyYYX1vluCqqqoG/JxRo0YBWM/Zu3cv8+fPDzo+9Hao66+/nhdeeIFZs2Zx++23s2HDhj6Pr66upqysjGuuuYbExETrz7333svBgweDjl24cKH1vcPhoLi4mN27d5/QeYUQAyeBkBBiSCUkJATdfvjhh1m1ahW333477777Ltu2bWPp0qV0dXX1+TqhTdaapuHz+Qb8HHOFW+BzQle96f0sol22bBmHDx/m5ptv5vjx45x77rncdtttvR5vnuupp55i27Zt1p+dO3fy8ccf93muwOsb7HmFEAMngZAQIqLWr1/PRRddxOWXX87MmTMZN24c+/fvj/h1TJw40errMW3evLnf52VmZnLVVVfx7LPP8sgjj1hN206nE1AZL1N2djajR4/m0KFDFBUVBf0xm6tNgYGRx+Nhy5YtTJo0qd/zCiFOjiyfF0JEVFFRES+//DIbNmwgNTWVX//611RUVDB58uSIXseNN97IddddR3FxMYsWLWLNmjXs2LGDcePG9fqclStXMnfuXKZOnUpnZyevvfaadd1ZWVnEx8fz5ptvkpeXR1xcHG63m5/85CfcdNNNJCcns2zZMjo7O9m8eTP19fXccsst1ms/+uijTJgwgcmTJ7Nq1Srq6+ut5u6+ziuEODmSERJCRNTdd9/NnDlzWLp0KUuWLCEnJ4cVK1ZE/Douu+wy7rzzTm677TbmzJlDSUkJV111FXFxcb0+x+l0cueddzJjxgwWL16M3W7nhRdeAFRfz29+8xt+//vfk5uby0UXXQTAtddey9NPP83q1auZPn06Z599NqtXr+6REXrwwQd56KGHmDlzJuvXr+fVV1+1Vob1dV4hxMmRydJCCGE4//zzycnJ4U9/+lPEzikTqYUYXlIaE0JEpba2Np544gmWLl2K3W7n+eefZ+3atbzzzjvDfWlCiAiSQEgIEZU0TeONN97g3nvvpbOzk4kTJ/Lyyy9z3nnnDfelCSEiSEpjQgghhIha0iwthBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKj1/wE5Gnyd5rBYFwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "with open(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\") as f:\n", + " headers = f.readline().split()[1:]\n", + "lcurve = pd.DataFrame(\n", + " np.loadtxt(\"./DeePMD-kit_Tutorial/01.train.finished/lcurve.out\"), columns=headers\n", + ")\n", + "legends = [\"rmse_e_val\", \"rmse_e_trn\", \"rmse_f_val\", \"rmse_f_trn\"]\n", + "for legend in legends:\n", + " plt.loglog(lcurve[\"step\"], lcurve[legend], label=legend)\n", + "plt.legend()\n", + "plt.xlabel(\"Training steps\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8009ad0a-9902-42d3-b280-caee92cbdf10", + "metadata": {}, + "source": [ + "### 4 Freeze a model \n", + "\n", + "At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b20d368a-135c-4314-ae4c-47bf1f28c4d7", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "DEEPMD WARNING The following nodes are not in the graph: {'spin_attr/ntypes_spin', 'fitting_attr/aparam_nall'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n", + "DEEPMD INFO The following nodes will be frozen: ['model_type', 'o_atom_virial', 'fitting_attr/daparam', 'model_attr/model_type', 'model_attr/tmap', 'o_force', 'o_virial', 'descrpt_attr/rcut', 'train_attr/min_nbor_dist', 'fitting_attr/dfparam', 't_mesh', 'o_atom_energy', 'train_attr/training_script', 'descrpt_attr/ntypes', 'o_energy', 'model_attr/model_version']\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", + "DEEPMD INFO 1222 ops in the final graph.\n" + ] + } + ], + "source": [ + "## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Train and Freeze the Model\n", + "! cd DeePMD-kit_Tutorial/01.train.finished/ && dp freeze -o graph.pb" + ] + }, + { + "cell_type": "markdown", + "id": "3b23f3c9-5809-4a65-9126-f9e6d2f3a10b", + "metadata": {}, + "source": [ + "and it will output a model file named `graph.pb` in the current directory. " + ] + }, + { + "cell_type": "markdown", + "id": "2882c201-0e85-46d0-94f8-e055a540b6fb", + "metadata": {}, + "source": [ + "### 5 Test a model \n", + "\n", + "We can check the quality of the trained model by running\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5d201246-b110-4e63-a09b-ad7308bc1367", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.config.list_physical_devices('GPU')` instead.\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.config.list_physical_devices('GPU')` instead.\n", + "DEEPMD WARNING You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n", + "DEEPMD INFO # ---------------output of dp test--------------- \n", + "DEEPMD INFO # testing system : ../00.data/validation_data\n", + "DEEPMD INFO # number of test data : 40 \n", + "DEEPMD INFO Energy MAE : 1.947297e-03 eV\n", + "DEEPMD INFO Energy RMSE : 2.568049e-03 eV\n", + "DEEPMD INFO Energy MAE/Natoms : 3.894594e-04 eV\n", + "DEEPMD INFO Energy RMSE/Natoms : 5.136098e-04 eV\n", + "DEEPMD INFO Force MAE : 2.478063e-02 eV/A\n", + "DEEPMD INFO Force RMSE : 3.354447e-02 eV/A\n", + "DEEPMD INFO Virial MAE : 2.883222e-02 eV\n", + "DEEPMD INFO Virial RMSE : 4.083024e-02 eV\n", + "DEEPMD INFO Virial MAE/Natoms : 5.766444e-03 eV\n", + "DEEPMD INFO Virial RMSE/Natoms : 8.166047e-03 eV\n", + "DEEPMD INFO # ----------------------------------------------- \n" + ] + } + ], + "source": [ + "! cd DeePMD-kit_Tutorial/01.train.finished/ && dp test -m graph.pb -s ../00.data/validation_data" + ] + }, + { + "cell_type": "markdown", + "id": "7f48e0a9-644f-4588-b9f3-cc115851a1ed", + "metadata": {}, + "source": [ + "The correlation between predicted data and original data can also be calculated." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "be03c8da-e4f9-439d-bb22-800b651a7737", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.config.list_physical_devices('GPU')` instead.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-03-19 19:42:27.272130: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2024-03-19 19:42:27.275152: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", + "2024-03-19 19:42:27.294336: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.config.list_physical_devices('GPU')` instead.\n", + "WARNING:deepmd.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n" + ] + } + ], + "source": [ + "import dpdata\n", + "\n", + "training_systems = dpdata.LabeledSystem(\n", + " \"./DeePMD-kit_Tutorial/00.data/training_data\", fmt=\"deepmd/npy\"\n", + ")\n", + "predict = training_systems.predict(\"./DeePMD-kit_Tutorial/01.train.finished/graph.pb\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b4005a62-8bf2-4aaf-8865-20ea303ea0f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "plt.scatter(training_systems[\"energies\"], predict[\"energies\"])\n", + "\n", + "x_range = np.linspace(plt.xlim()[0], plt.xlim()[1])\n", + "\n", + "plt.plot(x_range, x_range, \"r--\", linewidth=0.25)\n", + "plt.xlabel(\"Energy of DFT\")\n", + "plt.ylabel(\"Energy predicted by deep potential\")\n", + "plt.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "fffaad23-53a6-47dd-8d91-9beb68d1212b", + "metadata": {}, + "source": [ + "### 6 Run MD with LAMMPS\n", + "\n", + "The model can drive molecular dynamics in LAMMPS. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "d0ceac75-9753-4ae8-b954-c2cc6d005e46", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DeePMD-kit_Tutorial\n", + "\u001b[01;34m.\u001b[0m\n", + "├── \u001b[01;32mch4.dump\u001b[0m\n", + "├── \u001b[01;32mconf.lmp\u001b[0m\n", + "├── \u001b[01;32mgraph.pb\u001b[0m\n", + "└── \u001b[01;32min.lammps\u001b[0m\n", + "\n", + "0 directories, 4 files\n" + ] + } + ], + "source": [ + "! ls\n", + "! cd ./DeePMD-kit_Tutorial/02.lmp && cp ../01.train.finished/graph.pb ./ && tree -L 1" + ] + }, + { + "cell_type": "markdown", + "id": "c794572f-7e9c-42f7-b78a-4d82bd3f3118", + "metadata": {}, + "source": [ + "Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the lammps input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n", + "```\n", + "pair_style deepmd graph.pb\n", + "pair_coeff * *\n", + "```\n", + "where the pair style deepmd is invoked and the model file `graph.pb` is provided, which means the atomic interaction will be computed by the DP model that is stored in the file `graph.pb`. \n", + "\n", + "In an environment with a compatibable version of LAMMPS, the deep potential molecular dynamics can be performed via \n", + "\n", + "```bash\n", + "lmp -i input.lammps\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f4501e9c-541c-431d-8847-d0d9eecfb0e0", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LAMMPS (2 Aug 2023 - Update 1)\n", + "OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)\n", + " using 1 OpenMP thread(s) per MPI task\n", + "Loaded 1 plugins from /root/miniconda3/envs/deepmd/lib/deepmd_lmp\n", + "Reading data file ...\n", + " triclinic box = (0 0 0) to (10.114259 10.263124 10.216793) with tilt (0.036749877 0.13833062 -0.056322169)\n", + " 1 by 1 by 1 MPI processor grid\n", + " reading atoms ...\n", + " 5 atoms\n", + " read_data CPU = 0.011 seconds\n", + "DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "Summary of lammps deepmd module ...\n", + " >>> Info of deepmd-kit:\n", + " installed to: /root/miniconda3/envs/deepmd\n", + " source: v2.2.7\n", + " source branch: HEAD\n", + " source commit: 839f4fe7\n", + " source commit at: 2023-10-27 21:10:24 +0800\n", + " surpport model ver.:1.1 \n", + " build variant: cpu\n", + " build with tf inc: /root/miniconda3/envs/deepmd/include;/root/miniconda3/envs/deepmd/include\n", + " build with tf lib: /root/miniconda3/envs/deepmd/lib/libtensorflow_cc.so\n", + " set tf intra_op_parallelism_threads: 0\n", + " set tf inter_op_parallelism_threads: 0\n", + " >>> Info of lammps module:\n", + " use deepmd-kit at: /root/miniconda3/envs/deepmdDeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "2024-03-19 19:42:31.143521: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2024-03-19 19:42:31.150107: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", + "2024-03-19 19:42:31.217323: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", + "INVALID_ARGUMENT: Tensor spin_attr/ntypes_spin:0, specified in either feed_devices or fetch_devices was not found in the Graph\n", + " >>> Info of model(s):\n", + " using 1 model(s): graph.pb \n", + " rcut in model: 6\n", + " ntypes in model: 2\n", + "\n", + "CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n", + "\n", + "Your simulation uses code contributions which should be cited:\n", + "- USER-DEEPMD package:\n", + "The log file lists these citations in BibTeX format.\n", + "\n", + "CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE\n", + "\n", + "Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule\n", + "Neighbor list info ...\n", + " update: every = 10 steps, delay = 0 steps, check = no\n", + " max neighbors/atom: 2000, page size: 100000\n", + " master list distance cutoff = 7\n", + " ghost atom cutoff = 7\n", + " binsize = 3.5, bins = 3 3 3\n", + " 1 neighbor lists, perpetual/occasional/extra = 1 0 0\n", + " (1) pair deepmd, perpetual\n", + " attributes: full, newton on\n", + " pair build: full/bin/atomonly\n", + " stencil: full/bin/3d\n", + " bin: standard\n", + "Setting up Verlet run ...\n", + " Unit style : metal\n", + " Current step : 0\n", + " Time step : 0.001\n", + "Per MPI rank memory allocation (min/avg/max) = 2.559 | 2.559 | 2.559 Mbytes\n", + " Step PotEng KinEng TotEng Temp Press Volume \n", + " 0 -219.77406 0.025852029 -219.74821 50 -779.25188 1060.5429 \n", + " 100 -219.7691 0.020797437 -219.7483 40.223994 -637.14305 1060.5429 \n", + " 200 -219.77444 0.024939285 -219.7495 48.234676 -320.40098 1060.5429 \n", + " 300 -219.78439 0.033072979 -219.75132 63.965925 43.026442 1060.5429 \n", + " 400 -219.78739 0.034550668 -219.75284 66.823899 351.67696 1060.5429 \n", + " 500 -219.78236 0.028176993 -219.75419 54.496675 666.75737 1060.5429 \n", + " 600 -219.78253 0.025728877 -219.7568 49.761815 711.163 1060.5429 \n", + " 700 -219.78894 0.028382389 -219.76055 54.893929 479.13643 1060.5429 \n", + " 800 -219.78903 0.024859643 -219.76417 48.080642 83.077656 1060.5429 \n", + " 900 -219.78291 0.015448216 -219.76746 29.878151 -300.47299 1060.5429 \n", + " 1000 -219.78076 0.009958727 -219.7708 19.261016 -547.51181 1060.5429 \n", + " 1100 -219.78482 0.010708236 -219.77412 20.710629 -528.61764 1060.5429 \n", + " 1200 -219.79088 0.014010222 -219.77687 27.096949 -271.00462 1060.5429 \n", + " 1300 -219.79342 0.014851244 -219.77856 28.723555 113.17225 1060.5429 \n", + " 1400 -219.79258 0.013154759 -219.77943 25.442411 429.376 1060.5429 \n", + " 1500 -219.79351 0.013439034 -219.78007 25.992223 502.07008 1060.5429 \n", + " 1600 -219.79556 0.015244258 -219.78032 29.483679 283.58943 1060.5429 \n", + " 1700 -219.79243 0.012780435 -219.77965 24.718437 -118.65863 1060.5429 \n", + " 1800 -219.78753 0.0093475149 -219.77818 18.078881 -440.59299 1060.5429 \n", + " 1900 -219.78644 0.010485894 -219.77595 20.280601 -548.35192 1060.5429 \n", + " 2000 -219.78657 0.014291536 -219.77228 27.641033 -379.53425 1060.5429 \n", + " 2100 -219.78582 0.019271324 -219.76655 37.272363 3.8622352 1060.5429 \n", + " 2200 -219.78342 0.023480599 -219.75994 45.413455 421.70988 1060.5429 \n", + " 2300 -219.7843 0.029382788 -219.75492 56.828785 667.59953 1060.5429 \n", + " 2400 -219.78777 0.035686462 -219.75209 69.020621 708.56999 1060.5429 \n", + " 2500 -219.78484 0.034331665 -219.75051 66.400331 560.05263 1060.5429 \n", + " 2600 -219.781 0.031551297 -219.74945 61.022863 272.92453 1060.5429 \n", + " 2700 -219.77767 0.028694937 -219.74898 55.498424 -150.97111 1060.5429 \n", + " 2800 -219.77576 0.026724406 -219.74903 51.68725 -531.59493 1060.5429 \n", + " 2900 -219.77353 0.02427308 -219.74926 46.946179 -733.24223 1060.5429 \n", + " 3000 -219.77341 0.023395232 -219.75001 45.248349 -706.66882 1060.5429 \n", + " 3100 -219.77969 0.028192211 -219.7515 54.526108 -543.66237 1060.5429 \n", + " 3200 -219.78698 0.033417316 -219.75356 64.631901 -242.21772 1060.5429 \n", + " 3300 -219.79019 0.034565479 -219.75562 66.852545 120.70082 1060.5429 \n", + " 3400 -219.78417 0.026911374 -219.75726 52.048862 557.3674 1060.5429 \n", + " 3500 -219.77449 0.01580688 -219.75868 30.571837 766.81564 1060.5429 \n", + " 3600 -219.77669 0.015991276 -219.7607 30.928474 683.18009 1060.5429 \n", + " 3700 -219.78572 0.022618548 -219.7631 43.746176 290.23355 1060.5429 \n", + " 3800 -219.79279 0.027795739 -219.76499 53.759299 -181.24253 1060.5429 \n", + " 3900 -219.78826 0.022283131 -219.76598 43.097451 -515.8167 1060.5429 \n", + " 4000 -219.78236 0.015546589 -219.76681 30.068411 -608.47483 1060.5429 \n", + " 4100 -219.7863 0.018324324 -219.76797 35.440785 -500.82916 1060.5429 \n", + " 4200 -219.79138 0.022304319 -219.76908 43.138431 -200.46212 1060.5429 \n", + " 4300 -219.78855 0.019344221 -219.7692 37.413352 235.01595 1060.5429 \n", + " 4400 -219.78187 0.013421854 -219.76845 25.958995 569.04151 1060.5429 \n", + " 4500 -219.77866 0.011098531 -219.76756 21.465493 679.98587 1060.5429 \n", + " 4600 -219.78476 0.018276314 -219.76649 35.347929 462.8788 1060.5429 \n", + " 4700 -219.79061 0.026535396 -219.76407 51.321689 -44.12474 1060.5429 \n", + " 4800 -219.78698 0.027259367 -219.75972 52.721911 -476.42292 1060.5429 \n", + " 4900 -219.77955 0.025502005 -219.75405 49.323023 -698.38931 1060.5429 \n", + " 5000 -219.77457 0.026622642 -219.74795 51.49043 -707.85111 1060.5429 \n", + "Loop time of 44.1004 on 1 procs for 5000 steps with 5 atoms\n", + "\n", + "Performance: 9.796 ns/day, 2.450 hours/ns, 113.378 timesteps/s, 566.888 atom-step/s\n", + "94.5% CPU use with 1 MPI tasks x 1 OpenMP threads\n", + "\n", + "MPI task timing breakdown:\n", + "Section | min time | avg time | max time |%varavg| %total\n", + "---------------------------------------------------------------\n", + "Pair | 43.95 | 43.95 | 43.95 | 0.0 | 99.66\n", + "Neigh | 0.008028 | 0.008028 | 0.008028 | 0.0 | 0.02\n", + "Comm | 0.0354 | 0.0354 | 0.0354 | 0.0 | 0.08\n", + "Output | 0.0056147 | 0.0056147 | 0.0056147 | 0.0 | 0.01\n", + "Modify | 0.085761 | 0.085761 | 0.085761 | 0.0 | 0.19\n", + "Other | | 0.0159 | | | 0.04\n", + "\n", + "Nlocal: 5 ave 5 max 5 min\n", + "Histogram: 1 0 0 0 0 0 0 0 0 0\n", + "Nghost: 130 ave 130 max 130 min\n", + "Histogram: 1 0 0 0 0 0 0 0 0 0\n", + "Neighs: 0 ave 0 max 0 min\n", + "Histogram: 1 0 0 0 0 0 0 0 0 0\n", + "FullNghs: 20 ave 20 max 20 min\n", + "Histogram: 1 0 0 0 0 0 0 0 0 0\n", + "\n", + "Total # of neighbors = 20\n", + "Ave neighs/atom = 4\n", + "Neighbor list builds = 500\n", + "Dangerous builds not checked\n", + "Total wall time: 0:00:45\n" + ] + } + ], + "source": [ + "! cd ./DeePMD-kit_Tutorial/02.lmp && lmp -i in.lammps" + ] + }, + { + "cell_type": "markdown", + "id": "3c1f883a-a768-4de1-8681-effd90643fee", + "metadata": {}, + "source": [ + "## References \n", + "\n", + "1. https://docs.deepmodeling.com/projects/deepmd/en/master/index.html\n", + "2. https://github.com/deepmodeling/deepmd-kit " + ] + }, + { + "cell_type": "markdown", + "id": "98a7aff7-daaf-494f-beb9-aa99688ed0a2", + "metadata": {}, + "source": [ + "\"Open" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 95f4d97ca26e23d186e736b41e17e79a2abe8e84 Mon Sep 17 00:00:00 2001 From: Mancn Date: Sun, 24 Mar 2024 00:02:51 +0800 Subject: [PATCH 03/15] Add compress a model section --- doc/getting-started/quick_start.ipynb | 90 ++++++++++++++++----------- 1 file changed, 54 insertions(+), 36 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index a06f4c5e14..cc40ca158f 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -25,8 +25,9 @@ "

\n", " ©️ Copyright 2024 @ Authors
\n", " 📖 Getting Started Guide
\n", - " Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
\n", - " This document can be executed directly on the Bohrium Notebook. To begin, click the Connect button located at the top of the interface. We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n", + " Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

\n", + " This document can be executed directly on the Bohrium Notebook. To begin,you can click the Open in Bohrium button above to quickly run this document in Bohrium.

\n", + " After opening Bohrium Notebook, click the button connect .We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n", "

\n", "" ] @@ -36,8 +37,7 @@ "id": "dbab8963", "metadata": {}, "source": [ - "

This is a quick start guide for \"Deep Potential\" molecular dynamics using DeePMD-kit, through which you can quickly understand the paradigm cycle that DeePMD-kit operates in and apply it to your projects.

\n", - "\n", + "**This is a quick start guide for \"Deep Potential\" molecular dynamics using DeePMD-kit, through which you can quickly understand the paradigm cycle that DeePMD-kit operates in and apply it to your projects.**\n", "

Deep Potential is the convergence of machine learning and physical principles, presenting a new computational paradigm as shown in the figure below.

\n", "
\n", " \"Fig2\"\n", @@ -76,10 +76,11 @@ "* [Practice](#practice)\n", " * [1. Data preparation](#dataprepare)\n", " * [2. Prepare input script](#inputscript)\n", - " * [3. Train a model](#train)\n", - " * [4. Freeze a model](#freeze)\n", - " * [5. Test a model](#test)\n", - " * [6. Run MD with LAMMPS](#lammpsmd)\n", + " * [3. Train a model](#trainamodel)\n", + " * [4. Freeze a model](#freezeamodel)\n", + " * [5. Compress a model](#compressamodel)\n", + " * [6. Test a model](#testamodel)\n", + " * [7. Run MD with LAMMPS](#lammpsmd)\n", "* [References](#references)\n" ] }, @@ -100,7 +101,7 @@ "\n", "For more detailed usage, you can refer to the [DeePMD-kit’s documentation](https://docs.deepmodeling.org/projects/deepmd/en/master/index.html) as a comprehensive reference.\n", "\n", - "In this case, the Deep Potential (DP) model was generated using the **DeePMD-kit package (v2.2.1)**.\n", + "In this case, the Deep Potential (DP) model was generated using the **DeePMD-kit package**.\n", "\n" ] }, @@ -629,7 +630,7 @@ "id": "bafe20b8-3bde-403c-ae42-b68ba5f29703", "metadata": {}, "source": [ - "### 3 Train a model \n", + "### 3 Train a model \n", "After the training script is prepared, we can start the training with DeePMD-kit by simply running" ] }, @@ -933,7 +934,7 @@ "id": "8009ad0a-9902-42d3-b280-caee92cbdf10", "metadata": {}, "source": [ - "### 4 Freeze a model \n", + "### 4 Freeze a model \n", "\n", "At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute" ] @@ -974,7 +975,7 @@ } ], "source": [ - "## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Train and Freeze the Model\n", + "## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Freeze the Model\n", "! cd DeePMD-kit_Tutorial/01.train.finished/ && dp freeze -o graph.pb" ] }, @@ -986,12 +987,48 @@ "and it will output a model file named `graph.pb` in the current directory. " ] }, + { + "cell_type": "markdown", + "id": "3de9a2d0", + "metadata": {}, + "source": [ + "### 5 Compress a model \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "8089fe4d", + "metadata": {}, + "source": [ + "To enhance computational efficiency with DP models, compression significantly accelerates DP-based calculations and reduces memory usage. We can compress the model by running:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bb71bdd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "zsh:cd:1: no such file or directory: DeePMD-kit_Tutorial/01.train.finished/\n" + ] + } + ], + "source": [ + "## Navigate to the DeePMD-kit_Tutorial/01.train/ Directory to Compress the Model\n", + "! cd DeePMD-kit_Tutorial/01.train.finished/ && dp compress -i graph.pb -o compress.pb" + ] + }, { "cell_type": "markdown", "id": "2882c201-0e85-46d0-94f8-e055a540b6fb", "metadata": {}, "source": [ - "### 5 Test a model \n", + "### 6 Test a model \n", "\n", "We can check the quality of the trained model by running\n" ] @@ -1150,7 +1187,7 @@ "id": "fffaad23-53a6-47dd-8d91-9beb68d1212b", "metadata": {}, "source": [ - "### 6 Run MD with LAMMPS\n", + "### 7 Run MD with LAMMPS \n", "\n", "The model can drive molecular dynamics in LAMMPS. \n" ] @@ -1186,7 +1223,7 @@ "id": "c794572f-7e9c-42f7-b78a-4d82bd3f3118", "metadata": {}, "source": [ - "Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the lammps input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n", + "Here `conf.lmp` gives the initial configuration of a gas phase methane MD simulation, and the file `in.lammps` is the LAMMPS input script. One may check in.lammps and finds that it is a rather standard LAMMPS input file for a MD simulation, with only two exception lines:\n", "```\n", "pair_style deepmd graph.pb\n", "pair_coeff * *\n", @@ -1361,25 +1398,6 @@ "source": [ "! cd ./DeePMD-kit_Tutorial/02.lmp && lmp -i in.lammps" ] - }, - { - "cell_type": "markdown", - "id": "3c1f883a-a768-4de1-8681-effd90643fee", - "metadata": {}, - "source": [ - "## References \n", - "\n", - "1. https://docs.deepmodeling.com/projects/deepmd/en/master/index.html\n", - "2. https://github.com/deepmodeling/deepmd-kit " - ] - }, - { - "cell_type": "markdown", - "id": "98a7aff7-daaf-494f-beb9-aa99688ed0a2", - "metadata": {}, - "source": [ - "\"Open" - ] } ], "metadata": { @@ -1398,7 +1416,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.11.8" } }, "nbformat": 4, From e09ce6716a98a57735fc0dc459cc9bfea811f694 Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Mon, 25 Mar 2024 00:02:12 +0800 Subject: [PATCH 04/15] Use dargs feature to show input.json --- doc/getting-started/quick_start.ipynb | 748 +++++++++++++++++--------- 1 file changed, 503 insertions(+), 245 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index cc40ca158f..f01ebd1238 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -125,30 +125,43 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "34ea0475", + "execution_count": 11, + "id": "125c96ef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Current path is: /personal/bohr/DeePMD-kit-Tutorial-21f1/v1\n" + "Dataset is already downloaded and extracted.\n", + "Current path is: /personal\n" ] } ], "source": [ - "# For security reasons, we do not have write permission to the dataset folder, so we copy it to the `/data/` directory:\n", - "! cp -nr /bohr/ /personal/\n", - "\n", - "# Here, we define some paths and switch to the working path for ease of subsequent calls:\n", "import os\n", "\n", - "bohr_dataset_url = \"/bohr/DeePMD-kit-Tutorial-21f1/v1/\" # The URL can be copied from the dataset section on the left.\n", - "work_path = os.path.join(\n", - " \"/personal\", bohr_dataset_url[1:]\n", - ") # A slice operation is used to remove the leading \"/\" from the path.\n", - "os.chdir(work_path)\n", + "# Define the dataset URL and the paths\n", + "dataset_url = \"https://bohrium-api.dp.tech/ds-dl/DeePMD-kit-Tutorial-a8z5-v1.zip\"\n", + "zip_file_name = \"DeePMD-kit-Tutorial-a8z5-v1.zip\"\n", + "dataset_directory = \"DeePMD-kit_Tutorial\"\n", + "local_zip_path = f\"/personal/{zip_file_name}\"\n", + "extract_path = \"/personal/\"\n", + "\n", + "# Check if the dataset directory exists to avoid re-downloading and re-extracting\n", + "if not os.path.isdir(f\"{extract_path}{dataset_directory}\"):\n", + " # Download and extract if not exists\n", + " if not os.path.isfile(local_zip_path):\n", + " print(\"Downloading dataset...\")\n", + " !wget -q -O {local_zip_path} {dataset_url}\n", + " \n", + " print(\"Extracting dataset...\")\n", + " !unzip -q -n {local_zip_path} -d {extract_path}\n", + "else:\n", + " print(\"Dataset is already downloaded and extracted.\")\n", + "\n", + "# Change the current working directory\n", + "os.chdir(f\"{extract_path}\")\n", "print(f\"Current path is: {os.getcwd()}\")" ] }, @@ -162,7 +175,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 12, "id": "2ea12f86", "metadata": {}, "outputs": [ @@ -202,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "id": "509f7efe", "metadata": {}, "outputs": [ @@ -255,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "id": "b5fbc838", "metadata": {}, "outputs": [ @@ -307,7 +320,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "id": "e5befaf5-c464-4e8f-8544-a2634f5fd1d2", "metadata": {}, "outputs": [ @@ -330,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "id": "70cc9898", "metadata": {}, "outputs": [ @@ -340,8 +353,8 @@ "text": [ "\u001b[01;34mDeePMD-kit_Tutorial/00.data/training_data\u001b[0m\n", "├── \u001b[01;34mset.000\u001b[0m\n", - "├── \u001b[01;32mtype.raw\u001b[0m\n", - "└── \u001b[01;32mtype_map.raw\u001b[0m\n", + "├── \u001b[00mtype.raw\u001b[0m\n", + "└── \u001b[00mtype_map.raw\u001b[0m\n", "\n", "1 directory, 2 files\n" ] @@ -375,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 13, "id": "a686585c-3e5b-4a5c-9cc7-4db7759b74b2", "metadata": {}, "outputs": [ @@ -406,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "id": "6216f02d-3a21-481f-99da-3f23b438a7c0", "metadata": {}, "outputs": [ @@ -430,7 +443,7 @@ "source": [ "This tells us the type \"0\" is named by \"H\", and the type \"1\" is named by \"C\".\n", "\n", - "More detailed documentation on using dpdata for data conversion can be found [here](https://docs.deepmodeling.org/projects/deepmd/en/master/data/data-conv.html)" + "More detailed documentation on using dpdata for data conversion can be found [here](../data/data-conv.html)" ] }, { @@ -445,85 +458,268 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "d371a240", + "execution_count": 24, + "id": "995c0b91", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{\n", - " \"_comment\": \" model parameters\",\n", - " \"model\": {\n", - "\t\"type_map\":\t[\"H\", \"C\"],\n", - "\t\"descriptor\" :{\n", - "\t \"type\":\t\t\"se_e2_a\",\n", - "\t \"sel\":\t\t\"auto\",\n", - "\t \"rcut_smth\":\t0.50,\n", - "\t \"rcut\":\t\t6.00,\n", - "\t \"neuron\":\t\t[25, 50, 100],\n", - "\t \"resnet_dt\":\tfalse,\n", - "\t \"axis_neuron\":\t16,\n", - "\t \"seed\":\t\t1,\n", - "\t \"_comment\":\t\t\" that's all\"\n", - "\t},\n", - "\t\"fitting_net\" : {\n", - "\t \"neuron\":\t\t[240, 240, 240],\n", - "\t \"resnet_dt\":\ttrue,\n", - "\t \"seed\":\t\t1,\n", - "\t \"_comment\":\t\t\" that's all\"\n", - "\t},\n", - "\t\"_comment\":\t\" that's all\"\n", - " },\n", - "\n", - " \"learning_rate\" :{\n", - "\t\"type\":\t\t\"exp\",\n", - "\t\"decay_steps\":\t50,\n", - "\t\"start_lr\":\t0.001,\t\n", - "\t\"stop_lr\":\t3.51e-8,\n", - "\t\"_comment\":\t\"that's all\"\n", - " },\n", - "\n", - " \"loss\" :{\n", - "\t\"type\":\t\t\"ener\",\n", - "\t\"start_pref_e\":\t0.02,\n", - "\t\"limit_pref_e\":\t1,\n", - "\t\"start_pref_f\":\t1000,\n", - "\t\"limit_pref_f\":\t1,\n", - "\t\"start_pref_v\":\t0,\n", - "\t\"limit_pref_v\":\t0,\n", - "\t\"_comment\":\t\" that's all\"\n", - " },\n", - "\n", - " \"training\" : {\n", - "\t\"training_data\": {\n", - "\t \"systems\": [\"../00.data/training_data\"],\n", - "\t \"batch_size\": \"auto\",\n", - "\t \"_comment\":\t \"that's all\"\n", - "\t},\n", - "\t\"validation_data\":{\n", - "\t \"systems\":\t [\"../00.data/validation_data\"],\n", - "\t \"batch_size\": \"auto\",\n", - "\t \"numb_btch\": 1,\n", - "\t \"_comment\":\t \"that's all\"\n", - "\t},\n", - "\t\"numb_steps\":\t10000,\n", - "\t\"seed\":\t\t10,\n", - "\t\"disp_file\":\t\"lcurve.out\",\n", - "\t\"disp_freq\":\t200,\n", - "\t\"save_freq\":\t1000,\n", - "\t\"_comment\":\t\"that's all\"\n", - " }, \n", - "\n", - " \"_comment\":\t\t\"that's all\"\n", - "}\n", - "\n" + "Name: dargs\n", + "Version: 0.4.4\n", + "Summary: Process arguments for the deep modeling project.\n", + "Home-page: \n", + "Author: DeepModeling\n", + "Author-email: Yixiao Chen \n", + "License: GNU LESSER GENERAL PUBLIC LICENSE\n", + " Version 3, 29 June 2007\n", + " \n", + " Copyright (C) 2007 Free Software Foundation, Inc. \n", + " Everyone is permitted to copy and distribute verbatim copies\n", + " of this license document, but changing it is not allowed.\n", + " \n", + " \n", + " This version of the GNU Lesser General Public License incorporates\n", + " the terms and conditions of version 3 of the GNU General Public\n", + " License, supplemented by the additional permissions listed below.\n", + " \n", + " 0. Additional Definitions.\n", + " \n", + " As used herein, \"this License\" refers to version 3 of the GNU Lesser\n", + " General Public License, and the \"GNU GPL\" refers to version 3 of the GNU\n", + " General Public License.\n", + " \n", + " \"The Library\" refers to a covered work governed by this License,\n", + " other than an Application or a Combined Work as defined below.\n", + " \n", + " An \"Application\" is any work that makes use of an interface provided\n", + " by the Library, but which is not otherwise based on the Library.\n", + " Defining a subclass of a class defined by the Library is deemed a mode\n", + " of using an interface provided by the Library.\n", + " \n", + " A \"Combined Work\" is a work produced by combining or linking an\n", + " Application with the Library. The particular version of the Library\n", + " with which the Combined Work was made is also called the \"Linked\n", + " Version\".\n", + " \n", + " The \"Minimal Corresponding Source\" for a Combined Work means the\n", + " Corresponding Source for the Combined Work, excluding any source code\n", + " for portions of the Combined Work that, considered in isolation, are\n", + " based on the Application, and not on the Linked Version.\n", + " \n", + " The \"Corresponding Application Code\" for a Combined Work means the\n", + " object code and/or source code for the Application, including any data\n", + " and utility programs needed for reproducing the Combined Work from the\n", + " Application, but excluding the System Libraries of the Combined Work.\n", + " \n", + " 1. Exception to Section 3 of the GNU GPL.\n", + " \n", + " You may convey a covered work under sections 3 and 4 of this License\n", + " without being bound by section 3 of the GNU GPL.\n", + " \n", + " 2. Conveying Modified Versions.\n", + " \n", + " If you modify a copy of the Library, and, in your modifications, a\n", + " facility refers to a function or data to be supplied by an Application\n", + " that uses the facility (other than as an argument passed when the\n", + " facility is invoked), then you may convey a copy of the modified\n", + " version:\n", + " \n", + " a) under this License, provided that you make a good faith effort to\n", + " ensure that, in the event an Application does not supply the\n", + " function or data, the facility still operates, and performs\n", + " whatever part of its purpose remains meaningful, or\n", + " \n", + " b) under the GNU GPL, with none of the additional permissions of\n", + " this License applicable to that copy.\n", + " \n", + " 3. Object Code Incorporating Material from Library Header Files.\n", + " \n", + " The object code form of an Application may incorporate material from\n", + " a header file that is part of the Library. You may convey such object\n", + " code under terms of your choice, provided that, if the incorporated\n", + " material is not limited to numerical parameters, data structure\n", + " layouts and accessors, or small macros, inline functions and templates\n", + " (ten or fewer lines in length), you do both of the following:\n", + " \n", + " a) Give prominent notice with each copy of the object code that the\n", + " Library is used in it and that the Library and its use are\n", + " covered by this License.\n", + " \n", + " b) Accompany the object code with a copy of the GNU GPL and this license\n", + " document.\n", + " \n", + " 4. Combined Works.\n", + " \n", + " You may convey a Combined Work under terms of your choice that,\n", + " taken together, effectively do not restrict modification of the\n", + " portions of the Library contained in the Combined Work and reverse\n", + " engineering for debugging such modifications, if you also do each of\n", + " the following:\n", + " \n", + " a) Give prominent notice with each copy of the Combined Work that\n", + " the Library is used in it and that the Library and its use are\n", + " covered by this License.\n", + " \n", + " b) Accompany the Combined Work with a copy of the GNU GPL and this license\n", + " document.\n", + " \n", + " c) For a Combined Work that displays copyright notices during\n", + " execution, include the copyright notice for the Library among\n", + " these notices, as well as a reference directing the user to the\n", + " copies of the GNU GPL and this license document.\n", + " \n", + " d) Do one of the following:\n", + " \n", + " 0) Convey the Minimal Corresponding Source under the terms of this\n", + " License, and the Corresponding Application Code in a form\n", + " suitable for, and under terms that permit, the user to\n", + " recombine or relink the Application with a modified version of\n", + " the Linked Version to produce a modified Combined Work, in the\n", + " manner specified by section 6 of the GNU GPL for conveying\n", + " Corresponding Source.\n", + " \n", + " 1) Use a suitable shared library mechanism for linking with the\n", + " Library. A suitable mechanism is one that (a) uses at run time\n", + " a copy of the Library already present on the user's computer\n", + " system, and (b) will operate properly with a modified version\n", + " of the Library that is interface-compatible with the Linked\n", + " Version.\n", + " \n", + " e) Provide Installation Information, but only if you would otherwise\n", + " be required to provide such information under section 6 of the\n", + " GNU GPL, and only to the extent that such information is\n", + " necessary to install and execute a modified version of the\n", + " Combined Work produced by recombining or relinking the\n", + " Application with a modified version of the Linked Version. (If\n", + " you use option 4d0, the Installation Information must accompany\n", + " the Minimal Corresponding Source and Corresponding Application\n", + " Code. If you use option 4d1, you must provide the Installation\n", + " Information in the manner specified by section 6 of the GNU GPL\n", + " for conveying Corresponding Source.)\n", + " \n", + " 5. Combined Libraries.\n", + " \n", + " You may place library facilities that are a work based on the\n", + " Library side by side in a single library together with other library\n", + " facilities that are not Applications and are not covered by this\n", + " License, and convey such a combined library under terms of your\n", + " choice, if you do both of the following:\n", + " \n", + " a) Accompany the combined library with a copy of the same work based\n", + " on the Library, uncombined with any other library facilities,\n", + " conveyed under the terms of this License.\n", + " \n", + " b) Give prominent notice with the combined library that part of it\n", + " is a work based on the Library, and explaining where to find the\n", + " accompanying uncombined form of the same work.\n", + " \n", + " 6. Revised Versions of the GNU Lesser General Public License.\n", + " \n", + " The Free Software Foundation may publish revised and/or new versions\n", + " of the GNU Lesser General Public License from time to time. Such new\n", + " versions will be similar in spirit to the present version, but may\n", + " differ in detail to address new problems or concerns.\n", + " \n", + " Each version is given a distinguishing version number. If the\n", + " Library as you received it specifies that a certain numbered version\n", + " of the GNU Lesser General Public License \"or any later version\"\n", + " applies to it, you have the option of following the terms and\n", + " conditions either of that published version or of any later version\n", + " published by the Free Software Foundation. If the Library as you\n", + " received it does not specify a version number of the GNU Lesser\n", + " General Public License, you may choose any version of the GNU Lesser\n", + " General Public License ever published by the Free Software Foundation.\n", + " \n", + " If the Library as you received it specifies that a proxy can decide\n", + " whether future versions of the GNU Lesser General Public License shall\n", + " apply, that proxy's public statement of acceptance of any version is\n", + " permanent authorization for you to choose that version for the\n", + " Library.\n", + " \n", + "Location: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages\n", + "Requires: typeguard\n", + "Required-by: deepmd-kit, dpdispatcher, dpgen\n" ] + }, + { + "data": { + "text/html": [ + "\n", + "
{
  \"_comment\": \"that's all\",
  \"model\"model:
type: dict
: {
    \"type_map\"type_map:
type: typing.List[str], optional
A list of strings. Give the name to each type of atoms. It is noted that the number of atom type of training system must be less than 128 in a GPU environment. If not given, type.raw in each system should use the same type indexes, and type_map.raw will take no effect.
: [
     \"H\",
     \"C\"
    ],

    \"descriptor\"descriptor:
type: dict
The descriptor of atomic environment.
: {
      \"type\"type:
type: str
The type of the descritpor. See explanation below.
- loc_frame: Defines a local frame at each atom, and the compute the descriptor as local coordinates under this frame.
- se_e2_a: Used by the smooth edition of Deep Potential. The full relative coordinates are used to construct the descriptor.
- se_e2_r: Used by the smooth edition of Deep Potential. Only the distance between atoms is used to construct the descriptor.
- se_e3: Used by the smooth edition of Deep Potential. The full relative coordinates are used to construct the descriptor. Three-body embedding will be used by this descriptor.
- se_a_tpe: Used by the smooth edition of Deep Potential. The full relative coordinates are used to construct the descriptor. Type embedding will be used by this descriptor.
- se_atten: Used by the smooth edition of Deep Potential. The full relative coordinates are used to construct the descriptor. Attention mechanism will be used by this descriptor.
- se_atten_v2: Used by the smooth edition of Deep Potential. The full relative coordinates are used to construct the descriptor. Attention mechanism with new modifications will be used by this descriptor.
- se_a_mask: Used by the smooth edition of Deep Potential. It can accept a variable number of atoms in a frame (Non-PBC system). aparam are required as an indicator matrix for the real/virtual sign of input atoms.
- hybrid: Concatenate of a list of descriptors as a new descriptor.
: \"se_e2_a\",
      \"sel\"sel:
type: str | typing.List[int], optional, default: auto
This parameter set the number of selected neighbors for each type of atom. It can be:
- List[int]. The length of the list should be the same as the number of atom types in the system. sel[i] gives the selected number of type-i neighbors. sel[i] is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius. It is noted that the total sel value must be less than 4096 in a GPU environment.
- str. Can be \"auto:factor\" or \"auto\". \"factor\" is a float number larger than 1. This option will automatically determine the sel. In detail it counts the maximal number of neighbors with in the cutoff radius for each type of neighbor, then multiply the maximum by the \"factor\". Finally the number is wraped up to 4 divisible. The option \"auto\" is equivalent to \"auto:1.1\".
: \"auto\",
      \"rcut_smth\"rcut_smth:
type: float, optional, default: 0.5
Where to start smoothing. For example the 1/r term is smoothed from rcut to rcut_smth
: 0.5,
      \"rcut\"rcut:
type: float, optional, default: 6.0
The cut-off radius.
: 6.0,
      \"neuron\"neuron:
type: typing.List[int], optional, default: [10, 20, 40]
Number of neurons in each hidden layers of the embedding net. When two layers are of the same size or one layer is twice as large as the previous layer, a skip connection is built.
: [
       25,
       50,
       100
      ],

      \"resnet_dt\"resnet_dt:
type: bool, optional, default: False
Whether to use a \"Timestep\" in the skip connection
: false,
      \"axis_neuron\"axis_neuron:
type: int, optional, default: 4, alias: n_axis_neuron
Size of the submatrix of G (embedding matrix).
: 16,
      \"seed\"seed:
type: NoneType | int, optional
Random seed for parameter initialization
: 1,
      \"_comment\": \" that's all\"
    },
    \"fitting_net\"fitting_net:
type: dict
The fitting of physical properties.
: {
      \"neuron\"neuron:
type: typing.List[int], optional, default: [120, 120, 120], alias: n_neuron
The number of neurons in each hidden layers of the fitting net. When two hidden layers are of the same size, a skip connection is built.
: [
       240,
       240,
       240
      ],

      \"resnet_dt\"resnet_dt:
type: bool, optional, default: True
Whether to use a \"Timestep\" in the skip connection
: true,
      \"seed\"seed:
type: NoneType | int, optional
Random seed for parameter initialization of the fitting net
: 1,
      \"_comment\": \" that's all\"
    },
    \"_comment\": \" that's all\"
  },
  \"learning_rate\"learning_rate:
type: dict, optional
The definitio of learning rate
: {
    \"type\"type:
type: str, default: exp
The type of the learning rate.
: \"exp\",
    \"decay_steps\"decay_steps:
type: int, optional, default: 5000
The learning rate is decaying every this number of training steps.
: 50,
    \"start_lr\"start_lr:
type: float, optional, default: 0.001
The learning rate at the start of the training.
: 0.001,
    \"stop_lr\"stop_lr:
type: float, optional, default: 1e-08
The desired learning rate at the end of the training.
: 3.51e-08,
    \"_comment\": \"that's all\"
  },
  \"loss\"loss:
type: dict, optional
The definition of loss function. The loss type should be set to tensor, ener or left unset.
: {
    \"type\"type:
type: str, default: ener
The type of the loss. When the fitting type is ener, the loss type should be set to ener or left unset. When the fitting type is dipole or polar, the loss type should be set to tensor.
: \"ener\",
    \"start_pref_e\"start_pref_e:
type: float | int, optional, default: 0.02
The prefactor of energy loss at the start of the training. Should be larger than or equal to 0. If set to none-zero value, the energy label should be provided by file energy.npy in each data system. If both start_pref_e and limit_pref_e are set to 0, then the energy will be ignored.
: 0.02,
    \"limit_pref_e\"limit_pref_e:
type: float | int, optional, default: 1.0
The prefactor of energy loss at the limit of the training, Should be larger than or equal to 0. i.e. the training step goes to infinity.
: 1,
    \"start_pref_f\"start_pref_f:
type: float | int, optional, default: 1000
The prefactor of force loss at the start of the training. Should be larger than or equal to 0. If set to none-zero value, the force label should be provided by file force.npy in each data system. If both start_pref_f and limit_pref_f are set to 0, then the force will be ignored.
: 1000,
    \"limit_pref_f\"limit_pref_f:
type: float | int, optional, default: 1.0
The prefactor of force loss at the limit of the training, Should be larger than or equal to 0. i.e. the training step goes to infinity.
: 1,
    \"start_pref_v\"start_pref_v:
type: float | int, optional, default: 0.0
The prefactor of virial loss at the start of the training. Should be larger than or equal to 0. If set to none-zero value, the virial label should be provided by file virial.npy in each data system. If both start_pref_v and limit_pref_v are set to 0, then the virial will be ignored.
: 0,
    \"limit_pref_v\"limit_pref_v:
type: float | int, optional, default: 0.0
The prefactor of virial loss at the limit of the training, Should be larger than or equal to 0. i.e. the training step goes to infinity.
: 0,
    \"_comment\": \" that's all\"
  },
  \"training\"training:
type: dict
The training options.
: {
    \"training_data\"training_data:
type: dict, optional
Configurations of training data.
: {
      \"systems\"systems:
type: str | typing.List[str]
The data systems for training. This key can be provided with a list that specifies the systems, or be provided with a string by which the prefix of all systems are given and the list of the systems is automatically generated.
: [
       \"../00.data/training_data\"
      ],

      \"batch_size\"batch_size:
type: str | typing.List[int] | int, optional, default: auto
This key can be
- list: the length of which is the same as the systems _. The batch size of each system is given by the elements of the list.
- int: all systems _ use the same batch size.
- string \"auto\": automatically determines the batch size so that the batch_size times the number of atoms in the system is no less than 32.
- string \"auto:N\": automatically determines the batch size so that the batch_size times the number of atoms in the system is no less than N.
- string \"mixed:N\": the batch data will be sampled from all systems and merged into a mixed system with the batch size N. Only support the se_atten descriptor.
If MPI is used, the value should be considered as the batch size per task.
: \"auto\",
      \"_comment\": \"that's all\"
    },
    \"validation_data\"validation_data:
type: NoneType | dict, optional, default: None
Configurations of validation data. Similar to that of training data, except that a numb_btch argument may be configured
: {
      \"systems\"systems:
type: str | typing.List[str]
The data systems for validation. This key can be provided with a list that specifies the systems, or be provided with a string by which the prefix of all systems are given and the list of the systems is automatically generated.
: [
       \"../00.data/validation_data\"
      ],

      \"batch_size\"batch_size:
type: str | typing.List[int] | int, optional, default: auto
This key can be
- list: the length of which is the same as the systems _. The batch size of each system is given by the elements of the list.
- int: all systems _ use the same batch size.
- string \"auto\": automatically determines the batch size so that the batch_size times the number of atoms in the system is no less than 32.
- string \"auto:N\": automatically determines the batch size so that the batch_size times the number of atoms in the system is no less than N.
: \"auto\",
      \"numb_btch\"numb_btch:
type: int, optional, default: 1, alias: numb_batch
An integer that specifies the number of batches to be sampled for each validation period.
: 1,
      \"_comment\": \"that's all\"
    },
    \"numb_steps\"numb_steps:
type: int, alias: stop_batch
Number of training batch. Each training uses one batch of data.
: 10000,
    \"seed\"seed:
type: NoneType | int, optional
The random seed for getting frames from the training data set.
: 10,
    \"disp_file\"disp_file:
type: str, optional, default: lcurve.out
The file for printing learning curve.
: \"lcurve.out\",
    \"disp_freq\"disp_freq:
type: int, optional, default: 1000
The frequency of printing learning curve.
: 200,
    \"save_freq\"save_freq:
type: int, optional, default: 1000
The frequency of saving check point.
: 1000,
    \"_comment\": \"that's all\"
  }
}
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "! cd DeePMD-kit_Tutorial/01.train/ && cat input.json" + "# Checke dargs version and Install\n", + "!pip show dargs || pip install --upgrade dargs\n", + "# Show input.json\n", + "from deepmd.utils.argcheck import gen_args\n", + "from dargs.notebook import JSON\n", + "with open(\"./DeePMD-kit_Tutorial/01.train/input.json\") as f:\n", + " JSON(f.read(), gen_args())" ] }, { @@ -636,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 24, "id": "e04a05a3-ccac-474b-bc24-58fbf20b9ffe", "metadata": { "scrolled": true, @@ -652,7 +848,7 @@ "non-resource variables are not supported in the long term\n", "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", "DEEPMD INFO Calculate neighbor statistics... (add --skip-neighbor-stat to skip this step)\n", - "DEEPMD INFO training data with min nbor dist: 1.0495341121569708\n", + "DEEPMD INFO training data with min nbor dist: 1.0460506586976848\n", "DEEPMD INFO training data with max nbor size: [4 1]\n", "DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n", "DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n", @@ -724,41 +920,41 @@ " (it is not differentiable, and manipulates numpy arrays). It drops the\n", " stateful argument making all functions stateful.\n", " \n", - "DEEPMD INFO batch 200 training time 17.40 s, testing time 0.05 s, total wall time 18.58 s\n", - "DEEPMD INFO batch 400 training time 15.71 s, testing time 0.05 s, total wall time 15.89 s\n", - "DEEPMD INFO batch 600 training time 13.96 s, testing time 0.05 s, total wall time 14.12 s\n", - "DEEPMD INFO batch 800 training time 15.35 s, testing time 0.05 s, total wall time 15.52 s\n", - "DEEPMD INFO batch 1000 training time 14.23 s, testing time 0.04 s, total wall time 14.39 s\n", + "DEEPMD INFO batch 200 training time 17.53 s, testing time 0.05 s, total wall time 18.41 s\n", + "DEEPMD INFO batch 400 training time 14.96 s, testing time 0.05 s, total wall time 15.11 s\n", + "DEEPMD INFO batch 600 training time 15.47 s, testing time 0.05 s, total wall time 15.65 s\n", + "DEEPMD INFO batch 800 training time 14.25 s, testing time 0.04 s, total wall time 14.41 s\n", + "DEEPMD INFO batch 1000 training time 15.49 s, testing time 0.05 s, total wall time 15.65 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 1200 training time 15.23 s, testing time 0.04 s, total wall time 16.49 s\n", - "DEEPMD INFO batch 1400 training time 12.84 s, testing time 0.04 s, total wall time 12.99 s\n", - "DEEPMD INFO batch 1600 training time 14.92 s, testing time 0.08 s, total wall time 15.12 s\n", - "DEEPMD INFO batch 1800 training time 15.05 s, testing time 0.05 s, total wall time 15.36 s\n", - "DEEPMD INFO batch 2000 training time 18.45 s, testing time 0.05 s, total wall time 18.63 s\n", + "DEEPMD INFO batch 1200 training time 16.33 s, testing time 0.08 s, total wall time 17.33 s\n", + "DEEPMD INFO batch 1400 training time 14.31 s, testing time 0.05 s, total wall time 14.47 s\n", + "DEEPMD INFO batch 1600 training time 16.54 s, testing time 0.05 s, total wall time 16.72 s\n", + "DEEPMD INFO batch 1800 training time 16.90 s, testing time 0.09 s, total wall time 17.09 s\n", + "DEEPMD INFO batch 2000 training time 17.20 s, testing time 0.06 s, total wall time 17.37 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 2200 training time 16.82 s, testing time 0.05 s, total wall time 17.54 s\n", - "DEEPMD INFO batch 2400 training time 15.95 s, testing time 0.15 s, total wall time 16.21 s\n", - "DEEPMD INFO batch 2600 training time 16.61 s, testing time 0.04 s, total wall time 16.77 s\n", - "DEEPMD INFO batch 2800 training time 16.35 s, testing time 0.05 s, total wall time 16.52 s\n", - "DEEPMD INFO batch 3000 training time 15.06 s, testing time 0.05 s, total wall time 15.23 s\n", + "DEEPMD INFO batch 2200 training time 14.29 s, testing time 0.04 s, total wall time 14.83 s\n", + "DEEPMD INFO batch 2400 training time 13.11 s, testing time 0.04 s, total wall time 13.29 s\n", + "DEEPMD INFO batch 2600 training time 12.93 s, testing time 0.04 s, total wall time 13.08 s\n", + "DEEPMD INFO batch 2800 training time 14.58 s, testing time 0.04 s, total wall time 14.74 s\n", + "DEEPMD INFO batch 3000 training time 13.21 s, testing time 0.04 s, total wall time 13.35 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 3200 training time 16.39 s, testing time 0.05 s, total wall time 16.97 s\n", - "DEEPMD INFO batch 3400 training time 16.54 s, testing time 0.09 s, total wall time 16.76 s\n", - "DEEPMD INFO batch 3600 training time 15.44 s, testing time 0.05 s, total wall time 15.65 s\n", - "DEEPMD INFO batch 3800 training time 17.46 s, testing time 0.05 s, total wall time 17.64 s\n", - "DEEPMD INFO batch 4000 training time 16.75 s, testing time 0.06 s, total wall time 16.93 s\n", + "DEEPMD INFO batch 3200 training time 14.40 s, testing time 0.07 s, total wall time 15.14 s\n", + "DEEPMD INFO batch 3400 training time 13.08 s, testing time 0.04 s, total wall time 13.23 s\n", + "DEEPMD INFO batch 3600 training time 12.93 s, testing time 0.06 s, total wall time 13.13 s\n", + "DEEPMD INFO batch 3800 training time 15.23 s, testing time 0.05 s, total wall time 15.43 s\n", + "DEEPMD INFO batch 4000 training time 13.20 s, testing time 0.04 s, total wall time 13.35 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 4200 training time 15.56 s, testing time 0.05 s, total wall time 16.64 s\n", - "DEEPMD INFO batch 4400 training time 16.32 s, testing time 0.06 s, total wall time 16.49 s\n", - "DEEPMD INFO batch 4600 training time 16.56 s, testing time 0.05 s, total wall time 16.73 s\n", - "DEEPMD INFO batch 4800 training time 15.88 s, testing time 0.05 s, total wall time 16.05 s\n", - "DEEPMD INFO batch 5000 training time 16.26 s, testing time 0.05 s, total wall time 16.43 s\n", + "DEEPMD INFO batch 4200 training time 14.82 s, testing time 0.05 s, total wall time 16.06 s\n", + "DEEPMD INFO batch 4400 training time 14.26 s, testing time 0.05 s, total wall time 14.42 s\n", + "DEEPMD INFO batch 4600 training time 15.50 s, testing time 0.05 s, total wall time 15.66 s\n", + "DEEPMD INFO batch 4800 training time 14.12 s, testing time 0.05 s, total wall time 14.29 s\n", + "DEEPMD INFO batch 5000 training time 15.71 s, testing time 0.05 s, total wall time 15.88 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 5200 training time 17.87 s, testing time 0.05 s, total wall time 18.63 s\n", - "DEEPMD INFO batch 5400 training time 22.08 s, testing time 0.08 s, total wall time 22.33 s\n", - "DEEPMD INFO batch 5600 training time 15.93 s, testing time 0.09 s, total wall time 16.14 s\n", - "DEEPMD INFO batch 5800 training time 14.56 s, testing time 0.05 s, total wall time 14.73 s\n", - "DEEPMD INFO batch 6000 training time 16.01 s, testing time 0.05 s, total wall time 16.19 s\n", + "DEEPMD INFO batch 5200 training time 14.36 s, testing time 0.07 s, total wall time 15.40 s\n", + "DEEPMD INFO batch 5400 training time 15.77 s, testing time 0.05 s, total wall time 15.93 s\n", + "DEEPMD INFO batch 5600 training time 14.12 s, testing time 0.05 s, total wall time 14.29 s\n", + "DEEPMD INFO batch 5800 training time 15.53 s, testing time 0.04 s, total wall time 15.70 s\n", + "DEEPMD INFO batch 6000 training time 15.39 s, testing time 0.09 s, total wall time 15.58 s\n", "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/training/saver.py:1066: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Use standard file APIs to delete files with this prefix.\n", @@ -766,38 +962,38 @@ "Instructions for updating:\n", "Use standard file APIs to delete files with this prefix.\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 6200 training time 14.63 s, testing time 0.05 s, total wall time 15.18 s\n", - "DEEPMD INFO batch 6400 training time 16.34 s, testing time 0.05 s, total wall time 16.55 s\n", - "DEEPMD INFO batch 6600 training time 14.53 s, testing time 0.04 s, total wall time 14.70 s\n", - "DEEPMD INFO batch 6800 training time 16.01 s, testing time 0.04 s, total wall time 16.18 s\n", - "DEEPMD INFO batch 7000 training time 15.53 s, testing time 0.11 s, total wall time 15.77 s\n", + "DEEPMD INFO batch 6200 training time 14.74 s, testing time 0.05 s, total wall time 15.64 s\n", + "DEEPMD INFO batch 6400 training time 15.24 s, testing time 0.09 s, total wall time 15.44 s\n", + "DEEPMD INFO batch 6600 training time 14.29 s, testing time 0.05 s, total wall time 14.48 s\n", + "DEEPMD INFO batch 6800 training time 15.46 s, testing time 0.09 s, total wall time 15.66 s\n", + "DEEPMD INFO batch 7000 training time 15.34 s, testing time 0.05 s, total wall time 15.54 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 7200 training time 15.02 s, testing time 0.05 s, total wall time 15.75 s\n", - "DEEPMD INFO batch 7400 training time 16.69 s, testing time 0.06 s, total wall time 16.89 s\n", - "DEEPMD INFO batch 7600 training time 14.35 s, testing time 0.05 s, total wall time 14.52 s\n", - "DEEPMD INFO batch 7800 training time 16.44 s, testing time 0.05 s, total wall time 16.63 s\n", - "DEEPMD INFO batch 8000 training time 16.67 s, testing time 0.07 s, total wall time 16.86 s\n", + "DEEPMD INFO batch 7200 training time 15.63 s, testing time 0.05 s, total wall time 16.19 s\n", + "DEEPMD INFO batch 7400 training time 14.71 s, testing time 0.06 s, total wall time 14.90 s\n", + "DEEPMD INFO batch 7600 training time 15.96 s, testing time 0.05 s, total wall time 16.12 s\n", + "DEEPMD INFO batch 7800 training time 19.68 s, testing time 0.06 s, total wall time 19.92 s\n", + "DEEPMD INFO batch 8000 training time 15.81 s, testing time 0.07 s, total wall time 16.00 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 8200 training time 15.28 s, testing time 0.05 s, total wall time 16.07 s\n", - "DEEPMD INFO batch 8400 training time 16.78 s, testing time 0.05 s, total wall time 16.95 s\n", - "DEEPMD INFO batch 8600 training time 17.12 s, testing time 0.09 s, total wall time 17.36 s\n", - "DEEPMD INFO batch 8800 training time 15.89 s, testing time 0.05 s, total wall time 16.06 s\n", - "DEEPMD INFO batch 9000 training time 16.76 s, testing time 0.05 s, total wall time 16.97 s\n", + "DEEPMD INFO batch 8200 training time 13.62 s, testing time 0.04 s, total wall time 14.54 s\n", + "DEEPMD INFO batch 8400 training time 13.23 s, testing time 0.04 s, total wall time 13.38 s\n", + "DEEPMD INFO batch 8600 training time 14.90 s, testing time 0.04 s, total wall time 15.08 s\n", + "DEEPMD INFO batch 8800 training time 13.19 s, testing time 0.04 s, total wall time 13.34 s\n", + "DEEPMD INFO batch 9000 training time 13.78 s, testing time 0.09 s, total wall time 14.00 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO batch 9200 training time 16.94 s, testing time 0.05 s, total wall time 17.55 s\n", - "DEEPMD INFO batch 9400 training time 15.52 s, testing time 0.05 s, total wall time 15.70 s\n", - "DEEPMD INFO batch 9600 training time 16.85 s, testing time 0.05 s, total wall time 17.02 s\n", - "DEEPMD INFO batch 9800 training time 17.93 s, testing time 0.05 s, total wall time 18.11 s\n", - "DEEPMD INFO batch 10000 training time 15.91 s, testing time 0.11 s, total wall time 16.16 s\n", + "DEEPMD INFO batch 9200 training time 13.76 s, testing time 0.04 s, total wall time 14.41 s\n", + "DEEPMD INFO batch 9400 training time 13.06 s, testing time 0.04 s, total wall time 13.20 s\n", + "DEEPMD INFO batch 9600 training time 14.23 s, testing time 0.04 s, total wall time 14.42 s\n", + "DEEPMD INFO batch 9800 training time 13.72 s, testing time 0.05 s, total wall time 13.88 s\n", + "DEEPMD INFO batch 10000 training time 13.92 s, testing time 0.09 s, total wall time 14.12 s\n", "DEEPMD INFO saved checkpoint model.ckpt\n", - "DEEPMD INFO average training time: 0.0803 s/batch (exclude first 200 batches)\n", + "DEEPMD INFO average training time: 0.0737 s/batch (exclude first 200 batches)\n", "DEEPMD INFO finished training\n", - "DEEPMD INFO wall time: 822.217 s\n" + "DEEPMD INFO wall time: 756.650 s\n" ] } ], "source": [ - "# ########## Time Warning: 120 secs ##########\n", + "# ########## Time Warning: 120 secs,C32_CPU ; 13 mins ,C2_CPU ##########\n", "! cd DeePMD-kit_Tutorial/01.train/ && dp train input.json" ] }, @@ -866,7 +1062,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 31, "id": "4aabcec8-9058-4582-863d-00550bb05187", "metadata": {}, "outputs": [ @@ -875,9 +1071,9 @@ "output_type": "stream", "text": [ "# step rmse_val rmse_trn rmse_e_val rmse_e_trn rmse_f_val rmse_f_trn lr\n", - "# If there is no available reference data, rmse_*_{val,trn} will print nan\n", - " 9800 2.40e-02 2.82e-02 2.27e-04 3.77e-04 2.35e-02 2.76e-02 4.3e-08\n", - " 10000 3.82e-02 3.02e-02 6.48e-04 3.29e-04 3.75e-02 2.97e-02 3.5e-08\n" + " 0 1.79e+01 2.26e+01 1.35e-01 1.33e-01 5.67e-01 7.15e-01 1.0e-03\n", + " 9800 3.53e-02 2.64e-02 5.75e-04 3.01e-04 3.46e-02 2.59e-02 4.3e-08\n", + " 10000 2.76e-02 2.25e-02 4.83e-04 1.62e-04 2.71e-02 2.21e-02 3.5e-08\n" ] } ], @@ -895,13 +1091,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "id": "a7444fb4-a869-4b44-a1e3-2d74679189ed", "metadata": {}, "outputs": [ { "data": { - "image/png": "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7XZycnIG9RwhhAApjQkhTkJOTo71x+12o2madbujo4OUlBRefPFFlixZQlxcHM8++yy1tbV861vfIi8vD5fLxfTp03n++eeDXje0NDZ27Fjuv/9+rr76apKSkhgzZgxPPvmk9Xhoaez9999H0zT+8Y9/UFxcjMvlYtGiRUFBGsC9995LVlYWSUlJXHvttdxxxx19ZnPq6+u57LLLyMzMJD4+ngkTJvDMM88AUFhYCMDs2bPRNI0lS5ZYz3vmmWeYPHkycXFxTJo0iccee6zHtb/wwgssWrSIuLg4pk6dyvvvvz+g8wohTo4EQkKIIfXjH/+Ym266id27d7N06VI6OjqYO3cur732Gjt37uR73/seV1xxBZ988kmfr/Pwww9TXFzM1q1b+cEPfsD111/Pnj17+nzOXXfdxcMPP8zmzZtxOBxcffXV1mN//vOfue+++3jooYfYsmULY8aM4fHHH+/z9e6++2527drF3//+d3bv3s3jjz9ORkYGABs3bgRg7dq1lJeX89e//hWAp556irvuuov77ruP3bt3c//993P33Xfzxz/+Mei1f/SjH3HrrbeydetWFi1axDe+8Q1qa2v7Pa8Q4iTpQghxCjzzzDO62+22bpeUlOiA/sgjj/T73OXLl+u33nqrdfvss8/Wf/jDH1q3CwoK9Msvv9y67fP59KysLP3xxx8POtfWrVt1Xdf19957Twf0tWvXWs95/fXXdUBvb2/XdV3XFyxYoN9www1B13HGGWfoM2fO7PU6L7zwQv273/1u2MdCr8GUn5+vP/fcc0H3/fznP9cXLlwY9LwHH3zQery7u1vPy8vTH3rooX7PK4Q4OZIREkIMqeLi4qDbXq+X++67jxkzZpCenk5iYiJvv/02R44c6fN1ZsyYYX1vluCqqqoG/JxRo0YBWM/Zu3cv8+fPDzo+9Hao66+/nhdeeIFZs2Zx++23s2HDhj6Pr66upqysjGuuuYbExETrz7333svBgweDjl24cKH1vcPhoLi4mN27d5/QeYUQAyeBkBBiSCUkJATdfvjhh1m1ahW333477777Ltu2bWPp0qV0dXX1+TqhTdaapuHz+Qb8HHOFW+BzQle96f0sol22bBmHDx/m5ptv5vjx45x77rncdtttvR5vnuupp55i27Zt1p+dO3fy8ccf93muwOsb7HmFEAMngZAQIqLWr1/PRRddxOWXX87MmTMZN24c+/fvj/h1TJw40errMW3evLnf52VmZnLVVVfx7LPP8sgjj1hN206nE1AZL1N2djajR4/m0KFDFBUVBf0xm6tNgYGRx+Nhy5YtTJo0qd/zCiFOjiyfF0JEVFFRES+//DIbNmwgNTWVX//611RUVDB58uSIXseNN97IddddR3FxMYsWLWLNmjXs2LGDcePG9fqclStXMnfuXKZOnUpnZyevvfaadd1ZWVnEx8fz5ptvkpeXR1xcHG63m5/85CfcdNNNJCcns2zZMjo7O9m8eTP19fXccsst1ms/+uijTJgwgcmTJ7Nq1Srq6+ut5u6+ziuEODmSERJCRNTdd9/NnDlzWLp0KUuWLCEnJ4cVK1ZE/Douu+wy7rzzTm677TbmzJlDSUkJV111FXFxcb0+x+l0cueddzJjxgwWL16M3W7nhRdeAFRfz29+8xt+//vfk5uby0UXXQTAtddey9NPP83q1auZPn06Z599NqtXr+6REXrwwQd56KGHmDlzJuvXr+fVV1+1Vob1dV4hxMmRydJCCGE4//zzycnJ4U9/+lPEzikTqYUYXlIaE0JEpba2Np544gmWLl2K3W7n+eefZ+3atbzzzjvDfWlCiAiSQEgIEZU0TeONN97g3nvvpbOzk4kTJ/Lyyy9z3nnnDfelCSEiSEpjQgghhIha0iwthBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKglgZAQQgghopYEQkIIIYSIWhIICSGEECJqSSAkhBBCiKj1/wE5Gnyd5rBYFwAAAABJRU5ErkJggg==", + "image/png": "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7Nq1i1WrVlm333777XxSslKuEKL2UwJbk69xw00p5NSBrfYORwghalyV5hECCAoKIigoiHPnzqEoCsHBwTKZohB1jUZLjn8U+oubMJzeAtxr74iEEKJGValFyGw28/bbb+Pp6UloaCghISF4eXnxzjvvYDabbR2jEKIauTe3dI81yttPSnahnaMRQoiaVaUWoddee43//ve/vP/++3Tv3h1VVdmyZQtTpkyhsLCQ9957z9ZxCiGqib7pbRADnTTH2HgyleFRDe0dkhBC1JgqJUKLFi1i/vz51lXnASIjIwkODubpp5+WREiIuqReJAaNEz7mXE4e3g2SCAkhbiFV6hpLT0+nRYsWV2xv0aIF6enpNxyULSUmJtK7d29atWpF27Zt+f777+0dkhC1i86RvIAOAJjPbEFVZbkNIcSto0qJUGRkJLNnz75i++zZs2nbtu0NB2VLOp2OmTNncuTIEdauXcsLL7xAXl6evcMSolZxa2qZKb6l4RDHL+bYORohhKg5Veoamz59OnfddRdr166la9euKIrC1q1bSUxMZOXKlbaO8YbUq1ePevXqARAQEICPjw/p6em4urraOTIhag9dWA/YPJ3OmmP8djyVFkEyMaq9JaVns+4/E9G37M/wYaPsHY4QN60qtQj16tWLEydOMGzYMDIzM0lPT2f48OEcPnyYBQsWVOpaMTExDB48mPr166MoCitWrLjimLlz5xIWFoazszNRUVFs3ry5KmGza9cuzGYzDRtKDYQQZTTohFnRUV9J5+jxw/aORgBHVi/gweLvaX3wA3uHIsRNrcrzCNWvX/+Kouj9+/ezaNEivvzyywpfJy8vj8jISB599FHuvffKOUyWLVvG888/z9y5c+nevTuff/45AwcO5MiRI4SEhAAQFRVFUVHRFeeuXr2a+vXrA3Dp0iUefvhh5s+fX5nHFOLW4KinKKAtLhf3oEvcRqHhLpwdtPaO6kpFORTNvxONyYBDu5EQMQq8Q+0dVbXQnbX8whdovmjnSIS4uVU5EbKVgQMHMnDgwHL3f/zxx4wbN47HH38cgJkzZ7Jq1So+++wzpk2bBsDu3buveY+ioiKGDRvG5MmT6dat23WPvTypys7OruijCFGnOTfpARf30F49yu6zGXQP97N3SFdI3fc7/qmHLG/Wvwvr38XcsAuayNHQaijofewan63kFxlo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RPR53aSkpH6Nw263k5GR0a9zhBACZGpMCHEGMjIyrD/x8fFommbdb21tJSEhgT/+8Y8sW7aMyMhINm3aRFVVFd/4xjfIysoiOjqa2bNn88ILLwRdt/PU2MSJE/nJT37CjTfeSGxsLNnZ2Tz99NPW852nxrZt24amafz1r39l4cKFREdHs3Tp0qAgDeDhhx8mLS2N2NhYbr75Zn7wgx/0ms2pqanh2muvJTU1laioKKZNm8Zzzz0HwKRJkwA455xz0DSNZcuWWec999xzTJ8+ncjISPLz83nqqae6jP3FF19k6dKlREZGMnPmTLZt2xbS6wohzowEQkKIIfX973+fu+66i/3793P55ZfT2trKggULeOONN9i7dy+33nor119/PR999FGv13niiSdYuHAhe/bs4Y477uD222/nwIEDvZ5z//3388QTT7Br1y4cDgc33nij9dwf/vAH1q1bx2OPPcbu3bvJzs5mw4YNvV7vgQceYN++ffzlL39h//79bNiwgZSUFAB27twJwNatWyktLeVPf/oTAM888wz3338/69atY//+/fzkJz/hgQce4He/+13Qtb/3ve9xzz33sGfPHpYuXcpVV11FVVVVn68rhDhDuhBCDILnnntOj4+Pt+4XFhbqgP6LX/yiz3OvuOIK/Z577rHuX3TRRfq//du/WfdzcnL06667zrrv9/v1tLQ0fcOGDUGvtWfPHl3Xdf3dd9/VAX3r1q3WOW+++aYO6C0tLbqu6/rixYv1O++8M2gc5513nj537twex3nllVfq3/rWt7p9rvMYTBMmTNCff/75oMceeughfcmSJUHnPfroo9bzbW1telZWlv7YY4/1+bpCiDMjGSEhxJBauHBh0H2fz8e6deuYM2cOycnJxMTE8Pbbb1NUVNTrdebMmWPdNqfgysvLQz5n3LhxANY5Bw8e5Nxzzw06vvP9zm6//XZefPFF5s2bx7333suOHTt6Pb6iooLi4mJuuukmYmJirD8PP/wwR48eDTp2yZIl1m2Hw8HChQvZv3//gF5XCBE6CYSEEEPK7XYH3X/iiSd48sknuffee3nnnXcoKCjg8ssvx+v19nqdzkXWmqbh9/tDPsdc4RZ4TudVb3ofi2hXrlzJiRMnuPvuuykpKeGSSy5h7dq1PR5vvtYzzzxDQUGB9Wfv3r18+OGHvb5W4Pj6+7pCiNBJICSEGFbbt2/n6quv5rrrrmPu3LlMnjyZw4cPD/s48vLyrLoe065du/o8LzU1ldWrV7Np0yZ+8YtfWEXbTqcTUBkvU3p6OuPHj+fYsWNMnTo16I9ZXG0KDIza29vZvXs3+fn5fb6uEOLMyPJ5IcSwmjp1Kq+88go7duwgMTGRn//855SVlTF9+vRhHcd3vvMdbrnlFhYuXMjSpUt56aWX+Oyzz5g8eXKP5zz44IMsWLCAmTNn4vF4eOONN6xxp6WlERUVxVtvvUVWVhaRkZHEx8fzox/9iLvuuou4uDhWrlyJx+Nh165d1NTUsGbNGuva69evZ9q0aUyfPp0nn3ySmpoaq7i7t9cVQpwZyQgJIYbVAw88wPz587n88stZtmwZGRkZrFq1atjHce2113Lfffexdu1a5s+fT2FhIatXryYyMrLHc5xOJ/fddx9z5szhwgsvxG638+KLLwKqrueXv/wlv/nNb8jMzOTqq68G4Oabb+bZZ59l48aNzJ49m4suuoiNGzd2yQg9+uijPPbYY8ydO5ft27fz+uuvWyvDentdIcSZkc7SQghhuOyyy8jIyOD3v//9sL2mdKQWYmTJ1JgQYkxqbm7m17/+NZdffjl2u50XXniBrVu3smXLlpEemhBiGEkgJIQYkzRNY/PmzTz88MN4PB7y8vJ45ZVXuPTSS0d6aEKIYSRTY0IIIYQYs6RYWgghhBBjlgRCQgghhBizJBASQgghxJglgZAQQgghxiwJhIQQQggxZkkgJIQQQogxSwIhIYQQQoxZEggJIYQQYsySQEgIIYQQY9b/B4R1jQ6pnU84AAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -941,7 +1137,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 33, "id": "b20d368a-135c-4314-ae4c-47bf1f28c4d7", "metadata": { "scrolled": true, @@ -956,8 +1152,8 @@ "Instructions for updating:\n", "non-resource variables are not supported in the long term\n", "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "DEEPMD WARNING The following nodes are not in the graph: {'spin_attr/ntypes_spin', 'fitting_attr/aparam_nall'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n", - "DEEPMD INFO The following nodes will be frozen: ['model_type', 'o_atom_virial', 'fitting_attr/daparam', 'model_attr/model_type', 'model_attr/tmap', 'o_force', 'o_virial', 'descrpt_attr/rcut', 'train_attr/min_nbor_dist', 'fitting_attr/dfparam', 't_mesh', 'o_atom_energy', 'train_attr/training_script', 'descrpt_attr/ntypes', 'o_energy', 'model_attr/model_version']\n", + "DEEPMD WARNING The following nodes are not in the graph: {'fitting_attr/aparam_nall', 'spin_attr/ntypes_spin'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n", + "DEEPMD INFO The following nodes will be frozen: ['descrpt_attr/rcut', 'model_attr/model_version', 'o_atom_virial', 'model_attr/tmap', 'model_attr/model_type', 'o_force', 'o_energy', 'train_attr/min_nbor_dist', 'model_type', 't_mesh', 'fitting_attr/daparam', 'train_attr/training_script', 'fitting_attr/dfparam', 'o_atom_energy', 'descrpt_attr/ntypes', 'o_virial']\n", "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", @@ -1006,7 +1202,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 34, "id": "bb71bdd0", "metadata": {}, "outputs": [ @@ -1014,7 +1210,68 @@ "name": "stdout", "output_type": "stream", "text": [ - "zsh:cd:1: no such file or directory: DeePMD-kit_Tutorial/01.train.finished/\n" + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/compat/v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "non-resource variables are not supported in the long term\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "DEEPMD INFO \n", + "\n", + "\n", + "DEEPMD INFO stage 1: compress the model\n", + "DEEPMD INFO _____ _____ __ __ _____ _ _ _ \n", + "DEEPMD INFO | __ \\ | __ \\ | \\/ || __ \\ | | (_)| | \n", + "DEEPMD INFO | | | | ___ ___ | |__) || \\ / || | | | ______ | | __ _ | |_ \n", + "DEEPMD INFO | | | | / _ \\ / _ \\| ___/ | |\\/| || | | ||______|| |/ /| || __|\n", + "DEEPMD INFO | |__| || __/| __/| | | | | || |__| | | < | || |_ \n", + "DEEPMD INFO |_____/ \\___| \\___||_| |_| |_||_____/ |_|\\_\\|_| \\__|\n", + "DEEPMD INFO Please read and cite:\n", + "DEEPMD INFO Wang, Zhang, Han and E, Comput.Phys.Comm. 228, 178-184 (2018)\n", + "DEEPMD INFO Zeng et al, J. Chem. Phys., 159, 054801 (2023)\n", + "DEEPMD INFO See https://deepmd.rtfd.io/credits/ for details.\n", + "DEEPMD INFO installed to: /root/miniconda3/envs/deepmd\n", + "DEEPMD INFO source : v2.2.7\n", + "DEEPMD INFO source brach: HEAD\n", + "DEEPMD INFO source commit: 839f4fe7\n", + "DEEPMD INFO source commit at: 2023-10-27 21:10:24 +0800\n", + "DEEPMD INFO build float prec: double\n", + "DEEPMD INFO build variant: cpu\n", + "DEEPMD INFO build with tf inc: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/include;/root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/../../../../include\n", + "DEEPMD INFO build with tf lib: \n", + "DEEPMD INFO ---Summary of the training---------------------------------------\n", + "DEEPMD INFO running on: bohrium-21213-1088639\n", + "DEEPMD INFO computing device: cpu:0\n", + "DEEPMD INFO Count of visible GPU: 0\n", + "DEEPMD INFO num_intra_threads: 0\n", + "DEEPMD INFO num_inter_threads: 0\n", + "DEEPMD INFO -----------------------------------------------------------------\n", + "DEEPMD INFO training without frame parameter\n", + "DEEPMD INFO training data with lower boundary: [-0.92929175 -0.99957951]\n", + "DEEPMD INFO training data with upper boundary: [1.97058099 1.10195361]\n", + "DEEPMD INFO built lr\n", + "DEEPMD INFO built network\n", + "DEEPMD INFO built training\n", + "WARNING:root:To get the best performance, it is recommended to adjust the number of threads by setting the environment variables OMP_NUM_THREADS, TF_INTRA_OP_PARALLELISM_THREADS, and TF_INTER_OP_PARALLELISM_THREADS. See https://deepmd.rtfd.io/parallelism/ for more information.\n", + "DEEPMD INFO initialize model from scratch\n", + "DEEPMD INFO finished compressing\n", + "DEEPMD INFO \n", + "\n", + "\n", + "DEEPMD INFO stage 2: freeze the model\n", + "DEEPMD WARNING The following nodes are not in the graph: {'spin_attr/ntypes_spin', 'fitting_attr/aparam_nall'}. Skip freezeing these nodes. You may be freezing a checkpoint generated by an old version.\n", + "DEEPMD INFO The following nodes will be frozen: ['train_attr/min_nbor_dist', 'o_energy', 'descrpt_attr/rcut', 'o_force', 'model_type', 'fitting_attr/daparam', 'model_attr/tmap', 'o_atom_energy', 'descrpt_attr/ntypes', 'o_virial', 't_mesh', 'model_attr/model_type', 'fitting_attr/dfparam', 'o_atom_virial', 'train_attr/training_script', 'model_attr/model_version']\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/entrypoints/freeze.py:370: convert_variables_to_constants (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.convert_variables_to_constants`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", + "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/tensorflow/python/framework/convert_to_constants.py:925: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", + "Instructions for updating:\n", + "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", + "DEEPMD INFO 858 ops in the final graph.\n" ] } ], @@ -1035,7 +1292,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 35, "id": "5d201246-b110-4e63-a09b-ad7308bc1367", "metadata": { "scrolled": true, @@ -1060,16 +1317,16 @@ "DEEPMD INFO # ---------------output of dp test--------------- \n", "DEEPMD INFO # testing system : ../00.data/validation_data\n", "DEEPMD INFO # number of test data : 40 \n", - "DEEPMD INFO Energy MAE : 1.947297e-03 eV\n", - "DEEPMD INFO Energy RMSE : 2.568049e-03 eV\n", - "DEEPMD INFO Energy MAE/Natoms : 3.894594e-04 eV\n", - "DEEPMD INFO Energy RMSE/Natoms : 5.136098e-04 eV\n", - "DEEPMD INFO Force MAE : 2.478063e-02 eV/A\n", - "DEEPMD INFO Force RMSE : 3.354447e-02 eV/A\n", - "DEEPMD INFO Virial MAE : 2.883222e-02 eV\n", - "DEEPMD INFO Virial RMSE : 4.083024e-02 eV\n", - "DEEPMD INFO Virial MAE/Natoms : 5.766444e-03 eV\n", - "DEEPMD INFO Virial RMSE/Natoms : 8.166047e-03 eV\n", + "DEEPMD INFO Energy MAE : 1.473845e-03 eV\n", + "DEEPMD INFO Energy RMSE : 2.007936e-03 eV\n", + "DEEPMD INFO Energy MAE/Natoms : 2.947689e-04 eV\n", + "DEEPMD INFO Energy RMSE/Natoms : 4.015871e-04 eV\n", + "DEEPMD INFO Force MAE : 2.146239e-02 eV/A\n", + "DEEPMD INFO Force RMSE : 2.748797e-02 eV/A\n", + "DEEPMD INFO Virial MAE : 2.879183e-02 eV\n", + "DEEPMD INFO Virial RMSE : 3.817983e-02 eV\n", + "DEEPMD INFO Virial MAE/Natoms : 5.758366e-03 eV\n", + "DEEPMD INFO Virial RMSE/Natoms : 7.635965e-03 eV\n", "DEEPMD INFO # ----------------------------------------------- \n" ] } @@ -1088,7 +1345,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 36, "id": "be03c8da-e4f9-439d-bb22-800b651a7737", "metadata": {}, "outputs": [ @@ -1121,10 +1378,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-03-19 19:42:27.272130: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", + "2024-03-24 23:05:17.177887: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2024-03-19 19:42:27.275152: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", - "2024-03-19 19:42:27.294336: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", + "2024-03-24 23:05:17.179243: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", + "2024-03-24 23:05:17.197330: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Use `tf.config.list_physical_devices('GPU')` instead.\n", @@ -1143,7 +1400,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 37, "id": "b4005a62-8bf2-4aaf-8865-20ea303ea0f2", "metadata": {}, "outputs": [ @@ -1153,13 +1410,13 @@ "[]" ] }, - "execution_count": 17, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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R+Pdd9/F8OHDayxxYWVlhbfeegvvvvsuIiMjkZiYiNDQUBQXF2PatGl631OV4uJiyOVyZGRk4MSJE3jvvfcwffp0vPXWWwgMDDT4fERUv5iYEVGzExkZCScnJ7XXwIED9T7e2dkZx44dg0KhQFBQEHr27IlZs2bBxsYGJia6vzY9PDywY8cO7Ny5E48//jjWrVuneirzwTpq06ZNQ1lZGaZOnVprPJ988glefvllvPbaa+jduzdSUlKwf/9+tRIg+vr666/h5OQET09PvPTSS0hMTMRPP/2EL7/80uBzEVH9kwhtEyCIiKheLFmyBOvXr8f169fVtv/www+YNWsWsrKyGrUwLREZF07+JyKqR19++SX69u2L9u3b49ixY1ixYgXCwsJU+4uLi5GWloZly5bhzTffZFJGRGo4lElEVI8uX76MF154Ad7e3vj4448xZ84cLFy4ULX/008/hY+PDxwcHPD+++83XqBEZJQ4lElERERkJNhjRkRERGQkmJgRERERGQkmZkRERERGgokZERERkZFgYkZERERkJJiYERERERkJJmZERERERoKJGREREZGR+H8cxFdDsJVYbgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1194,7 +1451,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 38, "id": "d0ceac75-9753-4ae8-b954-c2cc6d005e46", "metadata": {}, "outputs": [ @@ -1207,9 +1464,10 @@ "├── \u001b[01;32mch4.dump\u001b[0m\n", "├── \u001b[01;32mconf.lmp\u001b[0m\n", "├── \u001b[01;32mgraph.pb\u001b[0m\n", - "└── \u001b[01;32min.lammps\u001b[0m\n", + "├── \u001b[01;32min.lammps\u001b[0m\n", + "└── \u001b[00mlog.lammps\u001b[0m\n", "\n", - "0 directories, 4 files\n" + "0 directories, 5 files\n" ] } ], @@ -1239,7 +1497,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 39, "id": "f4501e9c-541c-431d-8847-d0d9eecfb0e0", "metadata": { "scrolled": true @@ -1258,7 +1516,7 @@ " 1 by 1 by 1 MPI processor grid\n", " reading atoms ...\n", " 5 atoms\n", - " read_data CPU = 0.011 seconds\n", + " read_data CPU = 0.002 seconds\n", "DeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", "Summary of lammps deepmd module ...\n", " >>> Info of deepmd-kit:\n", @@ -1275,10 +1533,10 @@ " set tf inter_op_parallelism_threads: 0\n", " >>> Info of lammps module:\n", " use deepmd-kit at: /root/miniconda3/envs/deepmdDeePMD-kit WARNING: Environmental variable OMP_NUM_THREADS is not set. Tune OMP_NUM_THREADS for the best performance. See https://deepmd.rtfd.io/parallelism/ for more information.\n", - "2024-03-19 19:42:31.143521: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", + "2024-03-24 23:05:49.768736: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2024-03-19 19:42:31.150107: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", - "2024-03-19 19:42:31.217323: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", + "2024-03-24 23:05:49.770401: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.\n", + "2024-03-24 23:05:49.817983: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled\n", "INVALID_ARGUMENT: Tensor spin_attr/ntypes_spin:0, specified in either feed_devices or fetch_devices was not found in the Graph\n", " >>> Info of model(s):\n", " using 1 model(s): graph.pb \n", @@ -1312,71 +1570,71 @@ " Time step : 0.001\n", "Per MPI rank memory allocation (min/avg/max) = 2.559 | 2.559 | 2.559 Mbytes\n", " Step PotEng KinEng TotEng Temp Press Volume \n", - " 0 -219.77406 0.025852029 -219.74821 50 -779.25188 1060.5429 \n", - " 100 -219.7691 0.020797437 -219.7483 40.223994 -637.14305 1060.5429 \n", - " 200 -219.77444 0.024939285 -219.7495 48.234676 -320.40098 1060.5429 \n", - " 300 -219.78439 0.033072979 -219.75132 63.965925 43.026442 1060.5429 \n", - " 400 -219.78739 0.034550668 -219.75284 66.823899 351.67696 1060.5429 \n", - " 500 -219.78236 0.028176993 -219.75419 54.496675 666.75737 1060.5429 \n", - " 600 -219.78253 0.025728877 -219.7568 49.761815 711.163 1060.5429 \n", - " 700 -219.78894 0.028382389 -219.76055 54.893929 479.13643 1060.5429 \n", - " 800 -219.78903 0.024859643 -219.76417 48.080642 83.077656 1060.5429 \n", - " 900 -219.78291 0.015448216 -219.76746 29.878151 -300.47299 1060.5429 \n", - " 1000 -219.78076 0.009958727 -219.7708 19.261016 -547.51181 1060.5429 \n", - " 1100 -219.78482 0.010708236 -219.77412 20.710629 -528.61764 1060.5429 \n", - " 1200 -219.79088 0.014010222 -219.77687 27.096949 -271.00462 1060.5429 \n", - " 1300 -219.79342 0.014851244 -219.77856 28.723555 113.17225 1060.5429 \n", - " 1400 -219.79258 0.013154759 -219.77943 25.442411 429.376 1060.5429 \n", - " 1500 -219.79351 0.013439034 -219.78007 25.992223 502.07008 1060.5429 \n", - " 1600 -219.79556 0.015244258 -219.78032 29.483679 283.58943 1060.5429 \n", - " 1700 -219.79243 0.012780435 -219.77965 24.718437 -118.65863 1060.5429 \n", - " 1800 -219.78753 0.0093475149 -219.77818 18.078881 -440.59299 1060.5429 \n", - " 1900 -219.78644 0.010485894 -219.77595 20.280601 -548.35192 1060.5429 \n", - " 2000 -219.78657 0.014291536 -219.77228 27.641033 -379.53425 1060.5429 \n", - " 2100 -219.78582 0.019271324 -219.76655 37.272363 3.8622352 1060.5429 \n", - " 2200 -219.78342 0.023480599 -219.75994 45.413455 421.70988 1060.5429 \n", - " 2300 -219.7843 0.029382788 -219.75492 56.828785 667.59953 1060.5429 \n", - " 2400 -219.78777 0.035686462 -219.75209 69.020621 708.56999 1060.5429 \n", - " 2500 -219.78484 0.034331665 -219.75051 66.400331 560.05263 1060.5429 \n", - " 2600 -219.781 0.031551297 -219.74945 61.022863 272.92453 1060.5429 \n", - " 2700 -219.77767 0.028694937 -219.74898 55.498424 -150.97111 1060.5429 \n", - " 2800 -219.77576 0.026724406 -219.74903 51.68725 -531.59493 1060.5429 \n", - " 2900 -219.77353 0.02427308 -219.74926 46.946179 -733.24223 1060.5429 \n", - " 3000 -219.77341 0.023395232 -219.75001 45.248349 -706.66882 1060.5429 \n", - " 3100 -219.77969 0.028192211 -219.7515 54.526108 -543.66237 1060.5429 \n", - " 3200 -219.78698 0.033417316 -219.75356 64.631901 -242.21772 1060.5429 \n", - " 3300 -219.79019 0.034565479 -219.75562 66.852545 120.70082 1060.5429 \n", - " 3400 -219.78417 0.026911374 -219.75726 52.048862 557.3674 1060.5429 \n", - " 3500 -219.77449 0.01580688 -219.75868 30.571837 766.81564 1060.5429 \n", - " 3600 -219.77669 0.015991276 -219.7607 30.928474 683.18009 1060.5429 \n", - " 3700 -219.78572 0.022618548 -219.7631 43.746176 290.23355 1060.5429 \n", - " 3800 -219.79279 0.027795739 -219.76499 53.759299 -181.24253 1060.5429 \n", - " 3900 -219.78826 0.022283131 -219.76598 43.097451 -515.8167 1060.5429 \n", - " 4000 -219.78236 0.015546589 -219.76681 30.068411 -608.47483 1060.5429 \n", - " 4100 -219.7863 0.018324324 -219.76797 35.440785 -500.82916 1060.5429 \n", - " 4200 -219.79138 0.022304319 -219.76908 43.138431 -200.46212 1060.5429 \n", - " 4300 -219.78855 0.019344221 -219.7692 37.413352 235.01595 1060.5429 \n", - " 4400 -219.78187 0.013421854 -219.76845 25.958995 569.04151 1060.5429 \n", - " 4500 -219.77866 0.011098531 -219.76756 21.465493 679.98587 1060.5429 \n", - " 4600 -219.78476 0.018276314 -219.76649 35.347929 462.8788 1060.5429 \n", - " 4700 -219.79061 0.026535396 -219.76407 51.321689 -44.12474 1060.5429 \n", - " 4800 -219.78698 0.027259367 -219.75972 52.721911 -476.42292 1060.5429 \n", - " 4900 -219.77955 0.025502005 -219.75405 49.323023 -698.38931 1060.5429 \n", - " 5000 -219.77457 0.026622642 -219.74795 51.49043 -707.85111 1060.5429 \n", - "Loop time of 44.1004 on 1 procs for 5000 steps with 5 atoms\n", + " 0 -219.77409 0.025852029 -219.74824 50 -799.80566 1060.5429 \n", + " 100 -219.77101 0.02250472 -219.7485 43.526023 -563.15562 1060.5429 \n", + " 200 -219.77525 0.025722761 -219.74953 49.749984 -55.768826 1060.5429 \n", + " 300 -219.78111 0.030123111 -219.75098 58.260632 415.50143 1060.5429 \n", + " 400 -219.78545 0.03264184 -219.7528 63.132067 724.77655 1060.5429 \n", + " 500 -219.7897 0.034591934 -219.75511 66.903712 664.01323 1060.5429 \n", + " 600 -219.78944 0.031599794 -219.75784 61.116661 307.82983 1060.5429 \n", + " 700 -219.78389 0.023121639 -219.76076 44.719197 -166.66606 1060.5429 \n", + " 800 -219.77712 0.013122374 -219.764 25.379775 -493.10259 1060.5429 \n", + " 900 -219.7791 0.011293959 -219.76781 21.843468 -609.86395 1060.5429 \n", + " 1000 -219.78712 0.01531002 -219.77181 29.610866 -422.5828 1060.5429 \n", + " 1100 -219.7939 0.018709632 -219.77519 36.186003 -61.443156 1060.5429 \n", + " 1200 -219.79395 0.016606919 -219.77734 32.11918 331.62678 1060.5429 \n", + " 1300 -219.79132 0.012642575 -219.77868 24.451803 505.6361 1060.5429 \n", + " 1400 -219.79314 0.013255468 -219.77989 25.637191 381.73541 1060.5429 \n", + " 1500 -219.79509 0.014397006 -219.78069 27.845022 48.696022 1060.5429 \n", + " 1600 -219.79313 0.012485864 -219.78064 24.148711 -302.67659 1060.5429 \n", + " 1700 -219.78841 0.0085717658 -219.77983 16.578516 -476.08062 1060.5429 \n", + " 1800 -219.78663 0.0081557171 -219.77847 15.773843 -407.83792 1060.5429 \n", + " 1900 -219.78715 0.010996426 -219.77615 21.268013 -98.699573 1060.5429 \n", + " 2000 -219.78836 0.016278673 -219.77209 31.484324 293.02315 1060.5429 \n", + " 2100 -219.78819 0.022161035 -219.76603 42.861306 587.40225 1060.5429 \n", + " 2200 -219.79165 0.031838471 -219.75981 61.578284 543.58893 1060.5429 \n", + " 2300 -219.79343 0.038239208 -219.75519 73.957846 104.54643 1060.5429 \n", + " 2400 -219.78301 0.031060153 -219.75195 60.072951 -293.72903 1060.5429 \n", + " 2500 -219.77209 0.022352657 -219.74974 43.231919 -606.61353 1060.5429 \n", + " 2600 -219.76604 0.017305685 -219.74873 33.47065 -623.66583 1060.5429 \n", + " 2700 -219.77552 0.026563069 -219.74895 51.375211 -332.34033 1060.5429 \n", + " 2800 -219.78594 0.0362724 -219.74967 70.153875 120.73427 1060.5429 \n", + " 2900 -219.78868 0.038558744 -219.75012 74.575856 542.93567 1060.5429 \n", + " 3000 -219.78351 0.03281317 -219.75069 63.463433 746.24646 1060.5429 \n", + " 3100 -219.78106 0.028937414 -219.75212 55.967395 583.87016 1060.5429 \n", + " 3200 -219.77929 0.025275432 -219.75402 48.884814 128.24387 1060.5429 \n", + " 3300 -219.77781 0.022017978 -219.75579 42.584622 -395.55332 1060.5429 \n", + " 3400 -219.77696 0.019305132 -219.75765 37.33775 -679.74745 1060.5429 \n", + " 3500 -219.78369 0.023714356 -219.75997 45.86556 -656.9891 1060.5429 \n", + " 3600 -219.79244 0.030071312 -219.76237 58.160448 -354.34542 1060.5429 \n", + " 3700 -219.79168 0.027557568 -219.76412 53.298657 199.00964 1060.5429 \n", + " 3800 -219.78639 0.021137515 -219.76525 40.881734 596.54224 1060.5429 \n", + " 3900 -219.77923 0.012972221 -219.76626 25.089367 713.41996 1060.5429 \n", + " 4000 -219.78185 0.014202505 -219.76765 27.46884 430.83529 1060.5429 \n", + " 4100 -219.78477 0.016041208 -219.76872 31.025047 -28.605377 1060.5429 \n", + " 4200 -219.78545 0.016332231 -219.76912 31.587909 -457.5328 1060.5429 \n", + " 4300 -219.78602 0.016882726 -219.76914 32.652612 -608.55966 1060.5429 \n", + " 4400 -219.78949 0.020680419 -219.76881 39.99767 -456.72943 1060.5429 \n", + " 4500 -219.79121 0.023411938 -219.7678 45.280658 -79.406734 1060.5429 \n", + " 4600 -219.7882 0.022574198 -219.76562 43.660398 414.11955 1060.5429 \n", + " 4700 -219.78521 0.022736692 -219.76248 43.974676 663.73939 1060.5429 \n", + " 4800 -219.7834 0.025050214 -219.75835 48.449222 598.39611 1060.5429 \n", + " 4900 -219.78291 0.030199797 -219.75271 58.408949 203.75805 1060.5429 \n", + " 5000 -219.77611 0.030245158 -219.74586 58.496682 -300.80549 1060.5429 \n", + "Loop time of 38.8363 on 1 procs for 5000 steps with 5 atoms\n", "\n", - "Performance: 9.796 ns/day, 2.450 hours/ns, 113.378 timesteps/s, 566.888 atom-step/s\n", - "94.5% CPU use with 1 MPI tasks x 1 OpenMP threads\n", + "Performance: 11.124 ns/day, 2.158 hours/ns, 128.746 timesteps/s, 643.728 atom-step/s\n", + "104.3% CPU use with 1 MPI tasks x 1 OpenMP threads\n", "\n", "MPI task timing breakdown:\n", "Section | min time | avg time | max time |%varavg| %total\n", "---------------------------------------------------------------\n", - "Pair | 43.95 | 43.95 | 43.95 | 0.0 | 99.66\n", - "Neigh | 0.008028 | 0.008028 | 0.008028 | 0.0 | 0.02\n", - "Comm | 0.0354 | 0.0354 | 0.0354 | 0.0 | 0.08\n", - "Output | 0.0056147 | 0.0056147 | 0.0056147 | 0.0 | 0.01\n", - "Modify | 0.085761 | 0.085761 | 0.085761 | 0.0 | 0.19\n", - "Other | | 0.0159 | | | 0.04\n", + "Pair | 38.703 | 38.703 | 38.703 | 0.0 | 99.66\n", + "Neigh | 0.0079815 | 0.0079815 | 0.0079815 | 0.0 | 0.02\n", + "Comm | 0.0334 | 0.0334 | 0.0334 | 0.0 | 0.09\n", + "Output | 0.0065195 | 0.0065195 | 0.0065195 | 0.0 | 0.02\n", + "Modify | 0.070599 | 0.070599 | 0.070599 | 0.0 | 0.18\n", + "Other | | 0.01491 | | | 0.04\n", "\n", "Nlocal: 5 ave 5 max 5 min\n", "Histogram: 1 0 0 0 0 0 0 0 0 0\n", @@ -1391,7 +1649,7 @@ "Ave neighs/atom = 4\n", "Neighbor list builds = 500\n", "Dangerous builds not checked\n", - "Total wall time: 0:00:45\n" + "Total wall time: 0:00:39\n" ] } ], @@ -1416,7 +1674,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.13" } }, "nbformat": 4, From 4b83516e4b1f57368b4ea65051af6d4f52e77ca4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 24 Mar 2024 16:30:01 +0000 Subject: [PATCH 05/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index c15a4ebc63..b99003dddb 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -154,7 +154,7 @@ " if not os.path.isfile(local_zip_path):\n", " print(\"Downloading dataset...\")\n", " !wget -q -O {local_zip_path} {dataset_url}\n", - " \n", + "\n", " print(\"Extracting dataset...\")\n", " !unzip -q -n {local_zip_path} -d {extract_path}\n", "else:\n", @@ -718,8 +718,9 @@ "# Show input.json\n", "from deepmd.utils.argcheck import gen_args\n", "from dargs.notebook import JSON\n", + "\n", "with open(\"./DeePMD-kit_Tutorial/01.train/input.json\") as f:\n", - " JSON(f.read(), gen_args())" + " JSON(f.read(), gen_args())" ] }, { From 0d73c9b77230fb50493042f9e7e9cfd9f5255a9f Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Tue, 26 Mar 2024 12:24:41 +0800 Subject: [PATCH 06/15] Fix Open in Bohrium URL & Delete Reference in content. --- doc/getting-started/quick_start.ipynb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index b99003dddb..6ca2fd9377 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -13,7 +13,7 @@ "id": "7a41db5f", "metadata": {}, "source": [ - "\"Open" + "\"Open" ] }, { @@ -27,7 +27,7 @@ " 📖 Getting Started Guide
\n", " Licensing Agreement: This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

\n", " This document can be executed directly on the Bohrium Notebook. To begin,you can click the Open in Bohrium button above to quickly run this document in Bohrium.

\n", - " After opening Bohrium Notebook, click the button connect .We have already set up the recommended image DeePMD-kit:2.2.1-cuda11.6-notebook and the recommended machine type c32_m64_cpu for you.\n", + " After opening Bohrium Notebook, click the button connect .We have already set up the recommended image and the recommended machine type for you.\n", "

\n", "
" ] @@ -80,8 +80,7 @@ " * [4. Freeze a model](#freezeamodel)\n", " * [5. Compress a model](#compressamodel)\n", " * [6. Test a model](#testamodel)\n", - " * [7. Run MD with LAMMPS](#lammpsmd)\n", - "* [References](#references)\n" + " * [7. Run MD with LAMMPS](#lammpsmd)\n" ] }, { @@ -154,7 +153,7 @@ " if not os.path.isfile(local_zip_path):\n", " print(\"Downloading dataset...\")\n", " !wget -q -O {local_zip_path} {dataset_url}\n", - "\n", + " \n", " print(\"Extracting dataset...\")\n", " !unzip -q -n {local_zip_path} -d {extract_path}\n", "else:\n", @@ -718,9 +717,8 @@ "# Show input.json\n", "from deepmd.utils.argcheck import gen_args\n", "from dargs.notebook import JSON\n", - "\n", "with open(\"./DeePMD-kit_Tutorial/01.train/input.json\") as f:\n", - " JSON(f.read(), gen_args())" + " JSON(f.read(), gen_args())" ] }, { @@ -1386,7 +1384,7 @@ "WARNING:tensorflow:From /root/miniconda3/envs/deepmd/lib/python3.10/site-packages/deepmd/utils/batch_size.py:62: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Use `tf.config.list_physical_devices('GPU')` instead.\n", - "WARNING:deepmd.tf.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n" + "WARNING:deepmd.utils.batch_size:You can use the environment variable DP_INFER_BATCH_SIZE tocontrol the inference batch size (nframes * natoms). The default value is 1024.\n" ] } ], From 1cff7d3f43a3734b3f0157ba9963df2d496c5d8e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 04:25:22 +0000 Subject: [PATCH 07/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 6ca2fd9377..ce95eb9087 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -153,7 +153,7 @@ " if not os.path.isfile(local_zip_path):\n", " print(\"Downloading dataset...\")\n", " !wget -q -O {local_zip_path} {dataset_url}\n", - " \n", + "\n", " print(\"Extracting dataset...\")\n", " !unzip -q -n {local_zip_path} -d {extract_path}\n", "else:\n", @@ -717,8 +717,9 @@ "# Show input.json\n", "from deepmd.utils.argcheck import gen_args\n", "from dargs.notebook import JSON\n", + "\n", "with open(\"./DeePMD-kit_Tutorial/01.train/input.json\") as f:\n", - " JSON(f.read(), gen_args())" + " JSON(f.read(), gen_args())" ] }, { From 6cda69169522e855cf1dadfa707e0530f23a998e Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Tue, 26 Mar 2024 19:59:09 +0800 Subject: [PATCH 08/15] Replace legacy call with --- doc/getting-started/quick_start.ipynb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 6ca2fd9377..9c4f2ee3c0 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 2, "id": "125c96ef", "metadata": {}, "outputs": [ @@ -267,7 +267,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 4, "id": "b5fbc838", "metadata": {}, "outputs": [ @@ -290,7 +290,8 @@ "print(\"# the data contains %d frames\" % len(data))\n", "\n", "# random choose 40 index for validation_data\n", - "index_validation = np.random.choice(201, size=40, replace=False)\n", + "rng = np.random.default_rng()\n", + "index_validation = rng.choice(201, size=40, replace=False)\n", "\n", "# other indexes are training_data\n", "index_training = list(set(range(201)) - set(index_validation))\n", From 356dd0207e352ea6380ee2d638afaa294b749b35 Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Tue, 26 Mar 2024 20:30:57 +0800 Subject: [PATCH 09/15] Remove pip show dargs output --- doc/getting-started/quick_start.ipynb | 198 ++------------------------ 1 file changed, 13 insertions(+), 185 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index e730a1c57a..e6bae42229 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -458,191 +458,21 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, + "id": "749c24f4", + "metadata": {}, + "outputs": [], + "source": [ + "# Checke dargs version and Install\n", + "!pip show dargs || pip install --upgrade dargs" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "id": "995c0b91", "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Name: dargs\n", - "Version: 0.4.4\n", - "Summary: Process arguments for the deep modeling project.\n", - "Home-page: \n", - "Author: DeepModeling\n", - "Author-email: Yixiao Chen \n", - "License: GNU LESSER GENERAL PUBLIC LICENSE\n", - " Version 3, 29 June 2007\n", - " \n", - " Copyright (C) 2007 Free Software Foundation, Inc. \n", - " Everyone is permitted to copy and distribute verbatim copies\n", - " of this license document, but changing it is not allowed.\n", - " \n", - " \n", - " This version of the GNU Lesser General Public License incorporates\n", - " the terms and conditions of version 3 of the GNU General Public\n", - " License, supplemented by the additional permissions listed below.\n", - " \n", - " 0. Additional Definitions.\n", - " \n", - " As used herein, \"this License\" refers to version 3 of the GNU Lesser\n", - " General Public License, and the \"GNU GPL\" refers to version 3 of the GNU\n", - " General Public License.\n", - " \n", - " \"The Library\" refers to a covered work governed by this License,\n", - " other than an Application or a Combined Work as defined below.\n", - " \n", - " An \"Application\" is any work that makes use of an interface provided\n", - " by the Library, but which is not otherwise based on the Library.\n", - " Defining a subclass of a class defined by the Library is deemed a mode\n", - " of using an interface provided by the Library.\n", - " \n", - " A \"Combined Work\" is a work produced by combining or linking an\n", - " Application with the Library. The particular version of the Library\n", - " with which the Combined Work was made is also called the \"Linked\n", - " Version\".\n", - " \n", - " The \"Minimal Corresponding Source\" for a Combined Work means the\n", - " Corresponding Source for the Combined Work, excluding any source code\n", - " for portions of the Combined Work that, considered in isolation, are\n", - " based on the Application, and not on the Linked Version.\n", - " \n", - " The \"Corresponding Application Code\" for a Combined Work means the\n", - " object code and/or source code for the Application, including any data\n", - " and utility programs needed for reproducing the Combined Work from the\n", - " Application, but excluding the System Libraries of the Combined Work.\n", - " \n", - " 1. Exception to Section 3 of the GNU GPL.\n", - " \n", - " You may convey a covered work under sections 3 and 4 of this License\n", - " without being bound by section 3 of the GNU GPL.\n", - " \n", - " 2. Conveying Modified Versions.\n", - " \n", - " If you modify a copy of the Library, and, in your modifications, a\n", - " facility refers to a function or data to be supplied by an Application\n", - " that uses the facility (other than as an argument passed when the\n", - " facility is invoked), then you may convey a copy of the modified\n", - " version:\n", - " \n", - " a) under this License, provided that you make a good faith effort to\n", - " ensure that, in the event an Application does not supply the\n", - " function or data, the facility still operates, and performs\n", - " whatever part of its purpose remains meaningful, or\n", - " \n", - " b) under the GNU GPL, with none of the additional permissions of\n", - " this License applicable to that copy.\n", - " \n", - " 3. Object Code Incorporating Material from Library Header Files.\n", - " \n", - " The object code form of an Application may incorporate material from\n", - " a header file that is part of the Library. You may convey such object\n", - " code under terms of your choice, provided that, if the incorporated\n", - " material is not limited to numerical parameters, data structure\n", - " layouts and accessors, or small macros, inline functions and templates\n", - " (ten or fewer lines in length), you do both of the following:\n", - " \n", - " a) Give prominent notice with each copy of the object code that the\n", - " Library is used in it and that the Library and its use are\n", - " covered by this License.\n", - " \n", - " b) Accompany the object code with a copy of the GNU GPL and this license\n", - " document.\n", - " \n", - " 4. Combined Works.\n", - " \n", - " You may convey a Combined Work under terms of your choice that,\n", - " taken together, effectively do not restrict modification of the\n", - " portions of the Library contained in the Combined Work and reverse\n", - " engineering for debugging such modifications, if you also do each of\n", - " the following:\n", - " \n", - " a) Give prominent notice with each copy of the Combined Work that\n", - " the Library is used in it and that the Library and its use are\n", - " covered by this License.\n", - " \n", - " b) Accompany the Combined Work with a copy of the GNU GPL and this license\n", - " document.\n", - " \n", - " c) For a Combined Work that displays copyright notices during\n", - " execution, include the copyright notice for the Library among\n", - " these notices, as well as a reference directing the user to the\n", - " copies of the GNU GPL and this license document.\n", - " \n", - " d) Do one of the following:\n", - " \n", - " 0) Convey the Minimal Corresponding Source under the terms of this\n", - " License, and the Corresponding Application Code in a form\n", - " suitable for, and under terms that permit, the user to\n", - " recombine or relink the Application with a modified version of\n", - " the Linked Version to produce a modified Combined Work, in the\n", - " manner specified by section 6 of the GNU GPL for conveying\n", - " Corresponding Source.\n", - " \n", - " 1) Use a suitable shared library mechanism for linking with the\n", - " Library. A suitable mechanism is one that (a) uses at run time\n", - " a copy of the Library already present on the user's computer\n", - " system, and (b) will operate properly with a modified version\n", - " of the Library that is interface-compatible with the Linked\n", - " Version.\n", - " \n", - " e) Provide Installation Information, but only if you would otherwise\n", - " be required to provide such information under section 6 of the\n", - " GNU GPL, and only to the extent that such information is\n", - " necessary to install and execute a modified version of the\n", - " Combined Work produced by recombining or relinking the\n", - " Application with a modified version of the Linked Version. (If\n", - " you use option 4d0, the Installation Information must accompany\n", - " the Minimal Corresponding Source and Corresponding Application\n", - " Code. If you use option 4d1, you must provide the Installation\n", - " Information in the manner specified by section 6 of the GNU GPL\n", - " for conveying Corresponding Source.)\n", - " \n", - " 5. Combined Libraries.\n", - " \n", - " You may place library facilities that are a work based on the\n", - " Library side by side in a single library together with other library\n", - " facilities that are not Applications and are not covered by this\n", - " License, and convey such a combined library under terms of your\n", - " choice, if you do both of the following:\n", - " \n", - " a) Accompany the combined library with a copy of the same work based\n", - " on the Library, uncombined with any other library facilities,\n", - " conveyed under the terms of this License.\n", - " \n", - " b) Give prominent notice with the combined library that part of it\n", - " is a work based on the Library, and explaining where to find the\n", - " accompanying uncombined form of the same work.\n", - " \n", - " 6. Revised Versions of the GNU Lesser General Public License.\n", - " \n", - " The Free Software Foundation may publish revised and/or new versions\n", - " of the GNU Lesser General Public License from time to time. Such new\n", - " versions will be similar in spirit to the present version, but may\n", - " differ in detail to address new problems or concerns.\n", - " \n", - " Each version is given a distinguishing version number. If the\n", - " Library as you received it specifies that a certain numbered version\n", - " of the GNU Lesser General Public License \"or any later version\"\n", - " applies to it, you have the option of following the terms and\n", - " conditions either of that published version or of any later version\n", - " published by the Free Software Foundation. If the Library as you\n", - " received it does not specify a version number of the GNU Lesser\n", - " General Public License, you may choose any version of the GNU Lesser\n", - " General Public License ever published by the Free Software Foundation.\n", - " \n", - " If the Library as you received it specifies that a proxy can decide\n", - " whether future versions of the GNU Lesser General Public License shall\n", - " apply, that proxy's public statement of acceptance of any version is\n", - " permanent authorization for you to choose that version for the\n", - " Library.\n", - " \n", - "Location: /root/miniconda3/envs/deepmd/lib/python3.10/site-packages\n", - "Requires: typeguard\n", - "Required-by: deepmd-kit, dpdispatcher, dpgen\n" - ] - }, { "data": { "text/html": [ @@ -713,8 +543,6 @@ } ], "source": [ - "# Checke dargs version and Install\n", - "!pip show dargs || pip install --upgrade dargs\n", "# Show input.json\n", "from deepmd.utils.argcheck import gen_args\n", "from dargs.notebook import JSON\n", From c92d0fa3d1b379af82bc7bd5d110b4b730863535 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 12:32:08 +0000 Subject: [PATCH 10/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index e6bae42229..85347f4bbf 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", From ae2fa2eee58f539f4e4e4ae460a449e20b0ed3a4 Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Wed, 27 Mar 2024 19:24:08 +0800 Subject: [PATCH 11/15] MyST table of content & fix 2.4.1 1. --- doc/getting-started/quick_start.ipynb | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 85347f4bbf..5eb91a1ca7 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -68,19 +68,10 @@ "id": "8e6587cb-ba6e-42ba-a139-0595fc7f79d7", "metadata": {}, "source": [ - "## Table of contents\n", "\n", - "
\"deepmd-kit\"
\n", - "\n", - "* [Background](#background)\n", - "* [Practice](#practice)\n", - " * [1. Data preparation](#dataprepare)\n", - " * [2. Prepare input script](#inputscript)\n", - " * [3. Train a model](#trainamodel)\n", - " * [4. Freeze a model](#freezeamodel)\n", - " * [5. Compress a model](#compressamodel)\n", - " * [6. Test a model](#testamodel)\n", - " * [7. Run MD with LAMMPS](#lammpsmd)\n" + "```{contents} Table of Contents\n", + ":depth: 3\n", + "```" ] }, { From 27073a6f0d7264ab6ac0876d727f7dc6de812c98 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:24:41 +0000 Subject: [PATCH 12/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 5eb91a1ca7..881c67405b 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", From 60a2a4b0a7dc33aeb1a232895a9b825c4c60d47d Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Wed, 27 Mar 2024 20:35:54 +0800 Subject: [PATCH 13/15] MyST table of content & fix 2.4.1 1. again --- doc/getting-started/quick_start.ipynb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 5eb91a1ca7..c3456a8adf 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -108,7 +108,7 @@ "id": "e452966d", "metadata": {}, "source": [ - "### 1 Data Preparation \n", + "### Data Preparation \n", "\n", "We have prepared the initial data for $CH_4$ required to run DeePMD-kit computations and placed it in the `DeePMD-kit_Tutorial` folder. You can view the corresponding files by clicking on the dataset on the left side:" ] @@ -442,7 +442,7 @@ "id": "ac6c969b-10cb-49f0-9b84-7dc9ffa38c61", "metadata": {}, "source": [ - "### 2 Prepare input script \n", + "### Prepare input script \n", "Once the data preparation is done, we can go on with training. Now go to the training directory.\n", "DeePMD-kit requires a `json` format file to specify parameters for training. " ] @@ -646,7 +646,7 @@ "id": "bafe20b8-3bde-403c-ae42-b68ba5f29703", "metadata": {}, "source": [ - "### 3 Train a model \n", + "### Train a model \n", "After the training script is prepared, we can start the training with DeePMD-kit by simply running" ] }, @@ -950,7 +950,7 @@ "id": "8009ad0a-9902-42d3-b280-caee92cbdf10", "metadata": {}, "source": [ - "### 4 Freeze a model \n", + "### Freeze a model \n", "\n", "At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute" ] @@ -1008,7 +1008,7 @@ "id": "3de9a2d0", "metadata": {}, "source": [ - "### 5 Compress a model \n", + "### Compress a model \n", "\n" ] }, @@ -1105,7 +1105,7 @@ "id": "2882c201-0e85-46d0-94f8-e055a540b6fb", "metadata": {}, "source": [ - "### 6 Test a model \n", + "### Test a model \n", "\n", "We can check the quality of the trained model by running\n" ] @@ -1264,7 +1264,7 @@ "id": "fffaad23-53a6-47dd-8d91-9beb68d1212b", "metadata": {}, "source": [ - "### 7 Run MD with LAMMPS \n", + "### Run MD with LAMMPS \n", "\n", "The model can drive molecular dynamics in LAMMPS. \n" ] From 2613c66ce39c96e85af4abf25ece91610d5a2c2d Mon Sep 17 00:00:00 2001 From: Mancn-Xu Date: Thu, 28 Mar 2024 10:17:18 +0800 Subject: [PATCH 14/15] Remove the html tag for title --- doc/getting-started/quick_start.ipynb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index e96a77a26c..34413bb026 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d", @@ -79,7 +79,7 @@ "id": "42afcb0e", "metadata": {}, "source": [ - "## Background \n", + "## Background\n", "\n", "In this tutorial, we will take the gaseous methane molecule as an example to provide a detailed introduction to the training and application of the Deep Potential (DP) model.\n", "\n", @@ -100,15 +100,15 @@ "id": "275d9d23", "metadata": {}, "source": [ - "## Practice " + "## Practice" ] }, { "cell_type": "markdown", - "id": "e452966d", + "id": "a9be4db1", "metadata": {}, "source": [ - "### Data Preparation \n", + "### Data Preparation\n", "\n", "We have prepared the initial data for $CH_4$ required to run DeePMD-kit computations and placed it in the `DeePMD-kit_Tutorial` folder. You can view the corresponding files by clicking on the dataset on the left side:" ] @@ -442,7 +442,7 @@ "id": "ac6c969b-10cb-49f0-9b84-7dc9ffa38c61", "metadata": {}, "source": [ - "### Prepare input script \n", + "### Prepare input script\n", "Once the data preparation is done, we can go on with training. Now go to the training directory.\n", "DeePMD-kit requires a `json` format file to specify parameters for training. " ] @@ -646,7 +646,7 @@ "id": "bafe20b8-3bde-403c-ae42-b68ba5f29703", "metadata": {}, "source": [ - "### Train a model \n", + "### Train a model\n", "After the training script is prepared, we can start the training with DeePMD-kit by simply running" ] }, @@ -950,7 +950,7 @@ "id": "8009ad0a-9902-42d3-b280-caee92cbdf10", "metadata": {}, "source": [ - "### Freeze a model \n", + "### Freeze a model\n", "\n", "At the end of the training, the model parameters saved in TensorFlow's checkpoint file should be frozen as a model file that is usually ended with extension .pb. Simply execute" ] @@ -1008,7 +1008,7 @@ "id": "3de9a2d0", "metadata": {}, "source": [ - "### Compress a model \n", + "### Compress a model\n", "\n" ] }, @@ -1105,7 +1105,7 @@ "id": "2882c201-0e85-46d0-94f8-e055a540b6fb", "metadata": {}, "source": [ - "### Test a model \n", + "### Test a model\n", "\n", "We can check the quality of the trained model by running\n" ] @@ -1264,7 +1264,7 @@ "id": "fffaad23-53a6-47dd-8d91-9beb68d1212b", "metadata": {}, "source": [ - "### Run MD with LAMMPS \n", + "### Run MD with LAMMPS\n", "\n", "The model can drive molecular dynamics in LAMMPS. \n" ] From b6c2ac54bea1ee2ed4d10369858c43149843a52c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 02:17:55 +0000 Subject: [PATCH 15/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/getting-started/quick_start.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 34413bb026..67674c4654 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -1,5 +1,5 @@ { - "cells": [ + "cells": [ { "cell_type": "markdown", "id": "b22f597d-ec17-4ab9-8933-28e92af2438d",