劉學(xué)源,王彥棡1,任薈穎,辛之夼
1.中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190
2.中國科學(xué)院大學(xué),北京 100049
結(jié)構(gòu)勢能是在對材料結(jié)構(gòu)進(jìn)行分析與材料性質(zhì)進(jìn)行判斷時(shí)需要考量的一個(gè)指標(biāo),高效準(zhǔn)確地?cái)M合結(jié)構(gòu)勢能是許多材料研究工作的基礎(chǔ)。近年來,隨著物理化學(xué)理論、數(shù)值計(jì)算方法和計(jì)算機(jī)軟硬件的發(fā)展,計(jì)算機(jī)模擬在擬合結(jié)構(gòu)能量時(shí)發(fā)揮了日益重要的作用。自從把計(jì)算機(jī)模擬技術(shù)引入結(jié)構(gòu)能量計(jì)算之后,各個(gè)研究小組所使用的主流方法有分子動力學(xué)模擬法[1],其代表軟件為Lammps,和基于第一性原理的密度泛函理論法,其代表軟件為VASP[2,3]和Castep[4]。密度泛函理論法不受經(jīng)驗(yàn)參數(shù)約束,適用于所有化學(xué)物質(zhì),對不同材料性質(zhì)的預(yù)測能力已經(jīng)被廣泛證明。其計(jì)算結(jié)構(gòu)能量精度很高,能量一般收斂到 1meV/atom,幾何優(yōu)化可以將原子力最小化到 10meV/?。但密度泛函理論法的精確度是以巨大的計(jì)算成本為代價(jià)的,其模擬所耗費(fèi)的時(shí)間開銷很大,這就限制了將該方法運(yùn)用在包含數(shù)百個(gè)原子的結(jié)構(gòu)的模擬上。分子動力學(xué)方法使用經(jīng)驗(yàn)參數(shù)化的原子勢,這些原子勢通過簡單的分析函數(shù)來近似原子間的相互作用。大多數(shù)經(jīng)驗(yàn)勢的計(jì)算量隨原子數(shù)量的增加呈線性增長,哪怕對于小結(jié)構(gòu),其時(shí)間開銷也比第一性原理法低了幾個(gè)數(shù)量級。然而經(jīng)驗(yàn)勢依賴于勢參數(shù),研究者需要調(diào)整這些參數(shù)來重現(xiàn)實(shí)驗(yàn)或是第一性原理,而適用于多種不同材料的經(jīng)驗(yàn)勢需要依賴不同的參數(shù),這些復(fù)雜勢參數(shù)很難精準(zhǔn)確定,必須對許多系統(tǒng)進(jìn)行驗(yàn)證,導(dǎo)致了相比于第一性原理法,分子動力學(xué)法經(jīng)驗(yàn)勢的精度較低。因此,使用機(jī)器學(xué)習(xí)方法來擬合結(jié)構(gòu)能量逐漸成為了材料研究學(xué)者們的研究目標(biāo)。
機(jī)器學(xué)習(xí)[5]屬于人工智能領(lǐng)域,主要利用計(jì)算機(jī)分析處理已知數(shù)據(jù),從數(shù)據(jù)中自動“學(xué)習(xí)”潛在規(guī)則,并將此規(guī)則用于對未知數(shù)據(jù)的預(yù)測。機(jī)器學(xué)習(xí)是一種利用系統(tǒng)本身進(jìn)行自我改進(jìn)的過程,在這個(gè)過程中計(jì)算機(jī)程序的性能隨著經(jīng)驗(yàn)的積累而不斷提高。機(jī)器學(xué)習(xí)已經(jīng)發(fā)展出多種學(xué)習(xí)方法,包括聚類[6]、支持向量機(jī)[7]、神經(jīng)網(wǎng)絡(luò)、決策樹[8]等經(jīng)典方法,在模式識別、語音處理等領(lǐng)域有了很大的進(jìn)展和突破性的成功。近年來,機(jī)器學(xué)習(xí)方法逐漸成為材料科學(xué)領(lǐng)域研究的新課題??茖W(xué)家們從不同的角度利用機(jī)器學(xué)習(xí)對材料結(jié)構(gòu)與屬性進(jìn)行探索,取得一定效果。
本文將機(jī)器學(xué)習(xí)算法應(yīng)用于結(jié)構(gòu)勢能擬合中。相比于其他的計(jì)算機(jī)模擬方法,機(jī)器學(xué)習(xí)方法最大的優(yōu)點(diǎn)是它所具有的泛化能力。在結(jié)構(gòu)勢能擬合這一課題中,只要結(jié)構(gòu)數(shù)據(jù)的數(shù)量與多樣性都足夠豐富,再找到合適的機(jī)器學(xué)習(xí)算法對數(shù)據(jù)進(jìn)行學(xué)習(xí),模型就可以舉一反三從結(jié)構(gòu)數(shù)據(jù)中找到千絲萬縷的聯(lián)系與不易通過傳統(tǒng)方法發(fā)現(xiàn)的規(guī)律,得到結(jié)構(gòu)形態(tài)與能量之間的映射關(guān)系。從精度和效率的角度來說,機(jī)器學(xué)習(xí)方法耗時(shí)最大的部分是模型的訓(xùn)練,一旦通過若干輪迭代訓(xùn)練獲得理想精度的模型,便可以利用該模型快速根據(jù)結(jié)構(gòu)內(nèi)原子位置獲得所擬合的結(jié)構(gòu)能量,實(shí)現(xiàn)精度與效率的平衡。
從某種程度上看,比選擇合適的機(jī)器學(xué)習(xí)算法更重要的是正確地表示數(shù)據(jù)的特征。對機(jī)器學(xué)習(xí)應(yīng)用于結(jié)構(gòu)勢能擬合起到最大推動作用的發(fā)展就是獲得結(jié)構(gòu)描述符的方法的革新。
德國慕尼黑工業(yè)大學(xué)教授 Sonke Lorenz 利用氫分子的六個(gè)自由度坐標(biāo)作為輸入構(gòu)建了一個(gè)三層神經(jīng)網(wǎng)絡(luò)對 H2/K(2x2)/Pd(100) 體系勢能面進(jìn)行了預(yù)測[9]。神經(jīng)網(wǎng)絡(luò)可以被描述為一般的非線性擬合函數(shù),其不需要關(guān)于潛在問題的函數(shù)形式的任何假設(shè)。這項(xiàng)實(shí)驗(yàn)得到了平滑并連續(xù)的勢能面,獲得了勢能面相對簡單但準(zhǔn)確的表達(dá)。由于特征數(shù)量少,網(wǎng)絡(luò)擬合的參數(shù)和用于訓(xùn)練的數(shù)據(jù)量也相對較少。
Kyoung Tai 等直接使用粒子的笛卡爾坐標(biāo)來描述粒子間相互作用從而構(gòu)建神經(jīng)網(wǎng)絡(luò)對二聚水的勢能進(jìn)行了預(yù)測,其通過 ANN 將體系能量表示成關(guān)于體系中原子坐標(biāo)信息的函數(shù)[10],
這樣建模的不足之處是ANN的輸入節(jié)點(diǎn)數(shù)取決于結(jié)構(gòu)內(nèi)的原子個(gè)數(shù),這就使得訓(xùn)練出的模型具有很大的局限性,難以遷移到具有不同原子數(shù)目的體系中去。
目前較為成熟的基于機(jī)器學(xué)習(xí)的勢能擬合方法所采用的結(jié)構(gòu)描述符表示方法是Jorg Behler和Michele Parrinello 所提出的將結(jié)構(gòu)能量分解為原子貢獻(xiàn)的方法[11]。他們研究了由 64個(gè)原子組成的液態(tài)硅系統(tǒng)。該系統(tǒng)的勢能面非常復(fù)雜,因此他們轉(zhuǎn)換思維考慮每個(gè)硅原子對系統(tǒng)總能量的能量貢獻(xiàn)。這種單個(gè)原子的能量貢獻(xiàn)主要取決于最近的若干相鄰原子的位置,也反映了該原子周邊的局部環(huán)境。這種方法意味著無論系統(tǒng)里有多少原子,相同的模型都可用于預(yù)測系統(tǒng)中每個(gè)原子的能量貢獻(xiàn),從而在將能量貢獻(xiàn)累加后獲得結(jié)構(gòu)的總能量。
在 Jorg Behler和Michele Parrinello 提出了用于從結(jié)構(gòu)內(nèi)原子坐標(biāo)信息提取若干維特征的對稱函數(shù)后,國際上已經(jīng)有科學(xué)家基于BP 對稱函數(shù)搭建人工神經(jīng)網(wǎng)絡(luò)進(jìn)行了結(jié)構(gòu)勢能的擬合,并取得了不錯(cuò)的實(shí)驗(yàn)效果,其中具有代表性的是UC Berkely的Nongnuch Artrith 研究小組所開發(fā)的aenet[12,13]。
圖1 神經(jīng)網(wǎng)絡(luò)擬合結(jié)構(gòu)勢能的模型,同一結(jié)構(gòu)內(nèi)不同原子的能量貢獻(xiàn)累加為該結(jié)構(gòu)總勢能Fig.1 The neural network fits the model of structural potential energy,the energy contribution of different atoms in the same structure is added to the total potential energy of the structure
aenet 搭建了神經(jīng)網(wǎng)絡(luò)[14],使用了三種網(wǎng)絡(luò)參數(shù)優(yōu)化算法利用CPU 資源對結(jié)構(gòu)數(shù)據(jù)進(jìn)行訓(xùn)練,獲得理想精度的結(jié)構(gòu)能量擬合模型。但現(xiàn)有的實(shí)現(xiàn)方式也存在一定局限性。隨著機(jī)器學(xué)習(xí)特別是深度學(xué)習(xí)技術(shù)的發(fā)展以及模型計(jì)算量的日益增大,傳統(tǒng)的CPU 難以滿足要求,各種機(jī)器里大量集成了越來越多的GPU計(jì)算資源。如何將新的硬件應(yīng)用到機(jī)器學(xué)習(xí)擬合結(jié)構(gòu)勢能的方法中來就成為了一項(xiàng)關(guān)鍵技術(shù)。此外,軟件所要研究的分子體系規(guī)模與特點(diǎn)千變?nèi)f化,靈活地構(gòu)件模型并在模型中運(yùn)用不同的優(yōu)化算法以適用于不同的體系對模型進(jìn)行優(yōu)化也很重要。得到一個(gè)符合預(yù)期精度的理想模型往往需要通過長時(shí)間的訓(xùn)練,許多計(jì)算平臺上有著任務(wù)最長時(shí)間限制,有些時(shí)候會碰到機(jī)器意外關(guān)機(jī)等情況,及時(shí)保存模型并基于已保存模型進(jìn)行再訓(xùn)練也是軟件在實(shí)際運(yùn)行中所要考慮的問題。
我們選擇深度學(xué)習(xí)框架 PyTorch 來實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)擬合結(jié)構(gòu)勢能。PyTorch是基于python的科學(xué)計(jì)算包,有兩大特點(diǎn),一是具有強(qiáng) GPU 加速的張量計(jì)算;二是作為一個(gè)深度學(xué)習(xí)計(jì)算平臺提供最大的計(jì)算靈活性與速度。
在 PyTorch中,張量 tensor是一種包含單一數(shù)據(jù)類型元素的多維矩陣,是torch 庫的核心類。而自動求導(dǎo) Autograd 包提供了對 tensor的所有運(yùn)算自動求導(dǎo)。PyTorch的優(yōu)勢之一就是其為tensor和autograd 庫提供了 CUDA 接口。使用該接口可以大幅提升深度學(xué)習(xí)運(yùn)算的速度,加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和預(yù)測。
在使用GPU 加速前需要判斷是否有PyTorch 可用的CUDA,只要自己的機(jī)器中包含支持 CUDA 模塊的合適的GPU 顯卡,并在安裝 PyTorch 時(shí)指定了CUDA,就可以利用GPU 對網(wǎng)絡(luò)計(jì)算進(jìn)行加速。
算法 1 判斷是否有可用CUDA def is_available():r"""Returns a bool indicating if CUDA is currently available."""if (not hasattr(torch._C,'_cuda_isDriverSufficient')or
not torch._C._cuda_isDriverSufficient()):return False return torch._C._cuda_getDeviceCount() > 0
在 PyTorch中,GPU與CPU 在使用時(shí)可以互相轉(zhuǎn)化。深度學(xué)習(xí)默認(rèn)使用的是CPU,而我們可以在需要使用GPU 時(shí)將計(jì)算與數(shù)據(jù)從 CPU 轉(zhuǎn)移至 GPU。當(dāng)我們對 tensor 調(diào)用CUDA 時(shí),PyTorch 會完成從 CPU到 GPU的數(shù)據(jù)遷移。當(dāng)我們對模型調(diào)用CUDA 時(shí),它將完成數(shù)據(jù)以及整個(gè)計(jì)算圖從 CPU 到 GPU的映射。而當(dāng)我們使用plt 進(jìn)行可視化繪圖或其他需要在CPU 上進(jìn)行的運(yùn)算時(shí),我們可以將計(jì)算與數(shù)據(jù)轉(zhuǎn)移至CPU。這保證了計(jì)算資源使用的靈活性。
相比于其他熱門深度學(xué)習(xí)框架例如Tensorflow[15]和Caffe[16],PyTorch 實(shí)現(xiàn)了用動態(tài)圖來定義模型。Tensorflow和Caffe 都是命令式的編程語言,用靜態(tài)圖定義模型,其缺陷是處理數(shù)據(jù)前必須定義好完整的一套神經(jīng)網(wǎng)絡(luò),能夠處理所有的邊界情況。而PyTorch 使用的動態(tài)圖模型允許用戶在運(yùn)行程序的時(shí)候動態(tài)去修正模型結(jié)構(gòu),零延遲地任意改變神經(jīng)網(wǎng)絡(luò)的行為,能方便并直觀地進(jìn)行 debug。
權(quán)值更新算法是深度學(xué)習(xí)模型訓(xùn)練中相當(dāng)重要的一個(gè)模塊,其決定參數(shù)更新的方向與速度,好的權(quán)值更新算法和適當(dāng)?shù)膬?yōu)化參數(shù)能使模型更快更準(zhǔn)地收斂。
PyTorch 包含一系列權(quán)值更新算法,其接口通用性好,也方便集成更加復(fù)雜的算法。PyTorch 實(shí)現(xiàn)了 Adadelta[17]、Adagrad[18]、Adam[19]、SparseAdam、Adamax、ASGD[20]、LBFGS、RMSprop[21]、Rprop、SGD[22]等十余種權(quán)值更新算法。
我們在人工智能計(jì)算及數(shù)據(jù)應(yīng)用服務(wù)平臺上對軟件進(jìn)行測試。計(jì)算系統(tǒng)配置 48 臺曙光 W780-G20 GPU 服務(wù)器,每臺配置 2 顆 Intel Xeon 2650v4 處理器,總 CPU 雙精度浮點(diǎn)運(yùn)算峰值 40.55 萬億次每秒。同時(shí),整套系統(tǒng)配置 380 塊 NVIDIA Tesla P100 GPU 加速卡,雙精度計(jì)算峰值 1786TFlops,單精度峰值更是高達(dá) 3534TFlops。單節(jié)點(diǎn)最多配置 8 塊P100 GPU 加速卡,單節(jié)點(diǎn)雙精度浮點(diǎn)運(yùn)算峰值可達(dá)38.4TFlops,相當(dāng)于 40個(gè)傳統(tǒng)雙路 CPU 計(jì)算節(jié)點(diǎn)的總計(jì)算性能,這對于適用GPU 加速類的應(yīng)用,如深度學(xué)習(xí)、分子動力學(xué)等應(yīng)用將帶來極大的性能提升。
實(shí)驗(yàn)共測試了 3 種體系,包括 Si、TiO2、MoS2Pt,可以看到,測試體系中包含了單元、雙元及三元的體系,其中 TiO2和MoS2Pt為多組分體系,而Si為單組分體系。
(1) Si為單組分體系,數(shù)據(jù)集中共包括 6027個(gè)結(jié)構(gòu),組分信息如表1所示。
(2) MoS2Pt為多組分體系,共包含 19個(gè)組分,共包括 45298個(gè)結(jié)構(gòu),組分信息如表2所示。隨機(jī)選出 6471個(gè)結(jié)構(gòu)進(jìn)行訓(xùn)練。
表1 Si 數(shù)據(jù)集各組分信息Table1 Si data set component information
表2 MoS2Pt 數(shù)據(jù)集各組分信息Table2 MoS2Pt data set component information
TiO2為多組分體系,分為8個(gè)組分,共包括7815個(gè)結(jié)構(gòu),組分信息如表3所示。
實(shí)驗(yàn)共測試了 6 種網(wǎng)絡(luò)參數(shù)優(yōu)化算法,包括 Adadelta、Adam、ASGD、SGD、Rprop、RMSProp。下面介紹下測試的網(wǎng)絡(luò)參數(shù)優(yōu)化算法的測試參數(shù)。
(1) Adadelta
class torch.optim.Adadelta(params,lr,rho,eps,weight_decay)
rho是用于計(jì)算平方梯度的運(yùn)行平均值的系數(shù),設(shè)為0.9
eps是為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng),設(shè)為1×10-6
lr是delta 被應(yīng)用到參數(shù)更新之前對它縮放的系數(shù),設(shè)為1.0
weight_decay是權(quán)重衰減即 L2 懲罰系數(shù),設(shè)為0
(2) Adam
class torch.optim.Adam(params,lr,betas,eps,weight_decay)
lr是學(xué)習(xí)率,設(shè)為1×10-3
betas是用于計(jì)算梯度以及梯度平方的運(yùn)行平均值的系數(shù),設(shè)為0.9和0.999
eps是為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng),設(shè)為0
weight_decay是權(quán)重衰減即 L2 懲罰系數(shù),設(shè)為0
(3) ASGD
class torch.optim.ASGD(params,lr,lambd,alpha,t0,weight_decay)
lr是學(xué)習(xí)率,設(shè)為1×10-2
lambd是衰減項(xiàng),設(shè)為1×10-4
alpha是eta 更新的指數(shù),設(shè)為0.75
t0是指明在哪一次開始平均化,設(shè)為1×10-6
weight_decay是權(quán)重衰減即 L2 懲罰系數(shù),設(shè)為0
(4) RMSprop
class torch.optim.ASGD (params,lr,alpha,eps,weight_decay,momentum,centered)
圖2 在不同硬件資源下訓(xùn)練神經(jīng)網(wǎng)絡(luò)每輪迭代所耗費(fèi)的時(shí)間Fig.2 The time it takes to train each iteration of the neural network under different hardware resources
表3 TiO2 數(shù)據(jù)集各組分信息Table3 TiO2data set component information
圖3 TiO2 數(shù)據(jù)集在不同參數(shù)優(yōu)化算法下測試集誤差的收斂曲線Fig.3 Convergence curve of test set error under data set optimization algorithm of TiO2
圖4 Si 數(shù)據(jù)集在不同參數(shù)優(yōu)化算法下測試集誤差的收斂曲線Fig.4 Convergence curve of test set error under data set optimization algorithm of Si
圖5 MoS2Pt 數(shù)據(jù)集在不同參數(shù)優(yōu)化算法下測試集誤差的收斂曲線Fig.5 Convergence curve of test set error under data set optimization algorithm of MoS2Pt
lr是學(xué)習(xí)率,設(shè)為1×10-2
momentum是動量因子,設(shè)為0
alpha是平滑常數(shù),設(shè)為0.99
eps是為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng),設(shè)為
centered 如果為True,計(jì)算中心化的RMSProp,并且用它的方差預(yù)測值對梯度進(jìn)行歸一化,這里設(shè)為False
weight_decay是權(quán)重衰減即 L2 懲罰系數(shù),設(shè)為0
(5) Rprop
class torch.optim.Rprop (params,lr,etas,step_sizes)
lr是學(xué)習(xí)率,設(shè)為1×10-2
etas是一對 (etaminus,etaplis),它們分別是乘法的增加和減小的因子,設(shè)為0.5和1.2
step_sizes是允許的一對最小和最大的步長,設(shè)為和50
(6) SGD
class torch.optim.SGD(params,lr,momentum,dampening,weight_decay,nesterov)
lr是學(xué)習(xí)率,設(shè)為1×10-2
momentum是動量因子,設(shè)為0
weight_decay是權(quán)重衰減即 L2 懲罰系數(shù),設(shè)為0
dampening是動量的抑制因子,設(shè)為0
nesterov是使用Nesterov 動量的開關(guān),設(shè)為False
對這三個(gè)體系的測試,我們采用四層神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,輸入層為70個(gè)節(jié)點(diǎn),兩個(gè)隱藏層均為20個(gè)節(jié)點(diǎn),以下測試結(jié)構(gòu)均基于該網(wǎng)絡(luò)規(guī)模。
3.5.1 使用不同計(jì)算資源對訓(xùn)練性能的影響
第二章我們敘述過,PyTorch的一大特點(diǎn)是其具有強(qiáng) GPU 加速的張量計(jì)算。因此我們先對神經(jīng)網(wǎng)絡(luò)在 CPU與GPU 下訓(xùn)練的迭代速度進(jìn)行了測試。在性能測試中,我們用了 TiO2數(shù)據(jù)集在 6 種參數(shù)優(yōu)化算法下的迭代速度并取平均值。
可以看出,當(dāng)使用GPU 對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練時(shí),網(wǎng)絡(luò)訓(xùn)練加速效果明顯。因此利用PyTorch的這一特性對訓(xùn)練進(jìn)行加速可以大幅降低訓(xùn)練開銷,具有重要意義。
3.5.2 對不同體系使用不同網(wǎng)絡(luò)參數(shù)優(yōu)化算法的訓(xùn)練效果
對不同的體系結(jié)構(gòu)都用3.2 描述的網(wǎng)絡(luò)參數(shù)優(yōu)化算法進(jìn)行訓(xùn)練后,我們分析了在不同體系與不同參數(shù)優(yōu)化算法下,測試集結(jié)構(gòu)的誤差收斂效果,并對結(jié)果進(jìn)行分析。
對不同的體系,不同的參數(shù)優(yōu)化算法呈現(xiàn)了類似的收斂形態(tài),也呈現(xiàn)了收斂效果上的細(xì)微差別。下面我們對不同算法的收斂特點(diǎn)進(jìn)行分析。
Adadelta:訓(xùn)練一開始測試誤差就處于較低水平,這一點(diǎn)是相比于其他參數(shù)優(yōu)化算法而言其一個(gè)優(yōu)勢。能保持?jǐn)?shù)十輪到近百輪迭代的測試誤差的降低,但誤差降低速率很低,若初始幾輪迭代測試誤差不在理想范圍內(nèi),則很難通過訓(xùn)練收斂到理想精度。
RMSprop:可以保持較長步數(shù)的持續(xù)穩(wěn)定收斂。其收斂趨勢分為某一階段性的持續(xù)收斂和另一階段性的小幅波動。在若干論小幅波動后算法可以進(jìn)入一段更低誤差水平的持續(xù)收斂。但要獲得最優(yōu)精度的模型通常需要較多的迭代次數(shù)。Si 數(shù)據(jù)集的最優(yōu)模型是通過 RMSprop 算法訓(xùn)練得到的。
Adam與ASGD:這兩種算法的收斂趨勢都是在較高精度水平上的鋸齒狀波動。區(qū)別是ASGD的波動幅度更大,但對于不同的體系,這兩種算法都有可能達(dá)到相對更低的誤差水平即在某一輪迭代中得到精度更高的模型。但這兩種算法的模型更新頻率 (得到更優(yōu)模型的頻率) 較慢。TiO2數(shù)據(jù)集的最優(yōu)模型是通過Adam 算法訓(xùn)練得到的,而 MoS2Pt 數(shù)據(jù)集的最優(yōu)模型是通過 ASGD 算法訓(xùn)練得到的。
SGD與Rprop:這兩種算法的收斂趨勢是在較低精度水平上的鋸齒狀波動,這兩種算法對于結(jié)構(gòu)數(shù)據(jù)都難以訓(xùn)練到符合理想誤差范圍內(nèi)的模型,因此在后續(xù)的研究與實(shí)驗(yàn)中可以不使用這兩種算法進(jìn)行訓(xùn)練。
可以看出,對不同的體系采用多種優(yōu)化算法進(jìn)行訓(xùn)練也有其意義。我們完全可以在多塊 GPU 卡上同時(shí)訓(xùn)練基于不同參數(shù)優(yōu)化算法的網(wǎng)絡(luò),從而得到對該體系最優(yōu)的擬合模型。
在調(diào)研了現(xiàn)有成熟的神經(jīng)網(wǎng)絡(luò)擬合結(jié)構(gòu)勢能的開源軟件的基礎(chǔ)上,本文提出利用深度學(xué)習(xí)框架PyTorch來訓(xùn)練神經(jīng)網(wǎng)絡(luò)勢,并在人工智能計(jì)算與數(shù)據(jù)應(yīng)用服務(wù)平臺上利用GPU對不同體系的結(jié)構(gòu)數(shù)據(jù)都采用了多種網(wǎng)絡(luò)參數(shù)優(yōu)化算法進(jìn)行了訓(xùn)練,對訓(xùn)練得到的模型進(jìn)行了評估,結(jié)果表明GPU對訓(xùn)練的加速效果顯著,多樣化的參數(shù)優(yōu)化算法也可以對不同特點(diǎn)的體系發(fā)揮不同的作用,有利于研究者獲得更好的勢能擬合模型。
高效準(zhǔn)確地獲得結(jié)構(gòu)勢能對許多材料研究工作而言都十分重要。下一步,我們會將神經(jīng)網(wǎng)絡(luò)擬合結(jié)構(gòu)勢能運(yùn)用到一些具體的材料研究項(xiàng)目中,嘗試擴(kuò)展本文研究成果的應(yīng)用面。