@task, which gives them caching, retry logic, and the ability to run concurrently inside a flow.
What a task is
Tasks are defined inmlip_arena/tasks/<module>.py and exported from mlip_arena/tasks/__init__.py as uppercase names (OPT, EOS, MD, etc.).
Each task:
- Accepts an
atoms: Atomsstructure and acalculator: BaseCalculator. - Applies one physical simulation or property calculation.
- Returns a dictionary of results.
- Caches results keyed on task source code plus all input parameters.
Tasks vs flows
| Task | Flow | |
|---|---|---|
| Decorator | @task | @flow |
| Scope | One structure, one operation | Many tasks, many structures |
| Caching | Yes (TASK_SOURCE + INPUTS) | No built-in caching |
| Parallelism | Via .submit() from inside a flow | Dispatches tasks to workers |
| Typical use | Single calculation | Benchmark over all models |
Tasks can call other tasks directly (serial) or submit them (parallel). Flows are the entry point that Prefect orchestrates and tracks as a single unit of work.
Prefect @task decorator and caching
Every MLIP Arena task uses theTASK_SOURCE + INPUTS cache policy. This means a task is only re-executed when either its source code or its input arguments change:
EOS, MD, PHONON, NEB, ELASTICITY).
Task chaining: EOS calls OPT internally
Tasks are composable.EOS calls OPT as a subtask — first for a full relaxation, then for constrained relaxations at each strained volume:
concurrent=True flag enables parallel OPT submissions for all volume points, which is significantly faster when running with a Prefect worker pool.
Available tasks
OPT — Structure optimization
Relax atomic positions and/or cell parameters using ASE optimizers (BFGS, FIRE, LBFGS, etc.) and filters (UnitCell, FrechetCell, ExpCell).
EOS — Equation of state
Compute energy-volume relationship and fit Birch-Murnaghan EOS to extract bulk modulus. Chains OPT internally.
MD — Molecular dynamics
Run NVE, NVT, or NPT simulations with flexible dynamics (VelocityVerlet, Langevin, Nose-Hoover, Berendsen) and temperature/pressure schedules.
PHONON — Phonon calculation
Compute phonon band structure and density of states driven by the phonopy library. Requires phonopy to be installed.
NEB — Nudged elastic band
Find minimum energy paths and transition states between two known endpoint structures.
NEB_FROM_ENDPOINTS
Convenience wrapper around NEB that performs linear or IDPP image interpolation from two endpoint structures.
ELASTICITY
Calculate the full elastic tensor via strain perturbations.
The task registry.yaml structure
mlip_arena/tasks/registry.yaml registers benchmarks (not individual tasks) for the leaderboard. Each entry maps a human-readable benchmark name to its Streamlit page and display category:
| Field | Description |
|---|---|
category | Navigation group in the leaderboard sidebar |
task-page | Filename (without .py) of the Streamlit page under serve/tasks/ |
task-layout | Page layout: wide or centered |
rank-page | Filename of the ranking/leaderboard page |
last-update | Date of the most recent results update |
Importing tasks
All tasks are available frommlip_arena.tasks:
__init__.py wraps imports in a try/except so missing optional dependencies (e.g., phonopy) do not prevent other tasks from loading: