A lightweight library for hyperparameter and configuration management
Project description
paramflow
ParamFlow is a lightweight and versatile library for managing hyperparameters and configurations, tailored for machine learning projects and applications requiring layered parameter handling. It merges parameters from multiple sources, generates command-line argument parsers, and simplifies parameter overrides, providing a seamless and efficient experience.
Features
- Layered configuration: Merge parameters from files, environment variables, and command-line arguments.
- Immutable dictionary: Provides a read-only dictionary with attribute-style access.
- Profile support: Manage multiple sets of parameters with profile-based layering.
- Layered meta-parameters:
paramflowconfigures itself using a layered approach. - Automatic type conversion: Converts types during merging based on target parameter types.
- Command-line argument parsing: Automatically generates an
argparseparser from parameter definitions. - Nested Configuration: Allows for nested configuration and merging.
Installation
pip install paramflow
Install with .env support:
pip install "paramflow[dotenv]"
Basic Usage
Example Configuration File (params.toml)
[default]
learning_rate = 0.001
batch_size = 64
Loading Parameters in Python (app.py)
import paramflow as pf
params = pf.load('params.toml')
print(params.learning_rate) # 0.001
Generating Command-line Help
Running the script with --help displays both meta-parameters and parameters:
python app.py --help
Meta-Parameter Layering
Meta-parameters control how paramflow.load reads its own configuration. Layering order:
paramflow.loadarguments- Environment variables (default prefix:
P_) - Command-line arguments (
argparse)
Activating Profiles
Via command-line:
python print_params.py --profile dqn-adam
Via environment variable:
P_PROFILE=dqn-adam python print_params.py
Parameter Layering
Parameters are merged from multiple sources in the following order:
- Configuration files (
.toml,.yaml,.ini,.json,.env) - Environment variables (default prefix:
P_) - Command-line arguments (
argparse)
Customizing Layering Order
You can specify the order explicitly (env and args are reserved names):
params = pf.load('params.toml', 'env', '.env', 'args')
Overriding Parameters
Override parameters via command-line arguments:
python print_params.py --profile dqn-adam --learning_rate 0.0002
Managing ML Hyperparameter Profiles
Example Configuration (params.toml)
[default]
learning_rate = 0.00025
batch_size = 32
optimizer_class = 'torch.optim.RMSprop'
optimizer_kwargs = { momentum = 0.95 }
random_seed = 13
[adam]
learning_rate = 1e-4
optimizer_class = 'torch.optim.Adam'
optimizer_kwargs = {}
Activating a Profile
python app.py --profile adam
This overrides:
learning_rate→1e-4optimizer_class→torch.optim.Adamoptimizer_kwargs→{}
Managing Development Stages
Profiles can be used to manage configurations for different environments.
Example Configuration (params.toml)
[default]
debug = true
database_url = "mysql://localhost:3306/myapp"
[dev]
database_url = "mysql://dev:3306/myapp"
[prod]
debug = false
database_url = "mysql://prod:3306/myapp"
Activating a Profile
export P_PROFILE=dev
python app.py
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 paramflow-0.4.tar.gz.
File metadata
- Download URL: paramflow-0.4.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44da33c0035f6f316f32d3063dcb2849385821986955f6efa399a9b7cc5daa51
|
|
| MD5 |
a2db14db55e7a73ac9494509a46a46d4
|
|
| BLAKE2b-256 |
239ec6a12589b36d112a9778a26ca052d250709bb3fb6db2b6355c0bae1ebe3d
|
File details
Details for the file paramflow-0.4-py3-none-any.whl.
File metadata
- Download URL: paramflow-0.4-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d35b8fa6e34d4d22f51e9018acccc0b557f1b4d2ec735941410760834f185fb
|
|
| MD5 |
af47d1c5310ad861a413796408dcae61
|
|
| BLAKE2b-256 |
70d9d33d18f15dadbfc650ef267c08ef66d3d654668bae9c89a1e59f23b02120
|