ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

FAIRChem 无机材料入门实战:用 UMA 势函数计算形成能、声子谱与弹性张量

FAIRChem 无机材料入门实战:用 UMA 势函数计算形成能、声子谱与弹性张量 FAIRChem 无机材料入门实战用 UMA 势函数计算形成能、声子谱与弹性张量【免费下载链接】ocpFAIR Chemistrys library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp本篇指南聚焦 FAIRChemOpen Catalyst Project 的机器学习化学工具库在无机晶体材料领域的三大经典应用利用预训练 UMA 模型结合 Materials ProjectMP兼容修正计算形成能、运行声子Hessian计算预测振动模式与热力学性质、以及通过自动化应变工作流计算弹性常数与体模量。文章以 docs/inorganic_materials/examples_tutorials/ 下的三篇教程为主体结合fairchem-core的FAIRChemCalculator、FormationEnergyCalculator源码与 OMat24 数据集说明为你提供可直接复制运行的端到端实战方案。引言无机材料性质预测的三个典型任务无机材料研究通常围绕三个核心问题展开体系在热力学上是否稳定形成能、在有限温度下是否稳定及热输运表现如何声子谱、在力学上如何响应形变弹性张量。这三个问题分别对应本仓库教程集中的三篇文档形成能计算使用 UMA 模型配合 MP2020 风格修正预测与 Materials Project 数据库可对比的形成能声子计算通过有限位移法构建 Hessian 矩阵得到振动模式、熵与有限温度稳定性弹性张量计算基于应变-形变工作流求弹性常数与体模量。三篇教程共用同一套技术栈ASE 负责原子结构与优化器quacc 提供高层工作流 recipefairchem-core 提供 ML 势函数MLIP的计算接口。下面先讲清这层基础再逐一展开三个任务。环境准备安装 fairchem-core 并获取 UMA 模型访问权限三篇教程的第一步完全一致核心是两条安装依赖包fairchem-core提供计算接口按任务不同还需要数据包如fairchem-data-omat提供 OMat24 兼容修正fairchem-data-oc提供 OC 系列数据支持# 形成能任务需要 omat 数据包 ! pip install fairchem-core fairchem-data-omat # 声子与弹性任务需要 oc 数据包与 cattsunami 应用包 ! pip install fairchem-core fairchem-data-oc fairchem-applications-cattsunami获取 Hugging Face 门控gated模型访问权UMA 系列模型权重托管在 Hugging Face 的facebook/UMA仓库中需要先完成授权否则会遇到 permissions/401 错误。步骤为注册并登录 Hugging Face 账号 → 在facebook/UMA模型页申请访问 → 在设置页创建具有 Read access to contents of all public gated repos you can access 权限的 token → 通过命令行登录或设置环境变量完成认证# 方式一命令行交互式登录 ! huggingface-cli login # 方式二直接设置环境变量MY_TOKEN 替换为你的真实 token import os os.environ[HF_TOKEN] MY_TOKEN说明quacc与ase同样为运行前置条件教程示例默认这些依赖已就绪。Hugging Face 上可用的 UMA 模型清单由仓库中的 pretrained_models.json 定义包括uma-s-1p1、uma-s-1p2、uma-s-1p2p1、uma-m-1p1等本系列教程统一使用uma-s-1p2。模型加载与计算器体系FAIRChemCalculator 与 FormationEnergyCalculator在进入三个任务之前理解 fairchem-core 的计算器抽象很有必要因为三篇教程的底层都由它驱动。从模型名到预测单元from_model_checkpointase_calculator.py 中定义的FAIRChemCalculator是一个标准的 ASECalculator子类核心入口是类方法from_model_checkpoint传入name_or_path模型名或本地 checkpoint 路径。若为模型名则经 pretrained_mlip.py 中的get_predict_unit从 Hugging Face 下载权重缓存目录默认~/.cache/fairchem同时自动拉取两类参考能量文件——atom_refs孤立原子参考能用于单原子体系与form_elem_refs形成能元素参考用于形成能计算task_name决定预测头与能量键名可选值在源码中明确为omol、omat、oc20、odac、omc之一见 ase_calculator.py。当模型对应多个数据集任务时必须显式指定否则抛出RuntimeErrorinference_settings支持default、turbo额外启用 TF32、batch等字符串快捷配置也可传入自定义InferenceSettings对象计算器内部通过AtomicData.from_ase完成 ASE Atoms 到图数据的转换默认半径 6.0 Å、最大邻居 300外部构图模式并在calculate中把能量、力、应力、Hessian 等结果写入self.results。计算器的使用方式教程中形成能部分给出了两种用法经 quacc recipe 做结构弛豫relax_job拿到弛豫后的atoms直接构造计算器做单点计算calculator FAIRChemCalculator.from_model_checkpoint(uma-s-1p2, task_nameomat) atoms.calc calculator energy atoms.get_potential_energy()FAIRChemCalculator通过implemented_properties暴露模型支持的性质energy/forces/stress/hessian 等其中free_energy是energy的副本用于兼容 ASE 中硬编码读取该键的优化器/例程见 ase_calculator.py 的 docstring 说明。FormationEnergyCalculator形成能的包装器FormationEnergyCalculatorase_calculator.py是形成能任务的最后一公里。它的calculate流程清晰先调用被包装的基础计算器得到总能量若apply_correctionsTrue对omat任务默认开启调用fairchem.data.omat.entries.compatibility.apply_mp_style_corrections施加 MP 风格能量修正——该函数把 ASE Atoms 转成 pymatgenComputedStructureEntry再交给OMat24Compatibility继承自 pymatgen 的MaterialsProject2020Compatibility但默认配置指向 OMat24 专用修正文件见 compatibility.py处理按化学式统计各元素数量用element_references来自predictor.form_elem_refs[task_name]计算参考总能total_ref_energy形成能 total_energy - total_ref_energy。元素参考能缺失时会抛出ValueError: Missing reference energies for elements: ...明确告警。任务一形成能计算Formation Energy计算原理与背景用仅在 OMat24 上训练的模型预测形成能时必须使用 OMat24 兼容的参考能与修正以弥合 PBE 与 PBEU 两类 DFT 计算混用带来的系统性偏差。本仓库采用拟合自 OMat24 DFT 计算的 MP2020 风格修正即 Materials Project 的阴离子/GGA-GGAU 混用方案。实现修正所需的数据与代码位于fairchem.data.omat包中修正数值表见 OMat24Compatibility.yaml包括对过渡金属氧化物/氟化物V、Cr、Mn、Fe、Co、Ni、W、Mo的 GGAU 混用修正如 Fe 的 O 键合修正 -2.428 eV/atom以及按阴离子分类的组分修正oxide -0.657、peroxide -0.433、S -0.487、Cl -0.6 等并附对应不确定度修正引擎见 compatibility.py 的apply_mp_style_corrections支持correction_typeMP2020或OMat24两种风格。完整实战代码from __future__ import annotations import pprint from ase.build import bulk from ase.optimize import FIRE from quacc.recipes.mlp.core import relax_job from quacc import flow from fairchem.core.calculate import FAIRChemCalculator, FormationEnergyCalculator # 构造一个体相 Cu 的 Atoms 对象 atoms bulk(Cu) # 运行结构弛豫含晶胞与原子位置 flow def relax_flow(*args, **kwargs): return relax_job(*args, **kwargs) result relax_flow( atoms, methodfairchem, name_or_pathuma-s-1p2, task_nameomat, relax_cellTrue, opt_params{fmax: 1e-3, optimizer: FIRE}, ) # 取出弛豫后的 atoms atoms result[atoms] # 用 uma-s-1p2 创建计算器 calculator FAIRChemCalculator.from_model_checkpoint(uma-s-1p2, task_nameomat) # 用 FormationEnergyCalculator 计算形成能 # 对 omat 任务默认施加 MP2020 风格修正以兼容 OMat24 form_e_calc FormationEnergyCalculator(calculator, apply_correctionsTrue) atoms.calc form_e_calc form_energy atoms.get_potential_energy()关键参数说明参数取值含义methodfairchem指定 quacc 使用 fairchem 的 MLIP 后端name_or_pathuma-s-1p2使用的预训练模型名也可填本地 checkpoint 路径task_nameomat任务名决定能量头与参考能来源relax_cellTrue弛豫时同时优化晶胞cell与原子位置opt_params{fmax: 1e-3, optimizer: FIRE}优化器收敛力阈值eV/Å与优化器类型FIRE结果输出与对照pprint.pprint(fTotal energy: {result[results][energy]} eV \n Formation energy {form_energy} eV)result[results][energy]是弛豫后的总能量eVform_energy是经元素参考与 MP 风格修正后的形成能eV。教程以 MgObulk(MgO)为例给出 Materials Project 中约 -3.038 eV/atom 的参考值mp-1265 体系作为对照。**注意**由于 OMat24 训练数据采用的 DFT 设置与 MP 数据库不同两者存在预期内的数值差异应对比量级而非逐位相等。任务二声子计算Phonon Calculations声子计算的意义声子计算对无机材料科学至关重要主要用于计算热导率理解材料的振动模式进而得到熵与自由能预测材料在有限温度如 300 K下的稳定性。有限位移法的工作流教程中的phonon_flow采用标准有限位移法finite displacement完整流程共七步对晶胞与原子执行弛豫将原胞重复若干次放大到足够大的超胞以捕获足够多的振动模式沿各方向微小平移每个原子生成一系列有限位移结构对每个位移结构做单点能量/力计算汇总所有计算通过数值二阶差分构建Hessian 矩阵对 Hessian 求特征值/特征向量得到体系的振动模式声子色散基于振动模式分析热力学性质熵、自由能等。前提假设该分析假定所有振动模式是**简谐harmonic**的。这对低/中温材料是相当合理的近似但在高温下会逐渐偏离实际。完整实战代码from __future__ import annotations from ase.build import bulk from quacc.recipes.mlp.phonons import phonon_flow # 构造一个体相 Cu 的 Atoms 对象 atoms bulk(Cu) # 用 MLIP 势函数运行声子Hessian计算 result phonon_flow( atoms, methodfairchem, job_params{ all: dict( name_or_pathuma-s-1p2, task_nameomat, ), }, min_lengths10.0, # 设置最小晶胞尺寸此处为兼容有限的 GitHub runner 内存而调小 )参数说明参数取值含义methodfairchem使用 fairchem MLIP 后端job_params[all]dict(name_or_pathuma-s-1p2, task_nameomat)对流水线中所有子任务统一指定模型与任务名min_lengths10.0超胞各方向最小边长Å调小可降低内存/算力开销但会牺牲部分长波模式分辨率结果解读print( fThe entropy at { result[results][thermal_properties][temperatures][-1]:.0f} K is { result[results][thermal_properties][entropy][-1]:.2f} kJ/mol )result[results][thermal_properties]包含按温度网格展开的热力学性质temperatures温度数组与entropy对应熵值kJ/mol。此外phonon_flow的结果还包含声子模式/频率信息可用于进一步分析有限温度稳定性或热导率。任务三弹性张量计算Elastic Tensors弹性性质的意义弹性性质回答材料有多强、多容易形变以及在特定方向被压缩或拉伸时如何响应如泊松比 Poisson ratio等问题。在 DFT 中弹性常数计算通常相当耗时而 MLIP 工作流可显著加速。应变-形变工作流教程使用 quacc 内置的elastic_tensor_flowrecipe其流程为可选用 MLIP 弛豫晶胞施加应变生成若干形变晶胞对每个形变结构用 MLIP 执行弛豫并可选做单点计算汇总全部计算拟合得到材料的弹性性质弹性常数张量、体模量等。该 recipe 的详细文档位于 quacc 的quacc.recipes.mlp.elastic_tensor_flow参考页对应 quacc 源码中的quacc/recipes/mlp/elastic.py。完整实战代码from __future__ import annotations from ase.build import bulk from quacc.recipes.mlp.elastic import elastic_tensor_flow # 构造一个体相 Cu 的 Atoms 对象 atoms bulk(Cu) # 用 MLIP 势函数运行弹性性质计算 result elastic_tensor_flow( atoms, job_params{ all: dict( methodfairchem, name_or_pathuma-s-1p2, task_nameomat, ), }, )注意与声子任务不同弹性任务把methodfairchem放在job_params[all]内部两种写法效果一致——均为对该流水线的所有子任务统一指定 MLIP 后端、模型名与任务名。结果解读result[elasticity_doc].bulk_modulusresult[elasticity_doc]是包含完整弹性信息的文档对象.bulk_modulus给出体模量bulk modulus此外通常还可提取弹性常数张量C_ij、剪切模量等用于评估材料的可压缩性与形变响应。三个任务的共性要点与源码佐证为什么使用 UMA 模型UMAUniversal Materials Acceptor是本仓库fairchem.core.models.uma模块下的主干模型系列其小尺寸配置K4L2 结构4 层、128 隐藏通道、球面通道 128、lmax/mmax2、截止半径由cutoff_radius控制见 K4L2.yaml。本系列教程统一使用uma-s-1p2checkpoint其权重、孤立原子参考能iso_atom_elem_refs.yaml与形成能元素参考form_elem_refs.yaml均从 Hugging Face 拉取见 pretrained_models.json。任务名task_name的约定三个任务统一使用task_nameomat其含义包括选择 UMA 模型的 omat 预测头决定能量/力/应力的输出键名选择 OMat24 的元素参考能form_elem_refs用于形成能换算触发 OMat24 兼容修正FormationEnergyCalculator对 omat 任务默认apply_correctionsTrue。若任务名非法或缺失FAIRChemCalculator会分别抛出ValueError或RuntimeError并列出可选任务名见 ase_calculator.py。结果传递模式三个 recipe 都遵循同样的结果结构result[results]存放标量/数组性质如energy、thermal_properties、elasticity_docresult[atoms]存放弛豫后的结构。这种统一约定让用户可以用几乎相同的代码骨架切换任务。深入阅读OMat24 数据集与相关资源形成能与弹性任务依赖的 OMat24 是 UMA 模型的无机材料训练数据。其关键事实详见 omat24.md规模训练集 1.07M 结构验证集 1.02M 结构领域无机体相材料标签总能eV、力eV/Å、应力eV/ų理论级别DFTPBE/PBEU基准兼容与 Matbench-Discovery 基准测试集完全兼容拆分不包含 WBM 数据集初始/弛豫结构中带有 protostructure 标签的结构子数据集构成rattled-1000/500/300含 subsampled 变体、aimd-from-PBE-1000/3000 的 NPT/NVT 轨迹、rattled-relax共 10 余个子集读取方式数据以AseLMDBDatabaseASE DB 的 LMDB 实现存储可用fairchem.core.datasets.AseDBDataset按索引读取 Atoms 对象也支持传入路径列表一次读取多个子集另有用于微调的 sAlex 数据集Matbench-Discovery 兼容的 Alexandria 子采样版本。其他可深入阅读的仓库资源UMA 概述文档 与 UMA 变更日志UMA 常见问题Matbench-Discovery 基准配置无机材料数据集总览无机材料教程索引。结语至此你已完成 FAIRChem UMA 在无机材料领域的三个经典实战形成能弛豫 MP 风格修正、声子谱有限位移法 Hessian 热力学性质、弹性张量应变工作流 体模量。三者共用同一套 ASE/quacc/fairchem 技术栈仅需替换 quacc 的 recipe 即可快速迁移适合作为高通量无机材料性质筛选与 Matbench-Discovery 等基准对标的起点。【免费下载链接】ocpFAIR Chemistrys library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表