点击左上方蓝字关注我们
开源开放已经成为驱动技术创新和加速产业发展的核心动能。开源开放对人类社会过去几百年科学和技术的发展起到非常重要的作用,让我们可以更快追踪到最新的技术进展。
深度势能【1】(Deep Potential)开源方法通过运用“机器学习+多尺度建模+高性能计算”的方式解决了传统分子模拟过程中难以兼顾精度与速度的痛点,成功实现在第一性原理精度基础上的上亿原子的分子动力学模拟【2】。
以深度学习为代表的机器学习方法在力场开发中的应用为发展高效精确的分子动力学方法带来了新机遇和新思路。无需从头学习难度高、迭代快的前沿科技,避免重复“造轮子”,应用AI的门槛更低、成本更低、效率更高。其中DeePMD-kit和DP-GEN是围绕Deep Potential Molecular Dynamics(DeePMD,深度势能分子动力学)开发的开源科学软件包。发布以来,在凝聚态物理、化学物理、材料理性设计、生物物理、药物分子设计等领域均得到广泛应用。
图片来源:http://chemlabs.princeton.edu/csi2020/
近期飞桨(PaddlePaddle)开源深度学习框架和深度势能开源社区的开发者们就深度势能分子动力学开源项目(DeePMD-kit)进行了跨领域深度合作,依托飞桨框架成熟的底层功能和动静统一的开发体验实现深度势能分子动力学模型的构建和运行,促进了双方在开发者生态上的双向融合,拓展了DeePMD-kit原有能力边界,增强在国产化硬件和大规模分布式训练上的能力,也让飞桨支持的科学计算开源项目中增加了重量级的一员。
DeePMD算法包括两部分,用神经网络深度学习方案来模拟材料势能面的DeepPot(深度势模型)和用深度势模型跑MD(分子动力学)。这里就用DeePMD当中较为典型的SeA势模型为例来为大家介绍一下如何利用飞桨进行人工智能和计算材料学领域的结合开发。
1 技术背景
SeA指DeepPot smooth edition constructed from all information including angle and radial information of atomic configurations。从原子坐标信息(包括原子间的相对径向坐标和角向坐标)出发,通过神经网络构造复杂材料体系的势能面。
SeA模型由两部分构成:
a. Embeding网络,输入中心原子i与其所有近邻原子j的相对坐标信息,输出Feature Matrix。
b. Fitting网络,输入Feature Matrix,输出中心原子i的局域能量。
DeepPot已被用于准确描述包括分子结构、各种周期性结构,以及表面、高熵、电池等等多种复杂结构。
2 使用飞桨框架来实现SeA
首先,飞桨依托于百度多年的深度学习技术研究和业务应用,是国内第一个自主研发、功能完备、并且向开发者全面开源开放的产业级深度学习平台。其次,飞桨提供了兼顾效率和性能的动态图模式;以及帮我们脱离算子的繁琐编译和集成,专注实现计算逻辑的自定义算子方案。接下来就为大家介绍下具体的实现方法,让大家感受一下。
2.1构建SeA
2.1.1 SeA算法结构
a.Embedding网络:要想让随机性的神经网络能准确描述物理体系,Embedding输出的Feature Matrix应该满足体系的物理对称性,包括平移、置换和旋转对称性。
因此,Embedding网络的构造基于以下两个数学原理:
矩阵
满足体系的所有平移和旋转对称性;
所有满足置换对称性的函数形式可以变换成如下形式:
,比如函数
对于任意标量函数都满足置换对称性。
基于以上两个原理,Feature Matrix的构造过程如上图:将weighting function矩阵输入Embedding网络(其中),输出维矩阵,并取的前列得到。最后通过矩阵相乘构造Feature Matrix:
。
b.Fitting网络:将Embedding网络输出的Feature Matrix输入Fitting网络,输出i原子的局域能量。
2.1.2使用飞桨框架动态图来构建SeA
飞桨框架动态图使用了相比tensorflow 1.x更加灵活的可以支持更加贴近Python语法和执行逻辑的执行机制,使得算法实现可以按照顺序的执行逻辑来进行。
2.1.2.1构建能量模型:
我们只需要简单的继承 paddle.nn.Layer就可以使用飞桨框架内部的各类操作网络的方法,具体可以参见:
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/fluid/dygraph/layers/Layer_cn.html#layer
在__init__方法中我们像使用python一样设置网络结构(包括层数和每层的维度)。
在forward()方法中我们就可以实现加权求和+激活函数逻辑。
而深度学习中反向的计算逻辑飞桨框架的动态图此时已经使用autograd技术自动为我们完成了。我们只需要在整个网络完成后使用backward()方法即可执行反向网络。
飞桨框架2.0支持用户使用动态图完成深度学习相关领域全类别的模型算法开发。动态图模式,可以让开发者随时查看变量的输入、输出,方便快捷的调试程序,从而带来最佳的开发体验。为了解决动态图的部署问题,飞桨提供了全面完备的动转静支持,在Python语法支持覆盖度上达到领先水平。开发者在动态图编程调试的过程中,仅需添加一个装饰器paddle.jit.to_static,即可无缝平滑地自动实现静态图训练或模型保存。同时飞桨框架2.0还做到了模型存储和加载的接口统一,保证动转静之后保存的模型文件能够被纯动态图加载和使用。https://github.com/deepmodeling/deepmd-kit/tree/paddle
2.1.3使用飞桨框架自定义算子
我们使用飞桨框架的自定义算子方案来实现这种和深度势能领域强相关的计算单元。相比tensorflow 1.x当中需要实现一个内部算子,飞桨框架的自定义算子方案可以让我们更加专注于实现相关的计算逻辑,尽量脱离繁琐的编译算子和集成算子到框架的过程。
1.实现算子:飞桨框架的自定义算子方案中我们实现一个计算逻辑只需要像写一个函数一样将输入和计算逻辑作为函数的参数和执行逻辑加入即可。例如我们输入体系中原子坐标,找出给定截断距离cutoff内中心原子i的所有近邻j,并构造神经网络的输入矩阵descriptor:
具体的实现可以参考:
https://github.com/deepmodeling/deepmd-kit/tree/paddle/source/op/paddle_ops/srcs
2.编译算子:飞桨框架甚至支持jit的方式来编译算子使得我们可以使用简单的几行Python代码就可以完成算子的编译和集成。
使用飞桨框架自定义算子的介绍可以参见:
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/07_new_op/new_custom_op.html
3.DoubleGrad的使用:训练模型所用的label包括力和维里应力,两者都要通过对能量关于坐标求导得出。加上back propagation,就对模型的输出值能量进行了两次求导。
在飞桨框架的动态图中可以简单的使用paddle.grad来实现。
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/fluid/dygraph/base/grad_cn.html#grad
Paddle.grad可以自动实现对给定函数的求导。对于输入多个自变量x,并输出多个因变量y的函数,paddle.grad对每个x分别返回这个x对所有y的导数之和,也就是说返回值个数与x的个数相同。
2.2 最终效果
使用飞桨框架我们可以很完美的重现C++算法实现的能量关于坐标求导的功能,并且我们可以看到相关的实现精度也可以达到以下的效果:
其中,训练后模型计算能量和力的精度都与Tensorflow版本完全一致。
代码节选自:
https://github.com/deepmodeling/deepmd-kit/tree/paddle
未来展望
本次百度飞桨深度学习平台与DeePMD-kit的合作,将进一步提升双方的产品竞争力,不断完善产品能力矩阵。后续基于飞桨的DeePMD-kit软件包将在算法优化、高性能适配等方面持续迭代。欢迎飞桨社区与深度势能开源社区的开发者关注该项目,并为之贡献力量。
参考文献
[1] L Zhang, J Han, H Wang, R Car, W E, Deep potential molecular dynamics: a scalable model with the accuracy of quantum mechanics, Physical review letters 120 (14), 143001
[2] W Jia, H Wang, M Chen, D Lu, J Liu, L Lin, R Car, L Zhang, Pushing the limit of molecular dynamics with ab initio accuracy to 100 million atoms with machine learning, Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC '20), IEEE Press, Article 5, 1–14.
参考链接
DeePMD-kit项目地址:
https://github.com/deepmodeling/deepmd-kit
关于飞桨
飞桨以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。目前,飞桨已凝聚超265万开发者,服务企业10万家,基于飞桨开源深度学习平台产生了 34万个模型。飞桨作为百度“AI大生产平台”的基础底座,以大规模分布式训练、全硬件平台支持、端到端全流程工具,助力企业和开发者加速AI生产。
当前在科学计算领域,飞桨联合各高校、科研机构和企业已为开发者建设支持了量子机器学习开发工具PaddleQuantum、生物计算开源工具集PaddleHelix和贝叶斯深度学习ZhuSuan。本次又在分子动力学研究领域新增DeePMD-kit。如果您想详细了解更多飞桨的相关内容,请参阅以下文档。
·飞桨官网地址·
https://www.paddlepaddle.org.cn/
·飞桨开源框架项目地址·
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle
????长按上方二维码立即star!????
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。
END