Calorine GPU批量预测
八帧金刚石与石墨烯批量预测,解释返回标签、精度和模型版本边界。
阅读本篇目录
下载本专题结构、势文件、真实参考数据和全部Python脚本。以下命令在解压目录执行;CPU计算使用已分配的CPU资源,GPU通过Slurm分配。原始结果放在 reference/,复跑结果写入当前目录。
1 批量预测适合什么任务#
GPUNEP逐结构调用GPUMD;一批结构可用batch_predict_properties通过nep的prediction模式集中预测。本例使用官方C_2024_NEP4,对金刚石和石墨烯各4种规模共8帧预测,并逐帧与CPUNEP比较;没有把零占位目标当成DFT标签。
module load calorine/4.0 gpumd/5.9.1-p100
sbatch batch.sbatch
squeue -u "$USER"
cat BATCH-PREDICTION.json
2 完整结构与API调用#
from ase.build import bulk, graphene
from calorine.tools import batch_predict_properties
frames = []
for rep in [1,2,3,4]:
frames.append(bulk('C','diamond',a=3.567).repeat((rep,rep,rep)))
g = graphene(a=2.46,vacuum=8).repeat((rep,rep,1))
g.pbc = True
frames.append(g)
predicted = batch_predict_properties(
frames, 'carbon-nep.txt', command='nep', directory='batch-carbon')
for a in predicted:
print(len(a), a.get_potential_energy(), a.get_stress())
金刚石为2、16、54、128原子;石墨烯为2、8、18、32原子,真空仅是本例几何设置。对二维材料,ASE返回的三维体积归一应力依赖真空厚度;不能直接把该GPa值当作独立于真空的二维应力。
3 读取返回值和差异#
返回的新Atoms包含SinglePointCalculator,可直接get_potential_energy/get_forces/get_stress;输入列表不被改成预测标签。工作目录保留nep.in、nep.txt、train.xyz及各预测输出。重新计算建议使用新的目录,避免与旧输出混合。

本例最大能量差约6.28E-6 eV/atom,最大应力差约2.01E-4 GPa;包含GPU单精度与文本输出舍入。脚本按1E-5 eV/atom、1E-4 eV/Å及0.001 GPa核对,同时保留实际误差;阈值是本例对照尺度,不是模型相对DFT的误差。
4 为什么Si单点模型不直接拿来跑此批量接口#
本包Si官方模型的角向n_max=10,可由CPUNEP及GPUMD的MD读取器计算;当前nep5.9.1训练/预测参数解析器要求角向n_max≤8。批量接口会据模型写出nep.in,因此本例选择兼容的C模型。不要直接改势权重或把10改成8来绕过尺寸约束;改用单点CPU/GPUNEP接口,或使用经重新训练且与程序兼容的模型。
客户使用自己的模型时,先对少量结构同时比较CPU和批量预测,确认元素、模型类型、版本及张量约定,再扩大到大量结构。