【本期推薦專題】物聯網從業人員必讀:華為雲專家為你詳細解讀LiteOS各模塊開發及其實現原理。
摘要:基於MindSpore自動並行、圖算融合等特性,SPONGE可高效地完成傳統分子模擬過程,利用MindSpore自動微分的特性,可以將神經網絡等AI方法與傳統分子模擬進行結合。
本文分享自華為雲社區《MindSpore新一代分子模擬庫:SPONGE》,原文作者:於璠,MindSpore算法科學家
MindSpore新一代分子模擬庫:SPONGE,由北大和深圳灣實驗室高毅勤課題組與華為MindSpore團隊聯合開發,具有高性能、模塊化等特性,是一個完全自主研發的分子模擬軟件庫。基於MindSpore自動並行、圖算融合等特性,SPONGE可高效地完成傳統分子模擬過程,利用MindSpore自動微分的特性,可以將神經網絡等AI方法與傳統分子模擬進行結合。
背景介紹
分子模擬是指利用計算機以原子水平的分子模型來模擬分子結構與行為,進而模擬分子體系的各種物理、化學性質的方法。它是在實驗基礎上,通過基本原理,構築起一套模型和算法,從而計算出合理的分子結構與分子行為。近年來,分子模擬技術發展迅速並且在多個學科領域得到了廣泛的應用。在葯物設計領域,可用於研究病毒、葯物的作用機理等;在生物科學領域,可用於表征蛋白質的多級結構與性質;在材料學領域,可用於研究結構與力學性能、材料的優化設計等;在化學領域,可用於研究表面催化及機理;在石油化工領域,可用於分子篩催化劑結構表征、合成設計、吸附擴散,可構建和表征高分子鏈以及晶態或非晶態本體聚合物的結構,預測包括共混行為、機械性質、擴散、內聚等重要性質。
由於模擬的時空限制,傳統分子動力學仿真軟件的應用受到很大的限制,科研工作者需要不斷地開發新的力場、抽樣方法、結合新的技術(如AI算法)來拓展分子動力學仿真的場景。因此, SPONGE應運而生,具有完全自主的知識產權。SPONGE使用模塊化的設計特性,支持科學家進行高效且便捷地搭建分子動力學模擬中所需要的相關計算模塊。同時, SPONGE也具有傳統模擬所需要的高效性。除此之外,SPONGE也天然地支持與人工智能算法的自然融合,並且能運用MindSPore框架自身的高性能計算特性。
相比於之前在傳統分子模擬軟件上結合SITS方法進行生物分子增強抽樣,SPONGE原生支持SITS並對計算流程進行優化使得其使用SITS方法模擬生物體系更加高效。針對極化體系,傳統分子模擬采用結合量化計算等方式來解決電荷浮動等問題。即使采用機器學習降低計算量也會浪費大量時間在程序數據傳送的問題上。而SPONGE利用模塊化的特點可支持內存上直接與機器學習程序通信大大降低了整體計算時間。
圖1:結合SITS等方法對顯性溶劑中的丙氨酸二肽進行增強抽樣
隨MindSpore1.2版本開源的SPONGE具備以下優勢:
1. 全模塊化分子模擬。模塊化構建分子模擬算法,易於領域研發人員進行理論和算法的快速實現,並為外部開發人員貢獻子模塊提供友好的開源社區環境。
2. 傳統分子模擬與MindSpore結合的人工智能算法的全流程實現。在MindSpore中,研發人員能便利的將AI方法作用於分子模擬中。全算子化的SPONGE將與MindSpore進一步結合成為新一代端到端可微的分子模擬軟件,實現人工智能與分子模擬的自然融合。
案例介紹
下面,這里將簡單介紹一下MindSpore上的SPONGE的一個簡單案例,該案例使用SPONGE模擬了丙氨酸三肽水溶液體系。
實踐前,確保已經正確安裝MindSpore。如果沒有,可以通過MindSpore安裝頁面(MindSpore官網)安裝MindSpore。
1. 輸入文件准備
本教程模擬體系中需要加載三個輸入文件,分別是:
· 屬性文件(后綴為.in的文件),聲明模擬的基本條件,對整個模擬過程進行參數控制。
· 拓撲文件(后綴為.param7的文件),拓撲文件描述的是體系內部分子的拓撲關系及各種參數。
· 坐標文件(后綴為.rst7的文件),坐標文件描述的是每個原子在體系中的初始時刻的坐標。
拓撲文件和坐標文件可以通過建模過程由AmberTools中自帶的tleap工具建模完成,下載地址(Download Amber MD)。
通過tleap構建了所需要的拓撲文件和坐標文件后,需要通過屬性文件聲明模擬的基本條件,對整個模擬過程進行參數控制。以本教程中的屬性文件為例,其文件內容如下:
NVT 290k mode = 1, # 分子動力學(MD)模式,1 表示模擬采用 NVT 系綜 dt= 0.001, # 模擬步長 step_limit = 1, # 模擬總步數 thermostat=1, # 控溫方法,1 表示采用的是 Liujian-Langevin 方法 langevin_gamma=1.0, # 控溫器中的 Gamma_ln 參數 target_temperature=290, # 目標溫度 write_information_interval=1000, # 輸出頻率 amber_irest=0, # 輸入方式,0 表示讀入amber格式的輸入坐標文件,其中不包含速度 cut=10.0, # 非鍵相互作用的距離
案例的輸入文件完成后,分別命名為 http://NVT_290_10ns.in 、WATER_ALA.parm7和WATER_ALA_350_cool_290.rst7,這三個文件可以存放在本地工作區的自定義路徑下。
2. 加載數據
從三個輸入文件中,讀取模擬體系所需要的參數,用於最后體系的計算,其加載代碼如下:
import argparse from mindspore import context parser = argparse.ArgumentParser(description='Sponge Controller') parser.add_argument('--i', type=str, default=None, help='input file') parser.add_argument('--amber_parm', type=str, default=None, help='paramter file in AMBER type') parser.add_argument('--c', type=str, default=None, help='initial coordinates file') parser.add_argument('--r', type=str, default="restrt", help='') parser.add_argument('--x', type=str, default="mdcrd", help='') parser.add_argument('--o', type=str, default="mdout", help="") parser.add_argument('--box', type=str, default="mdbox", help='') parser.add_argument('--device_id', type=int, default=0, help='') args_opt = parser.parse_args() context.set_context(mode=context.GRAPH_MODE, device_target="GPU", device_id=args_opt.device_id, save_graphs=False)
3. 構建模擬流程
使用SPONGE中定義的計算力模塊和計算能量模塊,通過多次迭代進行分子動力學過程演化,使得體系達到我們所需要的平衡態,並記錄每一個模擬步驟中得到的能量等數據。其模擬流程構建代碼如下:
from src.simulation_initial import Simulation from mindspore import Tensor if __name__ == "__main__": simulation = Simulation(args_opt) save_path = args_opt.o for steps in range(simulation.md_info.step_limit): print_step = steps % simulation.ntwx if steps == simulation.md_info.step_limit - 1: print_step = 0 temperature, total_potential_energy, sigma_of_bond_ene, sigma_of_angle_ene, sigma_of_dihedral_ene, \ nb14_lj_energy_sum, nb14_cf_energy_sum, LJ_energy_sum, ee_ene, _ = simulation(Tensor(steps), Tensor(print_step)) # compute energy and temperature
4. 運行腳本
python main.py --i /path/NVT_290_10ns.in \ --amber_parm /path/WATER_ALA.parm7 \ --c /path/WATER_ALA_350_cool_290.rst7 \ --o /path/ala_NVT_290_10ns.out
其中,--i 為MD模擬的屬性文件,控制模擬過程,--amber_parm 為MD模擬體系的拓撲文件,--c 為我們輸入的初始坐標文件,--o 為我們模擬輸出的記錄文件,其記錄了輸出每步的能量等信息,--path 為輸入文件所在的路徑,在本教程中為 sponge_in 文件夾。
使用輸入文件,通過在指定溫度下進行模擬,計算力和能量,進行分子動力學過程演化。
5. 運行結果
運行得到的結果在 .out 文件中,體系的能量變化都被記錄在該文件中,可以查看模擬體系的熱力學信息。在 .out 文件中記錄了體系的如下信息:
_steps_ _TEMP_ _TOT_POT_ENE_ _BOND_ENE_ _ANGLE_ENE_ _DIHEDRAL_ENE_ _14LJ_ENE_ _14CF_ENE_ _LJ_ENE_ _CF_PME_ENE_
其中記錄了模擬過程中輸出的各類能量, 分別是迭代次數(_steps_),溫度(_TEMP_),總能量(_TOT_POT_E_),鍵長(_BOND_ENE_),鍵角(_ANGLE_ENE_),二面角相互作用(_DIHEDRAL_ENE_),非鍵相互作用,其包含靜電力及Leonard-Jones相互作用。
教程文檔:https://gitee.com/mindspore/docs/blob/master/tutorials/training/source_zh_cn/advanced_use/hpc_sponge.md
展望
在未來的版本中,會加入更多實用的分子動力學模擬模塊,支持更多應用。之后,SPONGE各模塊會逐步支持自動微分和自動並行,對於銜接機器學習方案提供更友好的支持。歡迎廣大的分子動力學愛好者和研究者加入我們,共同拓展和維護SPONGE。