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.
- Basic training logic and user defined trainers
- Fine grained event system with multiple handlers
- Multiple metrics and criterions support
- Automatic configuration parsing and model instantiation
- Automatic support of mixed precision with Apex and dataparallel training
- Automatic Visdom logging
- Integrated Ignite metrics and Pytorch criterions
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)
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 |
- PrintTrainingStatus (Console)
- PrintMonitors (Console)
- PlotMonitors (Visdom)
- PlotLosses (Visdom)
- PlotMetrics (Visdom)
- PlotCustomVariables (Visdom)
- PlotLR (Visdom)
- PlotAvgGradientPerLayer (Visdom)
- Checkpoint
- EarlyStopping
- Create a branch by feature and/or bug fix
- Get the code
- Commit and push
- Create a pull request
feature/ [Short feature description] [Issue number]
fix/ [Short fix description] [Issue number]
+ Added [Short Description] [Issue Number]
- Deleted [Short Description] [Issue Number]
* Changed [Short Description] [Issue Number]
Y Merged [Short Description] [Issue Number]
Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY