Stability#
We’re going to start simple here - let’s run a local relaxation (optimize the unit cell and positions) using a pre-trained EquiformerV2-31M-OMAT24-MP-sAlex checkpoint. This checkpoint has a few fun properties
It’s a relatively small (31M) parameter model
It was pre-trained on the OMat24 dataset, and then fine-tuned on the MPtrj and Alexandria datasets, so it should emit energies and forces that are consistent with the MP GGA (PBE/PBE+U) level of theory
Need to install fairchem-core or get UMA access or getting permissions/401 errors?
Install the necessary packages using pip, uv etc
Get access to any necessary huggingface gated models
Get and login to your Huggingface account
Request access to https://huggingface.co/facebook/UMA
Create a Huggingface token at https://huggingface.co/settings/tokens/ with the permission “Permissions: Read access to contents of all public gated repos you can access”
Add the token as an environment variable using
huggingface-cli login
or by setting the HF_TOKEN environment variable.
from __future__ import annotations
import pprint
from ase.build import bulk
from ase.optimize import LBFGS
from quacc.recipes.mlp.core import relax_job
# Make an Atoms object of a bulk Cu structure
atoms = bulk("Cu")
# Run a structure relaxation
result = relax_job(
atoms,
method="fairchem",
name_or_path="uma-s-1p1",
task_name="omat",
opt_params={"fmax": 1e-3, "optimizer": LBFGS},
)
WARNING:root:device was not explicitly set, using device='cuda'.
/home/runner/work/_tool/Python/3.12.12/x64/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2249: UnsupportedFieldAttributeWarning: The 'repr' attribute with value False was provided to the `Field()` function, which has no effect in the context it was used. 'repr' is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.
warnings.warn(
/home/runner/work/_tool/Python/3.12.12/x64/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2249: UnsupportedFieldAttributeWarning: The 'frozen' attribute with value True was provided to the `Field()` function, which has no effect in the context it was used. 'frozen' is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.
warnings.warn(
WARNING:root:The 'seed' argument is deprecated and will be removed in future versions. Please set the seed in the MLIPPredictUnit configuration instead.
INFO:quacc.runners.prep:Calculation will run at /home/runner/work/fairchem/fairchem/docs/inorganic_materials/examples_tutorials/tmp-quacc-2025-10-12-17-48-31-902755-59941
INFO:quacc.runners.prep:Calculation results stored at /home/runner/work/fairchem/fairchem/docs/inorganic_materials/examples_tutorials/quacc-2025-10-12-17-48-31-902755-59941
pprint.pprint(result)
{'atoms': Atoms(symbols='Cu', pbc=True, cell=[[0.0, 1.805, 1.805], [1.805, 0.0, 1.805], [1.805, 1.805, 0.0]]),
'converged': np.True_,
'dir_name': '/home/runner/work/fairchem/fairchem/docs/inorganic_materials/examples_tutorials/quacc-2025-10-12-17-48-31-902755-59941',
'input_atoms': {'atoms': Atoms(symbols='Cu', pbc=True, cell=[[0.0, 1.805, 1.805], [1.805, 0.0, 1.805], [1.805, 1.805, 0.0]]),
'structure_metadata': {'chemsys': 'Cu',
'composition': {Element Cu: 1.0},
'composition_reduced': {Element Cu: 1.0},
'density': 8.971719813140734,
'density_atomic': 11.761470249999999,
'elements': [Element Cu],
'formula_anonymous': 'A',
'formula_pretty': 'Cu',
'nelements': 1,
'nsites': 1,
'symmetry': {'angle_tolerance': 5.0,
'crystal_system': <CrystalSystem.cubic: 'Cubic'>,
'hall': '-F 4 2 3',
'number': 225,
'point_group': 'm-3m',
'symbol': 'Fm-3m',
'symprec': 0.1,
'version': '2.6.0'},
'volume': 11.761470249999999}},
'name': 'fairchem Relax',
'nid': 'runnervm43tnw.04p4rmzsbequpadhmj22ussfqa.ex.internal.cloudapp.net',
'parameters': {'version': '2.9.1.dev4+g85bd8353'},
'parameters_opt': {'fmax': 0.001,
'max_steps': 1000,
'maxstep': 0.2,
'optimizer': 'LBFGS',
'type': 'optimization'},
'quacc_version': '1.0.5',
'results': {'energy': -3.750168406173663,
'forces': array([[0., 0., 0.]], dtype=float32),
'free_energy': -3.750168406173663,
'stress': array([-4.3533575e-03, -4.3533812e-03, -4.3533575e-03, -5.7650645e-10,
2.7071161e-09, 1.2553980e-09], dtype=float32)},
'structure_metadata': {'chemsys': 'Cu',
'composition': {Element Cu: 1.0},
'composition_reduced': {Element Cu: 1.0},
'density': 8.971719813140734,
'density_atomic': 11.761470249999999,
'elements': [Element Cu],
'formula_anonymous': 'A',
'formula_pretty': 'Cu',
'nelements': 1,
'nsites': 1,
'symmetry': {'angle_tolerance': 5.0,
'crystal_system': <CrystalSystem.cubic: 'Cubic'>,
'hall': '-F 4 2 3',
'number': 225,
'point_group': 'm-3m',
'symbol': 'Fm-3m',
'symprec': 0.1,
'version': '2.6.0'},
'volume': 11.761470249999999},
'trajectory': [Atoms(symbols='Cu', pbc=True, cell=[[0.0, 1.805, 1.805], [1.805, 0.0, 1.805], [1.805, 1.805, 0.0]], calculator=SinglePointCalculator(...))],
'trajectory_results': [{'energy': -3.750168406173663,
'forces': array([[0., 0., 0.]]),
'free_energy': -3.750168406173663,
'stress': array([-4.35335748e-03, -4.35338123e-03, -4.35335748e-03, -5.76506454e-10,
2.70711609e-09, 1.25539801e-09])}]}
Congratulations; you ran your first relaxation using an OMat24-trained checkpoint and quacc
!