機器學習力場(Machine-Learned Force Fields, MLFFs)作為一種新興的計算方法,已在第一性原理分子動力學(Ab Initio Molecular Dynamics, AIMD)模擬中展現出獨特優勢(參見 VASP Wiki:Category:Machine-learned force fields)。該方法既保持了基于量子力學基本原理的物理準確性,又顯著降低了傳統 AIMD 模擬的計算成本,使得長時間尺度的分子動力學模擬成為可能。
傳統 AIMD 模擬(如基于密度泛函理論 DFT 的方法)由于需要對電子結構進行精確求解,單步計算代價極為昂貴。而經典分子動力學雖然采用經驗力場大幅提升計算效率,但其準確性嚴重依賴于預先設定的原子間勢能函數,這些勢能通常基于實驗數據構建,并經驗性地納入范德華力、靜電相互作用等關鍵物理因素。這種建模方式使得力場性能受限于研究者對特定體系相互作用的認知程度。
VASP 提供的實時機器學習力場技術有效解決了上述兩難問題。本教程將系統性地演示如何通過調整機器學習超參數來優化聲子譜計算結果,最終獲得最優的力場參數文件。通過本教程,您將了解如下 VASP 機器學習的超參數:
- ML_IWEIGHT #權重選取模式
- ML_WTSIF #權重系數
- ML_WTOTEN #總能權重系數
- ML_WIFOR #力權重系數
- ML_SIGW0 #擬合步長精度
- ML_RCUT1 #徑向截斷距離
- ML_RCUT2 #夾角截斷距離
- ML_EPS_LOW #擬合精度
通過合理地調整參數,我們最終將得到與 DFT 幾乎一模一樣的結果。
教程鏈接:https://go.openbayes.com/OzP7A
該教程將在云平臺?http://OpenBayes.com?上使用 RTX 4090 進行演示,使用下方邀請鏈接注冊即可獲得 4 小時 RTX 4090 免費使用時長:
https://openbayes.com/console/signup?r=Dennis9801_1ohB
一、輸入文件說明
輸入文件包含
├── dft_phonon
│ ├── band.yaml (DFT參考聲子譜)
├── ml_phonon (機器學習聲子譜計算文件夾)
├── refit (微調文件夾)
│ ├── INCAR
│ ├── KPOINTS
│ ├── ML_AB
│ ├── POSCAR
│ ├── POTCAR
│ ├── clean.sh
│ └── run.sh
├── t.py
本教程只關注 ~/refit 文件夾下的輸入文件即可
run.sh
#進行機器學習擬合
mpirun -n 1 vasp_std
#將力場參數文件轉移到聲子計算文件夾中
cp ML_FFN ../ml_phonon/ml/ML_FF
#進行聲子機器學習計算
cd ../ml_phonon/
chmod 777 *.sh
./run.sh
cd ../
#繪制對比圖
python t.py
INCAR 機器學習擬合設置
SYSTEM = SiIVDW = 11 #范德華力
ISMEAR = 0 #費米展寬
SIGMA = 0.02 #展寬
LWAVE = F #不保留波函數
LCHARG = F #不保留電荷
IBRION = 0 #MD (treat ionic degrees of freedom)
NSW = 1 #機器學習需要設置成 1
POTIM = 1 #MD time step in fs
ISIF = 3 #
機器學習
ML_LMLFF = T #啟用機器學習力場
ML_ISTART = 3 #重新擬合模式(微調模式)
ML_IWEIGHT = 3 #權重選取模式
ML_WTSIF = 1 #權重系數
ML_WTOTEN = 1 #總能權重系數
ML_WIFOR = 1 #力權重系數
ML_SIGW0 = 1E-20 #擬合步長精度
ML_RCUT1 = 8. #徑向截斷距離
ML_RCUT2 = 6. #夾角截斷距離
ML_EPS_LOW = 1E-20 #擬合精度
ML_MB = 5000 #運行內存設置
KPOINTS(啟用機器學習時不使用,隨便設置一個即可)
K-Spacing Value to Generate K-Mesh: 0.040
0
Gamma4 4 4
0.0 0.0 0.0
POSCAR
機器學習訓練的超胞大小,可參考教程:使用 VASP 進行機器學習力場訓練
POTCAR
系統對應元素的贗勢組合,這里為 Si 的贗勢
ML_AB
這是事先計算好的系統對應的分子動力學數據,具體訓練流程可參考教程:使用 VASP 進行機器學習力場訓練,然后將 ML_ABN 重命名為 ML_AB,這里為 Si 的分子動力學數據,已經事先準備好了。
二、操作步驟
1. 克隆并啟動容器
登錄?http://OpenBayes.com,在「公共教程」頁面,選擇「VASP 機器學習力場微調」教程。
頁面跳轉后,點擊右上角「克隆」,將該教程克隆至自己的容器中。
選擇「NVIDIA GeForce RTX 4090」以及「vasp」鏡像,OpenBayes 平臺提供了 4 種計費方式,大家可以按照需求選擇「按量付費」或「包日/周/月」,點擊「繼續執行」。可以使用文章開頭的邀請鏈接,獲得 RTX 4090 使用時長!
待系統分配好資源,當狀態變為「運行中」后,點擊「打開工作空間」。
2. 上傳文件
首先打開「終端」,輸入以下命令進入 refit 文件夾。
cd refit
然后上傳準備好的硅贗勢,這里可以使用「官網例子」里的贗勢 POTCAR。把 POTCAR 放到目錄中,并復制到「ml_phonon/ml」中。
3. 安裝 phonopy 環境
輸入以下命令安裝 phonopy 環境。
conda install -c conda-forge phonopy
當模型運行到以下階段,輸入「y」同意安裝。
4. 運行腳本
輸入以下命令運行腳本。
chmod 777 *.sh./run.sh
5. 微調參數
最后計算的結果將輸出在 pdf 中,查看文件 ml.png
回到「refit」文件夾,更改權重模式為「ML_IWEIGHT = 2」,再次運行腳本查看結果。
最后得到的輸出結果為下圖。可以看到結果更差了,回頭更改權重模式「ML_IWEIGHT = 1 再觀察結果。
得到結果如下圖。綜合比較可以發現 1 和 3 的結果差不多,甚至 1 的細節更好(光學支),接下來在「ML_IWEIGHT = 1」的情況下,進行改進。我們嘗試單獨增加擬合力的精度,將「ML_WIFOR」改小。
可以發現變化不大,這說明我們應該嘗試增加截斷距離,給予更多擬合空間。
可以看到,結果反而更差(光學支),那這說明參數空間過大,找到的極值點反而不是最小值點。我們應當反過來減小截斷距離。
更改參數,重新運行后,我們最后得到了能生成與 DFT 一模一樣聲子譜的機器學習力場參數。