Skip to main content

Deep Learning framework for fast and clean research development with Pytorch

Project description

Kerosene

Kerosene is a high-level deep Learning framework for fast and clean research development with Pytorch - see the doc for more details.. Kerosene let you focus on your model and data by providing clean and readable code for training, visualizing and debugging your achitecture without forcing you to implement rigid interface for your model.

Out of The Box Features

  • <input type="checkbox" disabled="" /> Basic training logic and user defined trainers
  • <input type="checkbox" disabled="" /> Fine grained event system with multiple handlers
  • <input type="checkbox" disabled="" /> Multiple metrics and criterions support
  • <input type="checkbox" disabled="" /> Automatic configuration parsing and model instantiation
  • <input type="checkbox" disabled="" /> Automatic support of mixed precision with Apex and dataparallel training
  • <input type="checkbox" disabled="" /> Automatic Visdom logging
  • <input type="checkbox" disabled="" /> Integrated Ignite metrics and Pytorch criterions

MNIST Example

Here is a simple example that shows how easy and clean it is to train a simple network. In very few lines of code, the model is trained using mixed precision and you got Visdom + Console logging automatically. See full example there: MNIST-Kerosene

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    CONFIG_FILE_PATH = "config.yml"

    model_trainer_config, training_config = YamlConfigurationParser.parse(CONFIG_FILE_PATH)

    train_loader = DataLoader(torchvision.datasets.MNIST('./files/', train=True, download=True, transform=Compose(
        [ToTensor(), Normalize((0.1307,), (0.3081,))])), batch_size=training_config.batch_size_train, shuffle=True)

    test_loader = DataLoader(torchvision.datasets.MNIST('./files/', train=False, download=True, transform=Compose(
        [ToTensor(), Normalize((0.1307,), (0.3081,))])), batch_size=training_config.batch_size_valid, shuffle=True)

    visdom_logger = VisdomLogger(VisdomConfiguration.from_yml(CONFIG_FILE_PATH))

    # Initialize the model trainers
    model_trainer = ModelTrainerFactory(model=SimpleNet()).create(model_trainer_config)

    # Train with the training strategy
    SimpleTrainer("MNIST Trainer", train_loader, test_loader, None, model_trainer, RunConfiguration(use_amp=False)) \
        .with_event_handler(PlotMonitors(every=500, visdom_logger=visdom_logger), Event.ON_BATCH_END) \
        .with_event_handler(PlotAvgGradientPerLayer(every=500, visdom_logger=visdom_logger), Event.ON_TRAIN_BATCH_END) \
        .with_event_handler(PrintTrainingStatus(every=100), Event.ON_BATCH_END) \
        .train(training_config.nb_epochs)

Events

Event Description
ON_TRAINING_BEGIN At the beginning of the training phase
ON_TRAINING_END At the end of the training phase
ON_VALID_BEGIN At the beginning of the validation phase
ON_VALID_END At the end of the validation phase
ON_TEST_BEGIN At the beginning of the test phase
ON_TEST_END At the end of the test phase
ON_EPOCH_BEGIN At the beginning of each epoch (training, validation, test)
ON_EPOCH_END At the end of each epoch (training, validation, test)
ON_TRAIN_EPOCH_BEGIN At the beginning of each training epoch
ON_TRAIN_EPOCH_END At the end of each training epoch
ON_VALID_EPOCH_BEGIN At the beginning of each validation epoch
ON_VALID_EPOCH_END At the end of each validation epoch
ON_TEST_EPOCH_BEGIN At the beginning of each test epoch
ON_TEST_EPOCH_END At the end of each test epoch
ON_BATCH_BEGIN At the beginning of each batch (training, validation, test)
ON_BATCH_END At the end of each batch (training, validation, test)
ON_TRAIN_BATCH_BEGIN At the beginning of each train batch
ON_TRAIN_BATCH_END At the end of each train batch
ON_VALID_BATCH_BEGIN At the beginning of each validation batch
ON_VALID_BATCH_END At the end of each validation batch
ON_TEST_BATCH_BEGIN At the beginning of each test batch
ON_TEST_BATCH_END At the end of each test batch
ON_FINALIZE Before the end of the process

Handlers

  • <input type="checkbox" disabled="" /> PrintTrainingStatus (Console)
  • <input type="checkbox" disabled="" /> PrintMonitors (Console)
  • <input type="checkbox" disabled="" /> PlotMonitors (Visdom)
  • <input type="checkbox" disabled="" /> PlotLosses (Visdom)
  • <input type="checkbox" disabled="" /> PlotMetrics (Visdom)
  • <input type="checkbox" disabled="" /> PlotCustomVariables (Visdom)
  • <input type="checkbox" disabled="" /> PlotLR (Visdom)
  • <input type="checkbox" disabled="" /> PlotAvgGradientPerLayer (Visdom)
  • <input type="checkbox" disabled="" /> Checkpoint
  • <input type="checkbox" disabled="" /> EarlyStopping

Contributing

How to contribute ?

  • <input type="checkbox" disabled="" /> Create a branch by feature and/or bug fix
  • <input type="checkbox" disabled="" /> Get the code
  • <input type="checkbox" disabled="" /> Commit and push
  • <input type="checkbox" disabled="" /> Create a pull request

Branch naming

Feature branch

feature/ [Short feature description] [Issue number]

Bug branch

fix/ [Short fix description] [Issue number]

Commits syntax:

Adding code:

+ Added [Short Description] [Issue Number]

Deleting code:

- Deleted [Short Description] [Issue Number]

Modifying code:

* Changed [Short Description] [Issue Number]

Merging code:

Y Merged [Short Description] [Issue Number]

Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for torch-kerosene, version 0.2.4
Filename, size File type Python version Upload date Hashes
Filename, size torch-kerosene-0.2.4.tar.gz (41.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page