FAIRChem 化学机器学习快速指南:从环境安装到分子动力学
【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp
FAIRChem(fairchem)是 Meta FAIR Chemistry 团队开源的化学机器学习库,把约 5.2 亿个 DFT 结构训练出的 UMA 预训练模型封装成标准 ASE calculator。你用几行 Python 就能完成催化剂位点筛选、晶体弛豫和分子动力学模拟,适合计算化学与材料方向的新手。
它解决了什么问题
传统做法里,DFT 算一个吸附构型要数小时起步,催化剂筛选还要遍历数千种"表面×吸附位"组合,时间成本不可承受。FAIRChem 的思路是先让模型吃掉大规模 DFT 数据:UMA 在约 5.2 亿个 DFT 结构上预训练(UMA 1.2 官方数据),推理时通过 ASE 接口直接给能量、力和应力,把结构弛豫、分子动力学、位点筛选压到 GPU 秒级,最后只对少数关键结果回跑 DFT 复核。CatTSunami 论文报告:基于 OC20 训练的模型找过渡态时,91% 的情况下与 DFT 误差在 0.1 eV 以内,比 DFT 快 28 倍(docs/core/fair_chemistry_papers.md)。
能力一览
| 能力 | 适用场景 | 入口 |
|---|---|---|
oc20/oc22/oc25任务 | 表面催化、氧化物与电催化界面吸附能 | docs/catalysts/examples_tutorials/summary.md |
omat任务 | 晶体结构弛豫、应力、声子 | docs/inorganic_materials/examples_tutorials/summary.md |
omol任务 | 分子/聚合物构象、自旋能隙、MD | docs/molecules/datasets/omol25.md |
odac任务 | MOF 的 CO₂/H₂O 吸附(直接空气捕集) | docs/dac/examples_tutorials/adsorption_energy.md |
| 多 GPU 批量推理 | 百万原子级 MD、批量小系统计算 | docs/core/common_tasks/summary.md |
三步跑起来
1. 安装与登录
# Python 3.10+,官方推荐在虚拟环境内安装 python -m venv .venv && source .venv/bin/activate pip install fairchem-core huggingface-cli login # UMA 是 gated 模型,需先在 Hugging Face 申请访问权2. 验证环境
# 加载 UMA 小模型,成功打印能量即环境可用 from fairchem.core import pretrained_mlip p = pretrained_mlip.get_predict_unit("uma-s-1p2p1", device="cuda") print("predictor ready")3. 跑通第一个结构弛豫
# omat 任务输出应力,FIRE + FrechetCellFilter 同时弛豫原子与晶胞 from ase.build import bulk from ase.optimize import FIRE from ase.filters import FrechetCellFilter from fairchem.core import FAIRChemCalculator fe = bulk("Fe"); fe.calc = FAIRChemCalculator(p, task_name="omat") FIRE(FrechetCellFilter(fe), logfile=None).run(fmax=0.05, steps=100) print(f"relaxed E = {fe.get_potential_energy():.3f} eV")核心玩法
催化剂反应路径搜索(NEB + 位点筛选)
CatTSunami 用预训练图神经网络枚举 NEB 帧做反应路径搜索,是仓库里催化方向的成熟组件。
图:ML 加速的 NEB 与 DFT 基线在路径搜索上的效率对比,来源 src/fairchem/applications/cattsunami/
OCx24 应用则把实验电化学数据和计算吸附能对齐,用来筛选 CO₂ 还原催化剂。
图:OCx24 中实验与计算数据对齐后的 CO₂ 还原催化剂排序,入口 src/fairchem/applications/ocx/
晶体弛豫与弹性性质
omat任务对应 Materials Project 设置的 PBE/PBE+U 能标,是弹性、声子类计算的起点。
opt = FIRE(FrechetCellFilter(fe), logfile=None) opt.run(fmax=0.05, steps=100) # 得到平衡原子位置与晶胞体积分子动力学轨迹
omol任务覆盖 OMol25(wB97M-V 能标),配合 ASE 动力学集成器即可出轨迹。
# 400 K Langevin 动力学 1000 步,写入轨迹文件 from ase.md.langevin import Langevin from ase.io import Trajectory h2o = molecule("H2O"); h2o.info.update({"charge": 0, "spin": 1}) h2o.calc = FAIRChemCalculator(p, task_name="omol") dyn = Langevin(h2o, timestep=0.1 * units.fs, temperature_K=400, friction=0.001 / units.fs) traj = Trajectory("my_md.traj", "w", h2o) dyn.attach(traj.write, interval=1) dyn.run(steps=1000)MOF 吸附能评估
odac任务对应 ODAC23(PBE+D3)能标,可直接算 MOF 的 CO₂ 吸附能。注意官方警告:ODAC23 训练数据只含 CO₂/H₂O 吸附,换其他气体或新 MOF 骨架前必须自行验证。
图:力场/DFT 与模型预测的 CO₂ 吸附能误差分布,背景见 src/fairchem/data/odac/
如何跑得更快 ⚡
turbo 推理模式是首要提速手段:UMA 1.2 的 turbo 模式比上一代推理快约 50%(docs/core/uma_changelog.md)。大体系用workers参数开启多 GPU/多机并行,官方验证过百万原子规模,并可直接对接 LAMMPS;单卡批量跑小系统时,Ray 批量推理框架最高有 4 倍加速。
p = pretrained_mlip.get_predict_unit( "uma-s-1p2p1", inference_settings="turbo", # turbo 模式 device="cuda", workers=8, seed=seed, # workers>1 自动多卡并行 )坑与 FAQ
Q:下载模型报 401 / 无权限?原因:UMA 权重是 Hugging Face gated 仓库。解法:申请facebook/UMA访问权并创建有"public gated repos"读权限的 token,用huggingface-cli login写入。
Q:旧 V1 代码和预训练模型直接跑不起来?原因:V2 是重大不兼容版本。解法:需要旧行为就装fairchem-core==1.10(docs/core/install.md)。
Q:两个不同 task 的能量直接相减,结论对吗?原因:每个 task 对应不同 DFT 能标(RPBE、PBE、PBE+U、wB97M-V 等)。解法:只比较同一 task 内的能量差,跨 task 对比属于错误用法。
Q:分子动力学重复运行,轨迹完全一样?原因:get_predict_unit用 seed 固定了全局随机状态。解法:每次传不同的seed参数。
下一步学什么
- 入门教程(两个端到端小例子):docs/core/quickstart.md
- UMA 模型与 task 能标对照表:docs/core/uma.md
- 分子动力学 / NVT / NPT 工作流:docs/core/common_tasks/molecular_dynamics.md
- 速度精度基准与复现脚本:benchmarks/omol/
建议:先把device="cuda"换成"cpu"在笔记本上跑通最小例子,再上 GPU;随后把自己手上的 XYZ / CIF / POSCAR 换成ase.io.read载入,跑一次omol或omat任务,挑 1~2 个关键构型用 DFT 单点复核,建立对误差尺度的直观感觉。现在就装一个环境,把铁晶体弛豫跑起来。
【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考