本技能用于在 nvalchemi 中接入任意 MLIP:让包装器同时继承 nn.Module 与 BaseModelMixin,以组合方式持有底层模型(self.model=...),统一接收 AtomicData/Batch 并产出 ModelOutputs。架构上 nn.Module 必须放在基类第一位,以便 PyTorch 正确初始化;内置包装器 DemoModelWrapper、MACEWrapper、AIMNet2Wrapper、LennardJonesModelWrapper 均采用此模式。
主要实现步骤:1)在 init 中设置 self.model_config=ModelConfig(...),能力字段(outputs、autograd_outputs、autograd_inputs、required_inputs、optional_inputs、supports_pbc、needs_pbc、neighbor_config)在构造时冻结,运行时字段(active_outputs 默认等于 outputs、gradient_keys)可变;缺失 model_config 会在构造时抛 TypeError。2)定义 embedding_shapes 属性。3)实现 adapt_input:先调用 super().adapt_input(),再转换为底层模型 forward 所需的关键字参数,并按 active_outputs 而非 compute_* 标志决定行为。4)实现 adapt_output:先调用 super().adapt_output(),把原始输出映射为规范键;energy 形状应为 [B,1],forces 为 [V,3],stress 为 [B,3,3],hessian 为 [V,3,3],dipole 为 [B,3],charges 为 [V]。5)实现 compute_embeddings,就地写入数据结构并返回。6)实现 forward。可选覆写 export_model 与 add_output_head,默认抛 NotImplementedError。
运行时用 set_config(key,value) 调整 active_outputs 或 gradient_keys;辅助方法包括 input_data()、output_data()、direct_derivative_keys()。outputs 与 required_inputs 为自由字符串,可扩展新属性。限制:资料未提供具体安装命令、依赖版本、性能数据与收费信息。