🧬 Flexible framework for organizing data/experiments/workflows
Project description
🧬 Formed
Formed is a flexible framework for managing data, experiments, and workflows in both research and production environments. It provides a simple yet powerful DAG-based workflow system with automatic caching, dependency tracking, and seamless integration with popular ML tools.
Key Features
- 📊 DAG-based workflows: Define complex workflows as directed acyclic graphs with automatic dependency resolution
- 💾 Smart caching: Content-based automatic caching that detects code changes via AST analysis
- 🔧 Flexible configuration: Use Jsonnet/JSON for declarative workflow definitions with type safety
- 🔌 Rich integrations: Built-in support for PyTorch, 🤗 Transformers, MLflow, and more
- 🎯 Type-safe: Leverage Python type hints for automatic object construction and validation
- 📦 Extensible: Easy to extend with custom steps, formats, and organizers
Quick Example
Define reusable computation steps with automatic caching:
# mysteps.py
from collections.abc import Iterator
from formed import workflow
@workflow.step
def load_dataset(size: int) -> Iterator[int]:
for i in range(size):
yield i
@workflow.step
def square(dataset: Iterator[int]) -> Iterator[int]:
for i in dataset:
yield i * i
Connect steps in a workflow configuration:
// workflow.jsonnet
{
steps: {
dataset: {
type: 'load_dataset',
size: 10
},
results: {
type: 'square',
dataset: { type: 'ref', ref: 'dataset' }
}
}
}
Configure and run:
# formed.yml
workflow:
organizer:
type: filesystem
required_modules:
- mysteps
formed workflow run workflow.jsonnet --execution-id my-experiment
Results are automatically cached - rerunning only executes changed steps!
Installation
pip install formed
With integrations:
pip install formed[mlflow] # MLflow integration
pip install formed[torch] # PyTorch integration
pip install formed[transformers] # 🤗 Transformers integration
pip install formed[all] # All integrations
Documentation
📖 Full documentation available here
- Quick Start - Get started in minutes
- Tutorials - Practical examples and use cases
- Guides - Deep dives into concepts and features
- API Reference - Complete API documentation
Why Formed?
Formed bridges the gap between experimental notebooks and production pipelines:
- Reproducible: Content-based caching ensures consistent results
- Iterative: Only re-execute what changed, speeding up development
- Collaborative: Declarative configs make workflows easy to share and review
- Production-ready: Same code works in research and deployment
Whether you're prototyping in Jupyter or deploying at scale, formed adapts to your workflow.
License
MIT License - see LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file formed-0.0.7.tar.gz.
File metadata
- Download URL: formed-0.0.7.tar.gz
- Upload date:
- Size: 173.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67d3adc91c1a991095a1d396dc70e917d52636629cf1795e2a156f79a9c558ae
|
|
| MD5 |
42ca28d70ed8b5d56a1b169bd34ced76
|
|
| BLAKE2b-256 |
76bdbc1a09893d9c6ea34d314a20ee4bd4dcd1cffe9cc4ac31a6c53751fcf9f9
|
File details
Details for the file formed-0.0.7-py3-none-any.whl.
File metadata
- Download URL: formed-0.0.7-py3-none-any.whl
- Upload date:
- Size: 224.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4421d67b23b70099850b6c155bffd0c8a1d7dca80e9270032dd0b8aee47d1ed5
|
|
| MD5 |
ca8897e98189e15c986f55a8a2f6d063
|
|
| BLAKE2b-256 |
720a11eb4df74996e7b41329f3eda5c70feb8c8fd88c7055f49955a5a6eacfb9
|