Garden's Almanac of Matter Models PET
January 2023
| Checkpoint | Params | Polaris | Sophia | Perlmutter | Delta | Frontier | Della |
|---|---|---|---|---|---|---|---|
| pet-oam-xl | 730M | β | β | β | β | β | β |
| pet-omatpes-l | 255M | β | β | β | β | β | β |
β 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, "polaris", "sophia"
6 checkpoint="pet-oam-xl",
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.
polaris-pet_env.py
1# /// script
2# requires-python = ">=3.11,<3.15"
3# dependencies = [
4# "upet>=0.2.6",
5# "ase>=3.22",
6# # upet pulls nvalchemi-toolkit-ops unpinned; 0.4+ needs torch>=2.8 at
7# # runtime but only declares the constraint on its extras, so the
8# # resolver won't catch it (same trap as the tensornet env).
9# "torch>=2.8,<2.14",
10# ]
11#
12# [tool.uv.sources]
13# torch = { index = "pytorch-cu128" }
14#
15# [[tool.uv.index]]
16# name = "pytorch-cu128"
17# url = "https://download.pytorch.org/whl/cu128"
18# explicit = true
19# ///
20"""PET env β Polaris variant of pet.py (UPET foundation checkpoints).
21
22Identical to pet.py except torch is pinned to the cu128 index: Polaris's
23driver stack tops out at CUDA 12.8, and the default PyPI torch wheel is
24built against a newer CUDA, so metatomic's pick_device finds no usable
25cuda at setup() (smoke-test 2026-08-04). Sophia keeps the unrestricted env.
26
27The upstream string encodes model@version; versions are pinned rather than
28"latest" so rebuilds serve the same weights. pet-omatpes-l is trained at the
29r2SCAN level of theory β its energies are not comparable to the PBE-level
30pet-oam models.
31"""
32
33CHECKPOINTS = {
34 "pet-oam-xl": "pet-oam-xl@1.0.0",
35 "pet-omatpes-l": "pet-omatpes-l@0.1.0",
36}
37
38CLUSTERS = ["polaris"]
39
40
41def setup(checkpoint: str, device: str = "cuda"):
42 from huggingface_hub import hf_hub_download
43 from upet.calculator import UPETCalculator
44
45 # metatomic-ase 0.1.2's nvalchemi fast path passes a float max_neighbors
46 # (len * max(128, cutoff**3)) into torch.full β TypeError for cutoffs > ~5 Γ
.
47 # Force the vesin fallback; the flag is read at call time.
48 import metatomic_ase._neighbors as _mta_n
49 _mta_n.HAS_NVALCHEMIOPS = False
50
51 # Passing model=/version= makes UPETCalculator resolve the name by listing
52 # the hub repo β an uncached API call that fails on workers, which run
53 # with HF_HUB_OFFLINE=1 (and on any node without internet). Fetch the
54 # pinned file ourselves β a cache hit needs no network even offline β and
55 # hand it over as checkpoint_path, which skips the resolve entirely.
56 model, version = CHECKPOINTS[checkpoint].split("@", 1)
57 path = hf_hub_download(
58 repo_id="lab-cosmo/upet",
59 filename=f"{model}-v{version}.ckpt",
60 subfolder="models",
61 )
62 return UPETCalculator(checkpoint_path=path, device=device)
63
Built on Polaris: 2026-08-05
Couldn't load the current environments from Rootstock.
References
- Pozdnyakov, Sergey N., Ceriotti, Michele, Smooth, exact rotational symmetrization for deep learning on point clouds, arXiv, 2023.
- Bigi, Filippo, Pegolo, Paolo, Mazitov, Arslan, Schmidt, Jonathan, Ceriotti, Michele, Pushing the limits of unconstrained machine-learned interatomic potentials, arXiv, 2026.