Calorine专题

Calorine模型裁剪、扩展与重启状态

演示保留和新增元素、调整神经元、初始化参数和SNES搜索宽度,分清模型编辑与训练。

更新于 2026-11-07约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载模型、真实数据、完整脚本与参考图片。相关教程:偶极与极化率 · 红外与拉曼谱 · NEP89微调 · 模型编辑 · GPUMD数据读写 · 完整接口索引

1 准备与运行#

先解压并重画已经完成的参考结果:

unzip calorine-response-workflows-wave266-*.zip
cd calorine-response-workflows-wave266
bash run.sh

六张参考图在figures,CSV在analysis。若要自己重新计算,在新解压目录以普通账号执行:

bash prepare.sh
bash calculate.sh
bash status.sh

calculate通过Slurm分配一张P100,自动完成本包所有计算;新结果在work,参考图与新算结果分开。已提交时继续查看status,不要删除记录重复提交。结束后:

cat work/COMPLETE.json
ls work/analysis

本例环境为Calorine 4.0、Python 3.11、GPUMD 5.9.1;GPUMD采用GCC 13.3/CUDA 12.9系列环境。可以用module show calorine/4.0和module show gpumd/5.9.1-p100查看当前模块。下面的Python片段在计算完成后的work目录执行;MD和训练由calculate提交。

2 模型文件和restart各保存什么#

nep.txt保存用于预测的模型参数;nep.restart保存SNES的均值和搜索宽度。编辑模型结构时,要同时考虑新参数如何初始化,以及它们的搜索宽度是否已设置。搜索宽度σ不是MD温度;0表示冻结,未设置是NaN,二者含义不同。

查看本包实跑的编辑结果:

cat work/Model-API/RESULTS.json
ls work/Model-API
ls models/NEP89-Si-parent*

NEP89-Si-parent由完整父模型保留Si元素得到,八个Si外部构型的能量、力和virial与完整父模型一致。它只保留Si,不能再用来预测其他88个元素。

3 从已有势建立搜索状态#

from calorine.nep import read_model
m = read_model('models/water-energy.txt')
m = m.set_restart_sigma(strategy='constant', value=0.01, target='all')
print(m.training_parameters)
print(m.parameter_counts)
print(m.n_frozen_parameters, m.n_unset_parameters)
m.write('my-nep.txt', restart_file='my-nep.restart')

如果有真实的已训练restart,优先用read_model(..., restart_file='...')读取;不要用上面的统一宽度覆盖原状态。read_restart和write_restart也可以单独读写搜索状态。

4 元素与网络的实际编辑#

grown = m.add_species(['He'], seed=13579)
kept = grown.keep_species(['O','H'])
removed = grown.remove_species(['He'])
reordered = m.reorder(['H','O'])

aug = m.augment(n_neuron=m.n_neuron + 2)
aug = aug.initialize_parameters(strategy='constant', value=0, target='unset')
aug = aug.set_restart_sigma(strategy='constant', value=0.01, target='unset')
pruned = aug.prune(n_neuron=m.n_neuron)
pruned.write('edited-nep.txt', restart_file='edited-nep.restart')

这些操作返回新Model。新增He的初值不代表He势已经能用;它还需要相应真实数据和训练。本例新增零输出神经元用于说明参数管理,在原O/H体系上保持预测值;不是靠增加两个神经元自动提高准确率。prune缩减一般模型时可能损失精度,不能把本例的零扩展对照当成任意剪枝都无损。

实际参数数量和未设置宽度数量

5 完整Model入口#

入口 用途
training_parameters / write_nepfile 查看训练参数、写nep.in
parameter_counts 按网络和描述符统计总量、冻结与未设置数量
n_frozen_parameters / n_unset_parameters 查询状态
read_restart / write_restart 读写SNES状态
write 写预测模型,可一并写restart
keep_species / remove_species / reorder 保留、删除或重排元素
add_species 新增元素和相关参数
augment / prune 扩展或缩减网络与描述符
initialize_parameters 设置选定参数值
set_restart_sigma 设置选定参数的搜索宽度

本包model_api.py逐项调用上述16个成员,并比较编辑前后的原体系预测。对自己新建的物理模型仍需重新检查数据覆盖、外部误差和MD稳定性。

参考Calorine NEP模型接口。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗