HydraFlow seamlessly integrates Hydra and MLflow to streamline ML experiment management, combining Hydra's configuration management with MLflow's tracking capabilities.
Project description
HydraFlow
Overview
HydraFlow seamlessly integrates Hydra and MLflow to streamline machine learning experiment workflows. By combining Hydra's powerful configuration management with MLflow's robust experiment tracking, HydraFlow provides a comprehensive solution for defining, executing, and analyzing machine learning experiments.
Design Principles
HydraFlow is built on the following design principles:
- Type Safety - Utilizing Python dataclasses for configuration type checking and IDE support
- Reproducibility - Automatically tracking all experiment configurations for fully reproducible experiments
- Analysis Capabilities - Providing powerful APIs for easily analyzing experiment results
- Workflow Integration - Creating a cohesive workflow by integrating Hydra's configuration management with MLflow's experiment tracking
Key Features
- Type-safe Configuration Management - Define experiment parameters using Python dataclasses with full IDE support and validation
- Seamless Hydra-MLflow Integration - Automatically register configurations with Hydra and track experiments with MLflow
- Advanced Parameter Sweeps - Define complex parameter spaces using extended sweep syntax for numerical ranges, combinations, and SI prefixes
- Workflow Automation - Create reusable experiment workflows with YAML-based job definitions
- Powerful Analysis Tools - Filter, group, and analyze experiment results with type-aware APIs
- Custom Implementation Support - Extend experiment analysis with domain-specific functionality
Installation
pip install hydraflow
Requirements: Python 3.13+
Quick Example
import hydraflow
from dataclasses import dataclass
from mlflow.entities import Run
@dataclass
class Config:
width: int = 1024
height: int = 768
@hydraflow.main(Config)
def app(run: Run, cfg: Config) -> None:
# Your experiment code here
print(f"Running with width={cfg.width}, height={cfg.height}")
if __name__ == "__main__":
app()
Execute a parameter sweep with:
python app.py -m width=800,1200 height=600,900
Core Components
HydraFlow consists of the following key components:
Configuration Management
Define type-safe configurations using Python dataclasses:
@dataclass
class Config:
learning_rate: float = 0.001
batch_size: int = 32
epochs: int = 10
Main Decorator
The @hydraflow.main decorator integrates Hydra and MLflow:
@hydraflow.main(Config)
def train(run: Run, cfg: Config) -> None:
# Your experiment code
Workflow Automation
Define reusable experiment workflows in YAML:
jobs:
train_models:
run: python train.py
sets:
- each: model=small,medium,large
all: learning_rate=0.001,0.01,0.1
Analysis Tools
Analyze experiment results with powerful APIs:
import mlflow
from hydraflow import Run, iter_run_dirs
# Load runs
runs = Run.load(iter_run_dirs())
# Filter and analyze
best_runs = runs.filter(model_type="transformer").to_frame("learning_rate", "accuracy")
Documentation
For detailed documentation, visit our documentation site:
- Getting Started - Installation and core concepts
- Practical Tutorials - Learn through hands-on examples
- User Guide - Detailed documentation of HydraFlow's capabilities
- API Reference - Complete API documentation
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
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 hydraflow-0.21.3.tar.gz.
File metadata
- Download URL: hydraflow-0.21.3.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","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 |
054a584fc417d4ca99f4f7dc5834701e115f3fbec1266f947c83a29571eacac0
|
|
| MD5 |
5c18a7003e827cf624cdde483566c737
|
|
| BLAKE2b-256 |
98216d8a509fc8ff6e6cfc503d53d1c6bac3e338abee442e793698145ba66f80
|
File details
Details for the file hydraflow-0.21.3-py3-none-any.whl.
File metadata
- Download URL: hydraflow-0.21.3-py3-none-any.whl
- Upload date:
- Size: 39.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","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 |
139cad0a32a13dcb866cb743b56693612052306ab84544dc67022f297d97fab2
|
|
| MD5 |
9eff7559ba390ec4ce38044cbc6149c5
|
|
| BLAKE2b-256 |
a805c67f03f5bcceceb7b28c388a89c825167138ec7761cff32c8b83e1069419
|