a.Embedding網(wǎng)絡(luò):要想讓隨機(jī)性的神經(jīng)網(wǎng)絡(luò)能準(zhǔn)確描述物理體系,Embedding輸出的Feature Matrix應(yīng)該滿足體系的物理對(duì)稱性,包括平移、置換和旋轉(zhuǎn)對(duì)稱性。
b.具體實(shí)現(xiàn)方案參見https://dl.acm.org/doi/10.5555/3327345.3327356
Fitting網(wǎng)絡(luò):將Embedding網(wǎng)絡(luò)輸出的Feature Matrix輸入Fitting網(wǎng)絡(luò),輸出i原子的局域能量。
2.使用PaddlePaddle動(dòng)態(tài)圖來構(gòu)建SeA網(wǎng)絡(luò)
PaddlePaddle動(dòng)態(tài)圖使用了相比tensorflow 1.x更加靈活的可以支持更加貼近Python語法和執(zhí)行邏輯的執(zhí)行機(jī)制,使得算法實(shí)現(xiàn)可以按照順序的執(zhí)行邏輯來進(jìn)行。
構(gòu)建能量模型:
我們只需要簡單的繼承 paddle.nn.Layer就可以使用paddle內(nèi)部的各類操作網(wǎng)絡(luò)的方法具體可以參見:
在__init__方法中我們像使用python一樣設(shè)置網(wǎng)絡(luò)結(jié)構(gòu)(包括層數(shù)和每層的維度)
在forward()方法中我們就可以實(shí)現(xiàn)加權(quán)求和+激活函數(shù)邏輯
而深度學(xué)習(xí)中反向的計(jì)算邏輯paddle的動(dòng)態(tài)圖此時(shí)已經(jīng)使用autograd技術(shù)自動(dòng)為我們完成了。我們只需要在整個(gè)網(wǎng)絡(luò)完成后使用backward()方法即可執(zhí)行反向網(wǎng)絡(luò)。
飛槳框架2.0支持用戶使用動(dòng)態(tài)圖完成深度學(xué)習(xí)相關(guān)領(lǐng)域全類別的模型算法開發(fā)。動(dòng)態(tài)圖模式下可以讓開發(fā)者隨時(shí)查看變量的輸入、輸出,方便快捷的調(diào)試程序, 帶來最佳的開發(fā)體驗(yàn)。為了解決動(dòng)態(tài)圖的部署問題,飛槳提供了全面完備的動(dòng)轉(zhuǎn)靜支持,在Python語法支持覆蓋度上達(dá)到領(lǐng)先水平。開發(fā)者在動(dòng)態(tài)圖編程調(diào)試的過程中,僅需添加一個(gè)裝飾器paddle.jit.to_static,即可無縫平滑地自動(dòng)實(shí)現(xiàn)靜態(tài)圖訓(xùn)練或模型保存。同時(shí)飛槳框架2.0還做到了模型存儲(chǔ)和加載的接口統(tǒng)一,保證動(dòng)轉(zhuǎn)靜之后保存的模型文件能夠被純動(dòng)態(tài)圖加載和使用。
3.使用PaddlePaddle自定義算子
我們使用PaddlePaddle的自定義算子方案來實(shí)現(xiàn)這種和深度勢能領(lǐng)域強(qiáng)相關(guān)的計(jì)算單元。相比tensorflow 1.x當(dāng)中需要實(shí)現(xiàn)一個(gè)內(nèi)部算子,PaddlePaddle的自定義算子方案可以讓我們更加專注于實(shí)現(xiàn)相關(guān)的計(jì)算邏輯 而盡量脫離了繁瑣的編譯算子和集成算子到框架的過程。
1.實(shí)現(xiàn)算子:PaddlePaddle的自定義算子方案中我們實(shí)現(xiàn)一個(gè)計(jì)算邏輯只需要像寫一個(gè)函數(shù)一樣將輸入和計(jì)算邏輯作為函數(shù)的參數(shù)和執(zhí)行邏輯加入即可。例如我們輸入體系中原子坐標(biāo),找出給定截?cái)嗑嚯xcutoff內(nèi)中心原子i的所有近鄰j,并構(gòu)造神經(jīng)網(wǎng)絡(luò)的輸入矩陣descriptor:
具體的實(shí)現(xiàn)可以參考:
https://github.com/deepmodeling/deepmd-kit/tree/paddle/source/op/paddle_ops/srcs
2.編譯算子:PaddlePaddle甚至支持jit的方式來編譯算子使得我們可以使用簡單的幾行Python代碼就可以完成算子的編譯和集成
具體使用PaddlePaddle自定義Op的介紹可以參見:
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/07_new_op/new_custom_op.html
3.DoubleGrad的使用:
訓(xùn)練模型所用的label包括力和維里應(yīng)力,兩者都要通過對(duì)能量關(guān)于坐標(biāo)求導(dǎo)得出。加上back propagation,就對(duì)模型的輸出值能量進(jìn)行了兩次求導(dǎo)。
在paddlepaddle的動(dòng)態(tài)圖中可以簡單的使用paddle.grad 來實(shí)現(xiàn)
Paddle.grad可以自動(dòng)實(shí)現(xiàn)對(duì)給定函數(shù)的求導(dǎo)。對(duì)于輸入多個(gè)自變量x,并輸出多個(gè)因變量y的函數(shù),paddle.grad對(duì)每個(gè)x分別返回這個(gè)x對(duì)所有y的導(dǎo)數(shù)之和,也就是說返回值個(gè)數(shù)與x的個(gè)數(shù)相同。
使用PaddlePaddle我們可以很完美的重現(xiàn)C++算法實(shí)現(xiàn)的能量關(guān)于坐標(biāo)求導(dǎo)的功能,并且我們可以看到相關(guān)的實(shí)現(xiàn)精度也可以達(dá)到以下的效果:
其中,訓(xùn)練后模型計(jì)算能量和力的精度都與Tensorflow版本完全一致。
以上圖片選自
https://github.com/deepmodeling/deepmd-kit/pull/529
代碼節(jié)選自:
https://github.com/deepmodeling/deepmd-kit/tree/paddle
關(guān)于DeePMD-kit
以深度學(xué)習(xí)為代表的機(jī)器學(xué)習(xí)方法在力場開發(fā)中的應(yīng)用為發(fā)展高效精確的分子動(dòng)力學(xué)方法帶來了新機(jī)遇和新思路。深度勢能【1】(Deep Potential)開源方法通過運(yùn)用“機(jī)器學(xué)習(xí)+多尺度建模+高性能計(jì)算”的方式解決了傳統(tǒng)分子模擬過程中難以兼顧精度與速度的痛點(diǎn),成功實(shí)現(xiàn)在第一性原理精度基礎(chǔ)上的上億原子的分子動(dòng)力學(xué)模擬【2】。其中DeePMD-kit和DP-GEN是圍繞Deep Potential Molecular Dynamics(DeePMD,深度勢能分子動(dòng)力學(xué))開發(fā)的開源科學(xué)軟件包。發(fā)布以來,在凝聚態(tài)物理、化學(xué)物理、材料理性設(shè)計(jì)、生物物理、藥物分子設(shè)計(jì)等領(lǐng)域均得到廣泛應(yīng)用。
關(guān)于飛槳
飛槳(PaddlePaddle)以百度多年的深度學(xué)習(xí)技術(shù)研究和業(yè)務(wù)應(yīng)用為基礎(chǔ),是中國首個(gè)自主研發(fā)、功能完備、 開源開放的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái),集深度學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫、端到端開發(fā)套件和豐富的 工具組件于一體。目前,飛槳已凝聚超265萬開發(fā)者,服務(wù)企業(yè)10萬家,基于飛槳開源深度學(xué)習(xí)平臺(tái)產(chǎn)生了 34萬個(gè)模型。飛槳助力開發(fā)者快速實(shí)現(xiàn)AI想法,快速上線AI業(yè)務(wù)。幫助越來越多的行業(yè)完成AI賦能,實(shí)現(xiàn)產(chǎn)業(yè)智能化升級(jí)。
當(dāng)前在科學(xué)計(jì)算領(lǐng)域,飛槳聯(lián)合各高校、科研機(jī)構(gòu)和企業(yè)已為開發(fā)者建設(shè)支持了量子機(jī)器學(xué)習(xí)開發(fā)工具PaddleQuantum、生物計(jì)算開源工具集PaddleHelix和貝葉斯深度學(xué)習(xí)ZhuSuan,本次又在分子動(dòng)力學(xué)研究領(lǐng)域新增DeePMD-kit。
未來展望
本次百度飛槳深度學(xué)習(xí)平臺(tái)與DeePMD-kit的合作,將進(jìn)一步提升雙方的產(chǎn)品競爭力,不斷完善產(chǎn)品能力矩陣。后續(xù)基于飛槳的DeePMD-kit軟件包將在算法優(yōu)化、高性能適配等方面持續(xù)迭代。歡迎飛槳社區(qū)與深度勢能開源社區(qū)的開發(fā)者關(guān)注該項(xiàng)目,并為之貢獻(xiàn)力量。
參考文獻(xiàn)
[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項(xiàng)目地址:
https://github.com/deepmodeling/deepmd-kit
如果您想詳細(xì)了解更多飛槳的相關(guān)內(nèi)容,請參閱以下文檔。
飛槳官網(wǎng)地址·
https://www.paddlepaddle.org.cn/
飛槳開源框架項(xiàng)目地址·
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle