SuperAPI AI 工具集

nvalchemi-dynamics-implementation

编程与开发

查看项目

更新于 10-16 02:34

技能介绍

用途:在 nvalchemi 中实现自定义动力学积分器(dynamics class)。做法是继承 nvalchemi.dynamics.base.BaseDynamics,只重写 pre_update() 和 post_update();模型前向、钩子分发、收敛检查以及 step/run 循环由基类处理。

主要能力:基类 step() 按顺序执行 ON_ADMISSION、BEFORE_STEP、BEFORE_PRE_UPDATE→pre_update→AFTER_PRE_UPDATE、BEFORE_COMPUTE→compute→AFTER_COMPUTE、BEFORE_POST_UPDATE→post_update→AFTER_POST_UPDATE、AFTER_STEP,随后检查收敛并触发 ON_CONVERGE、ON_GRADUATE,最后递增 step_count。compute() 调用模型前向并把力/能量就地写入 batch。

使用方式:定义类时设置 needs_keys(所需模型输出)与 provides_keys(产生的状态);init 中调用 super().init() 并转发 **kwargs,保存积分器参数如 dt。pre_update 依据速度与力更新位置,post_update 依据新力更新速度,二者需自行用 torch.no_grad() 包裹状态更新,因为基类 step() 不会自动加 no_grad。可传入 hooks、convergence_hook、n_steps、exit_status 等参数。

适用场景:实现 Velocity Verlet 等积分器;用 ConvergenceHook 提前停止或迁移样本;用 + 组合 FusedStage 共享一次模型前向;用 | 跨 rank 串联分布式流水线。

限制:不要重写 compute、step、run、register_hook、_check_convergence、validate_model_outputs、required_input_keys、check_initial_batch 等继承方法;初始 batch 需具备所需字段(如 forces、energy),否则 copy() 会失败;资料未提供安装命令、收费与平台信息。