Garden's Almanac of Matter Models MACE-MPA-0
December 2024
| Checkpoint | Params | Polaris | Sophia | Perlmutter | Delta | Frontier | Della |
|---|---|---|---|---|---|---|---|
| mace-mpa-0-medium | 9.06M | — | — | — | ● | — | ● |
| mace:custom | — | — | — | — | — | — |
● verified, last 30 days ○ installed, not recently verified — not installed
No cluster has installed any checkpoint of this model yet.
Running this model
1# from a job or interactive session on a supported cluster:
2from rootstock import RootstockCalculator
3
4with RootstockCalculator(
5 cluster=YOUR_CLUSTER_ID, # eg, "delta"
6 checkpoint="mace-mpa-0-medium",
7 device="cuda",
8) as calc:
9 # model is now running in subprocess on compute node
10 atoms.calc = calc
11 atoms.get_potential_energy()
Environments
Rootstock runs each model family inside an isolated Python environment defined by a single file. This environment file includes the specific dependencies needed, plus a setup() function that loads the model and returns an ASE calculator. These files are usually almost identical for a given model family, but because of cluster-specific quirks (eg, an old CUDA driver) the dependencies and setup code can vary a bit.
mace_env.py
1# /// script
2# requires-python = ">=3.11"
3# dependencies = [
4# # >=0.3.16: mace_mp() grew the loader keys for the newer foundation
5# # models (mpa-0, omat-0, matpes, 0b3, mh) added 2026-07-30.
6# "mace-torch>=0.3.16",
7# "ase>=3.22",
8# "torch>=2.4.0,<2.10",
9# ]
10# ///
11"""MACE env — hosts the MACE foundation models (MP/MPA/OMAT/MATPES/MH + OFF23).
12
13All ship in the same `mace-torch` package, so they share an environment.
14The `off:` prefix on the upstream string in CHECKPOINTS routes to mace_off()
15instead of mace_mp(). Catalog: https://github.com/ACEsuit/mace-foundations
16(the intermediate MP-0b/0b2 revisions are deliberately not listed — 0b3
17supersedes them).
18"""
19
20CHECKPOINTS = {
21 "mace-mp-0-small": "small",
22 "mace-mp-0-medium": "medium",
23 "mace-mp-0-large": "large",
24 # Latest MP-0 revision (fixes phonons vs 0b2, pair repulsion vs 0a).
25 "mace-mp-0b3-medium": "medium-0b3",
26 # MPtrj+sAlex training set; upstream default and Matbench SOTA.
27 "mace-mpa-0-medium": "medium-mpa-0",
28 # OMat24-trained, best phonons.
29 "mace-omat-0-small": "small-omat-0",
30 "mace-omat-0-medium": "medium-omat-0",
31 # MatPES-trained: PBE without +U, and r2SCAN.
32 "mace-matpes-pbe-0-medium": "mace-matpes-pbe-0",
33 "mace-matpes-r2scan-0-medium": "mace-matpes-r2scan-0",
34 # MACE-MH: cross-domain (surfaces/bulk/molecules), single size each.
35 # Multi-head models — see MULTI_HEAD_DEFAULT_HEAD below.
36 "mace-mh-0": "mh-0",
37 "mace-mh-1": "mh-1",
38 "mace-off23-small": "off:small",
39 "mace-off23-medium": "off:medium",
40 "mace-off23-large": "off:large",
41 # Your own fine-tuned weights: pair with weights= (loaded via setup_from_path).
42 "mace-mp:custom": None,
43 "mace-off23:custom": None,
44}
45
46
47# The MACE-MH models are multi-head: MACECalculator refuses to load them
48# without a `head=` selecting the training fidelity (available heads incl.
49# omat_pbe, mp_pbe_refit_add, matpes_r2scan, omol, spice_wB97M, ...).
50# Default to omat_pbe — the universal-materials head, consistent with the
51# omat lineage elsewhere in the catalog — so no-kwarg paths (sync, plain
52# `rootstock add`) keep working. Override at runtime via
53# setup_kwargs={"head": ...} (or --kwarg head=... for `rootstock add`);
54# single-head models take no head. (Same pattern as sevennet's `modal`.)
55MULTI_HEAD_DEFAULT_HEAD = {
56 "mh-0": "omat_pbe",
57 "mh-1": "omat_pbe",
58}
59
60
61def setup(checkpoint: str, device: str = "cuda", head: str | None = None):
62 arg = CHECKPOINTS[checkpoint]
63 if arg.startswith("off:"):
64 from mace.calculators import mace_off
65
66 return mace_off(model=arg[4:], device=device, default_dtype="float32")
67 from mace.calculators import mace_mp
68
69 kwargs = {}
70 head = head or MULTI_HEAD_DEFAULT_HEAD.get(arg)
71 if head is not None:
72 kwargs["head"] = head
73 return mace_mp(model=arg, device=device, default_dtype="float32", **kwargs)
74
75
76def setup_from_path(path: str, device: str = "cuda"):
77 # Custom checkpoints (`:custom` ids with user weights): fine-tunes load through
78 # MACECalculator directly — the mp/off dispatch in setup() only exists
79 # to pick which pretrained file to download.
80 from mace.calculators import MACECalculator
81
82 return MACECalculator(model_paths=path, device=device, default_dtype="float32")
83
Built on Delta: 2026-07-31
Couldn't load the current environments from Rootstock.