pip install exca
Learn why Exca exists — config validation, hierarchical experiments, and transparent caching.
Step-by-step guides covering TaskInfra, MapInfra,
caching, remote computation, and more.
Recipes for common tasks — debugging, job arrays, uid exclusion, versioning, workdir, and discriminated unions.
Deep dives into the design philosophy, uid computation,
ConfDict, CacheDict, and more.
How CacheDict stores data, built-in handlers, and how
to write your own custom handler.
Complete API for TaskInfra, MapInfra, SubmitInfra,
CacheDict, helpers, and associated classes.
Why Exca?
A few features that make experiment management simpler.
Validated configs — Pydantic-powered hierarchical configurations catch errors before you hit the cluster.
Transparent caching — Filesystem-backed, uid-based caching that Just Works™. Rerun only what changed.
Cluster-ready — Submit to Slurm or run locally — switch between the two by changing one field.
Modular pipelines — Discriminated unions, composable sub-configs, and job arrays for grid-search with ease.
Comparison
Feature |
lru_cache |
hydra |
submitit |
stool |
exca |
|---|---|---|---|---|---|
RAM cache |
✔ |
✘ |
✘ |
✘ |
✔ |
File cache |
✘ |
✘ |
✘ |
✘ |
✔ |
Remote compute |
✘ |
✔ |
✔ |
✔ |
✔ |
Pure Python |
✔ |
✘ |
✔ |
✘ |
✔ |
Hierarchical config |
✘ |
✔ |
✘ |
✘ |
✔ |
Citing#
@misc{exca,
author = {J. Rapin and J.-R. King},
title = {{Exca - Execution and caching}},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/facebookresearch/exca}},
}
Legal#
exca is MIT licensed, as found in the LICENSE file.
Also check-out Meta Open Source Terms of Use and Privacy Policy.