Command line executable to run a script with Python configuration file
Project description
Python Configuration Runner
Command line executable to run a script with python configuration file.
Why a python file as configuration?
- Configuration of any complexity
- No need to serialize the configuration
- No neeed other meta-languages for the configuration
Usage
cd /path/to/my/project
py_config_runner scripts/training.py configs/train/baseline.py
or
cd /path/to/my/project
python -u -m py_config_runner.__main__ scripts/training.py configs/train/baseline.py
The only condition on the script file is it should contain run(config, **kwargs)
callable method. Additionally,
argument kwargs contains logger
(e.g. kwargs['logger']
) and local_rank
(e.g. kwargs['logger']
)
for distributed computations.
No restrictions are applied on the configuration file. It is user's responsibility to provide the script file that can
consume given configuration file. Provided configuration file is loaded as python module and exposed into the script as
the module named config
.
Example for Machine/Deep Learning
For example, below configuration file defines a model, datasets, criterion, optimizer etc and the training script runs the training:
# config.py
from torch import nn
from torch.optim import SGD
from torchvision.transforms import Compose, ToTensor, Normalize, RandomHorizontalFlip
from mymodule.dataflow import get_mnist_data_loaders
from another_module.models import CoolNet
train_transform=Compose([RandomHorizontalFlip(), ToTensor(), Normalize((0.1307,), (0.3081,))])
val_transform=Compose([ToTensor(), Normalize((0.1307,), (0.3081,))])
train_batch_size = 64
val_batch_size = 128
train_loader, val_loader = get_mnist_data_loaders(train_transform, train_batch_size, val_transform, val_batch_size)
model = CoolNet()
optimizer = SGD(model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
num_epochs = 20
val_interval = 5
# training.py
from mymodule.utils import prepare_batch
from mymodule.metrics import compute_running_accuracy
def run(config, logger=None, **kwargs):
logger.info("Start my script")
model = config.model
model.to('cuda')
criterion = config.criterion
criterion = criterion.to('cuda')
optimizer = config.optimizer
for e in range(config.num_epochs):
logger.info("Epoch {} / {}".format(e + 1, config.num_epochs))
for batch in config.train_loader:
x, y = prepare_batch(batch, 'cuda')
optimizer.zero_grad()
y_pred = model(x)
loss = criterion(y_pred, y)
loss.backward()
optimizer.step()
if e % config.val_metrics == 0:
running_acc = 0
for batch in config.val_loader:
x, y = prepare_batch(batch, 'cuda')
y_pred = model(x)
running_acc = compute_running_accuracy(running_acc, y_pred, y)
logger.info("Validation: metrics={}".format(running_acc))
Installation
pip install py_config_runner
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
File details
Details for the file py_config_runner-0.1.0.tar.gz
.
File metadata
- Download URL: py_config_runner-0.1.0.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cddb480796efe822d288b2470e5d4ef116a206dd87ded0ae6b689703cbf2887 |
|
MD5 | 13814c214c6df6fb0e5042db7538818e |
|
BLAKE2b-256 | a0b23cdba60d763e80facb77fb0e16b618f43aeccfdfca5a0da354c327c49082 |
File details
Details for the file py_config_runner-0.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: py_config_runner-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9e66fe50c605ebadfe9997d82b2944ad9f0fdc30da86532457f7cd60c1f22e1 |
|
MD5 | f140c88a44f4ac2dc450533b11e3bd31 |
|
BLAKE2b-256 | 3bfcc24136b106122010cd7d92bd5fd8201af98ff4d2495cf3169f0779ee416b |