Skip to content

machinablea modular system for research code

machinable-logo

The research loop, in one abstraction

No names to invent, no paths to remember.

python
>>> from machinable import get
>>> get("train", {"lr": 0.1}).launch()
Train [9eBFve] · finished in 12s

Configuration, declared once

A typed pydantic model with named variants and computed values.

python
>>> class Train(Interface):
...     class Config(BaseModel):
...         optimizer: str = "sgd"
...         batch_size: int = 256
...         lr: float = "scaled(0.1)"
...
...     def config_scaled(self, base):
...         return base * self.config.batch_size / 256
...
...     def version_adam(self):
...         return {"optimizer": "adam", "lr": 1e-3}

One interface, everywhere

Python, terminal, or notebook: the same expression, the same records. Integrations bring your stack.

python
>>> get("train").all()
Interfaces <7>
>>> get("train").all().map(lambda t: t.loss())
[0.087, 0.081, 0.079, 0.091, 0.084, 0.088, 0.082]

There is more to discover ...

Ready to get started? Try it!

pip install machinable

MIT Licensed