Releases: nodefluxio/vortex
Release list
v0.3.0
simplify vortex implementation and use Pytorch Lightning for trainer.
Added
- Pytorch Lightning training pipeline
- registry class
- model base class
- add 'config.trainer.validation_interval' field with same functionality as 'config.validator.val_epoch'
- add 'config.trainer.logger' field with same functionality as 'config.logging'
- add 'config.dataloader.train' and 'config.dataloader.eval' field to support different args for train and val dataloader
- support for bool value for logger config, with default logger use tensorboard logger
- backbone base class
- backbone class for main models
Changed
model_componentsis removed, and changed with model base class- deprecating 'config.seed', and move to 'config.trainer.seed'
- deprecating
stageargument increate_model - all defined backbones use backbone base class
- removed various old features affected by API redesign:
cli,predictor,pipelines
v0.2.1
This is the last version that will use our own training engine. In the next release (v0.3) we'll be using Pytorch Lightning for training engine and model creation API.
Added
-
learning rate scheduler value plan visualizer script in
scripts/visualize_learning_rate.py -
save_best_metricsconfig to save model checkpoint on best metrics -
always save checkpoint of last epoch model
-
save
best_metricsvalue in model checkpoint -
support for experimental DETR model, this model is still unable to be exported caused by the limitation in current exporter design
-
support for per parameter options (see PyTorch Optimizer) using
'param_groups'key in model components. -
jit and export global context, see
vortex/development/networks/modules/utils/config.py -
support for per parameter options (see PyTorch Optimizer)
using'param_groups'key in model components. -
support for None
additional_inputshape in model for scalar tensor input. -
support for image size type of list (w,h), or non-square image, in predict and export.
-
validation loss calculation to experiment logger
-
support for changing batch norm layer in all backbone with
norm_layerargument. -
new backbone models: CSPNet, ResNest, RexNet, RegNet, TResNet. see more details in spreadsheet or csv summary
-
darknet weight converter in scripts/convert_darknet_weight.py
-
yolov3 converted darknet weight and config file
-
get model path from
config.checkpointif found and valid forpredictandexport -
yolov3 support for changing backbone stage to output with
backbone_stagesargument. -
BasePredictionPipelineargument to plot visualized result. -
new
predictandir_runtime_predictargument to not visualise and not save prediction result. -
new
listcommand in main cli to list available components -
shape inference for onnx export
Changed
- model checkpoint not save on hyperparameter optimization
save_epochconfig is not required- Fix bug on scheduler.step() placement on trainer
- Update docs on supported Pytorch scheduler
- changed
StepLRWithBurnIntoStepLRWithWarmUpscheduler - changed
CosineLRSchedulertoCosineLRWithWarmUpscheduler - changed
TanhLRSchedulertoTanhLRWithWarmUpscheduler BaseTrainer.create_optimizeronly accept model parameters dict (e.g. frommodel.parameters()) instead of the model itself- make
class_labelfor detection not required - update backbone components
- use mobilenetv3 definition and pretrained from rwightman
- improved cli help message
- improved progress bar, on
trainalso display some metrics when training
Fixed
- Fix error when using ir_runtime_validate with uneven batch splitting caused by different batch size on the last batch sample
- Fix error when
save_best_metricsnot present in experiment file - Fix ONNX graph ops to convert
iou_thresholdas input - lr scheduler bug when arguments changed and resumed
- yolov3 model definition
Release v0.2.0
Added
-
Added new classification metrics for validation :
- roc_curve
- precision
- recall
- f1-score
-
new checkpoint (saved) model format
checkpoint model is loaded as a dictionary with:-
default (required) member in checkpoint:
epoch--> number of epochs the model have been trainedstate_dict-> trained model's state dict, this is the same as the entire data as the old formatoptimizer_state--> optimizer state in trainingconfig--> configuration used to train the model
-
additional (optional) member (if any):
class_names--> model's output class names mapmetrics--> per epoch training metricsscheduler_state->state_dictfor trainer's lr scheduler
-
-
support for resume training in training pipeline using
checkpointfield in config file and--resumeflag in train command. -
checkpointfield in configuration file to point to the checkpoint model used to resume training if--resumeflag is given.init_state_dictis still possible to be used but will automatically loadstate_dictto model even if--resumeflag is not defined, but removed from docs. -
model checkpoint update script in
script/update_model.py -
Now possible to access
class_namesandinput_specsattributes from bothPytorchPredictionPipeline.modelandIRPredictionPipeline.model -
config deprecation checks for new config format
-
Support for adding external model from user space
-
Added
DALIDataLoaderandnvidia_daliaugmentation modulenvidia_daliaugmentation module must be used withDALIDataLoaderDALIDataLoadercan use other augmentation module, however ifnvidia_daliaugmentation module if specified in the experiment file, it must be in the first orderDALIDataLoaderutilizeraylibrary to paralelize external module augmentation for each batch sample
Changed
- reading
class_namesattribute from checkpoint in prediction and export pipeline class_namesin dataset, prediction, and export is optional. If not specified orNone, will create a numbered class label[class_0, class_1, ..., class_n]class_namesmoved fromPytorchPredictionPipeline.class_namestoPytorchPredictionPipeline.model.class_names( also applied toIRPredictionPipeline)- None in string to normal python None
- new config format, as described in #7.
- change dataset name field
datasettonameinconfig.dataset.trainandconfig.dataset.eval. - move
devicefromconfig.trainerto mainconfig. - move
dataloaderfield fromconfig.datasetto mainconfig. - change dataloader module from
dataloadertomoduleinconfig.dataloader. - change default dataloader module name from
DataLoadertoPytorchDataLoaderinconfig.dataloader.module. - change
schedulertolr_schedulerinconfig.trainer. - change field
validationtovalidatorand move it fromconfig.trainerto mainconfig.
- change dataset name field
- Refactor
DatasetWrapperintoBasicDatasetWrapperandDefaultDatasetWrapper - Change output type of BaseRuntime
__call__method to list of orderedDict - It is now possible to override image auto padding in dataset object by adding and set
self.disable_image_auto_pad = Trueattribute on thecollate_fnobject provided by themodel_components - Refactor package into 2 namespace packages :
vortex.runtimeandvortex.development. In which casevortex.developmentis depend onvortex.runtime, butvortex.runtimecan be installed as a standalone package for minimal requirement inferencing library
Initial Release
Added
- Python package installation
- Command line interface
- Initial documentation
- Base development pipeline : training, validation, export, predict, ir-predict, ir-validation, hypopt
- Modular design
- Integration with image augmentation library ( Albumentations )
- Integration with hyperparameter optimization library ( Optuna )
- Integration with 3rd party experiment logger ( Comet.ml )
- Graph export to Torchscript and ONNX
- Visual report of model's performance and resource usage, see this example
- Various architecture support
- 50 + infamous backbone networks
- Classification and Detection architecture support