# DeePMD
## 论文
参考End-to-end Symmetry Preserving Inter-atomic Potential Energy Model for Finite and Extended Systems

## 模型结构
DeePMD-kit是深度势能分子动力学的开源项目。分子动力学是一套分子模拟方法，该方法主要依靠牛顿力学来模拟分子体系的运动。分子动力学在微观世界模拟中起着承载作用，在物理、化学、生物、材料科>学以及力学等领域都有着非常重要的应用。

深势科技成功将DeePMD-kit进行了并行化，首次实现了具有AIMD精度的第一性原理分子动力学模拟的商业与原子规模的应用，为分子动力学提供了革命性的高性能解决方案。
![DeePMD_Backbone](DeePMD_Backbone.png)

## 算法原理
DeePMD-kit使用第一性原理计算的输入、输出结果来训练模型。
模型输入：原子坐标x, y, z和元素种类；
模型输出：体系能量，能量对坐标的一阶导数值（原子受力）；

1、首先根据原子坐标和种类生成矩阵，矩阵可在旋转和平移的情况下保持不变，以保证第一性原理的计算结果不变；
2、将矩阵输入一个多层全连接网络（fitting net），得到该体系中单个原子的能量，求和即可得到体系总能量；
3、体系总能量对原子坐标求一阶导，一阶导对应原子受力；
4、将模型输出结果（能量+原子受力）输入分子动力学模拟软件LAMMPS中求解动力学结果；

## 环境配置
### Docker(方法一)
提供[光源](https://www.sourcefind.cn/#/service-details)拉取的训练的docker镜像：

训练镜像：
```
  docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:deepmd
```
激活镜像环境及运行测试
```
  source /root/env_disc.sh

  cd /root/test_case/water

  sh run.sh
```
python依赖安装：

```
  pip3 install -r requirement.txt
```
## 数据集

示例中验证的数据集来自：

```
wget http://pai-blade.oss-accelerate.aliyuncs.com/bladedisc_notebook_binaries/data/disc_deepmd_example/data.tar.gz

tar -xvf data.tar.gz
```

实际业务测试请选择合适的数据集进行测试。

## 训练

### 安装(如使用镜像，则无需再次安装)
```
export ROCM_ROOT=/opt/dtk-22.04.2

DP_VARIANT=rocm  python3 -m pip install .  -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
```
### 单卡测试

使用BladeDISC加速的测试命令（此处以单机单卡规模为例说明）,请根据实际使用的卡id号调整run.sh中指定的卡号：
```
    bash run.sh
```
如果需要关闭BladeDISC加速，需要注释掉main.py文件中的如下内容：
```
    disc.enable()
```

## 源码仓库及问题反馈

https://developer.hpccube.com/codes/modelzoo/bladedisc_deepmd

## 参考

https://github.com/deepmodeling/deepmd-kit 

