All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- make
expdir
incatalyst-dl run
optional (#1249)
- (#1230)
- FairScale support
- DeepSpeed support
utils.ddp_sync_run
function for synchronous ddp run- CIFAR10 and CIFAR100 datasets from torchvision (no cv-based requirements)
- Catalyst Engines demo
dataset_from_params
support in config API (#1231)- transform from params support for config API added (#1236)
- samplers from params support for config API added (#1240)
- recursive registry.get_from_params added (#1241)
- albumentations integration (#1238)
- Profiler callback (#1226)
- (#1230)
- loaders creation now wrapper with
utils.ddp_sync_run
forutils.ddp_sync_run
data preparation - runner support stage cleanup: loaders and callbacks will be deleted on the stage end
- Apex-based engines now support both APEXEngine and ApexEngine registry names
- loaders creation now wrapper with
- multiprocessing in minimal tests hotfix (#1232)
- Tracing callback hotfix (#1234)
- Engine hotfix for
predict_loader
(#1235) - (#1230)
- Hydra hotfix due to
1.1.0
version changes
- Hydra hotfix due to
HuberLoss
name conflict for pytorch 1.9 hotfix (#1239)
- Reinforcement learning tutorials (#1205)
- customization demo (#1207)
- FAQ docs: multiple input and output keys, engine tutorial (#1202)
- minimal Config API example (#1215)
- Distributed RL example (Catalyst.RL 2.0 concepts) (#1224)
- SklearnCallback as integration of sklearn metrics (#1198)
- tests moved to
tests
folder (#1208) - pipeline tests moved to
tests/pipelines
(#1215) - updated NeptuneLogger docstrings (#1223)
- customizing what happens in
train()
notebook (#1203) - transforms imports under catalyst.data (#1211)
- change layerwise to layerwise_params (#1210)
- add torch metrics support (#1195)
- add Config API support for BatchTransformCallback (#1209)
- Weights and Biases Logger (
WandbLogger
) (#1176) - Neptune Logger (
NeptuneLogger
) (#1196) log_artifact
method for logging arbitrary files like audio, video, or model weights toILogger
andIRunner
(#1196)
- Nifti Reader (NiftiReader) (#1151)
- CMC score and callback for ReID task (ReidCMCMetric and ReidCMCScoreCallback) (#1170)
- Market1501 metric learning datasets (Market1501MLDataset and Market1501QGDataset) (#1170)
- extra kwargs support for Engines (#1156)
- engines exception for unknown model type (#1174)
- a few docs to the supported loggers (#1174)
TensorboardLogger
switched fromglobal_batch_step
counter toglobal_sample_step
one (#1174)TensorboardLogger
logs loader metricon_loader_end
rather thanon_epoch_end
(#1174)prefix
renamed tometric_key
forMetricAggregationCallback
(#1174)micro
,macro
andweighted
aggregations renamed to_micro
,_macro
and_weighted
(#1174)BatchTransformCallback
updated (#1153)
- auto
torch.sigmoid
usage formetrics.AUCMetric
andmetrics.auc
(#1174)
- hitrate calculation issue (#1155)
- ILoader wrapper usage issue with Runner (#1174)
- counters for ddp case (#1174)
- minimal requirements issue (#1147)
- nested dicts in
loaders_params
/samplers_params
overriding (#1150)
- Additive Margin SoftMax(AMSoftmax) (#1125)
- Generalized Mean Pooling(GeM) (#1084)
- Key-value support for CriterionCallback (#1130)
- Engine configuration through cmd (#1134)
- Extra utils for thresholds (#1134)
- Added gradient clipping function to optimizer callback (1124)
- FactorizedLinear to contrib (1142)
- Extra init params for
ConsoleLogger
(1142) - Tracing, Quantization, Onnx, Pruninng Callbacks (1127)
- CriterionCallback now inherits from BatchMetricCallback #1130)
- united metrics computation logic
- Data-Model device sync and
Engine
logic duringrunner.predict_loader
(#1134) - BatchLimitLoaderWrapper logic for loaders with shuffle flag (#1136)
- config description in the examples (1142)
- Config API deprecated parsings logic (1142) (1138)
- RecSys metrics Top_k calculations (#1140)
_key_value
for schedulers in case of multiple optimizers (#1146)
[21.03] - 2021-03-13 (#1095)
Engine
abstraction to support various hardware backends and accelerators: CPU, GPU, multi GPU, distributed GPU, TPU, Apex, and AMP half-precision training.Logger
abstraction to support various monitoring tools: console, tensorboard, MLflow, etc.Trial
abstraction to support various hyperoptimization tools: Optuna, Ray, etc.Metric
abstraction to support various of machine learning metrics: classification, segmentation, RecSys and NLP.- Full support for Hydra API.
- Full DDP support for Python API.
- MLflow support for metrics logging.
- United API for model post-processing: tracing, quantization, pruning, onnx-exporting.
- United API for metrics: classification, segmentation, RecSys, and NLP with full DDP and micro/macro/weighted/etc aggregations support.
Experiment
abstraction merged intoRunner
one.- Runner, SupervisedRunner, ConfigRunner, HydraRunner architectures and dependencies redesigned.
- Internal settings and registry mechanisms refactored to be simpler, user-friendly and more extendable.
- Bunch of Config API test removed with Python API and pytest.
- Codestyle now supports up to 99 symbols per line :)
- All callbacks/runners moved for contrib to the library core if was possible.
Runner
abstraction simplified to store only current state of the experiment run: all validation logic was moved to the callbacks (by this way, you could easily select best model on various metrics simultaneously).Runner.input
andRunner.output
merged into unitedRunner.batch
storage for simplicity.- All metric moved from
catalyst.utils.metrics
tocatalyst.metrics
. - All metrics now works on scores/metric-defined-input rather that logits (!).
- Logging logic moved from
Callbacks
to appropriateLoggers
. KorniaCallbacks
refactored toBatchTransformCallback
.
- Lots of unnecessary contrib extensions.
- Transforms configuration support through Config API (could be returned in next releases).
- Integrated Python cmd command for model pruning, swa, etc (should be returned in next releases).
CallbackOrder.Validation
andCallbackOrder.Logging
- All 2020 year backward compatibility fixes and legacy support.
- Docs rendering simplified.
- LrFinderCallback.
Release docs, Python API minimal examples, Config/Hydra API example.
- Inference mode for face layers (#1045)
- Fix bug in
OptimizerCallback
when mixed-precision params set both: in callback arguments and in distributed_params (#1042)
- CVS Logger (#1005)
- DrawMasksCallback (#999)
- (#1002)
- a few docs
- (#998)
reciprocal_rank
metric- unified recsys metrics preprocessing
- (#1018)
- readme examples for all supported metrics under
catalyst.metrics
wrap_metric_fn_with_activation
for model outputs wrapping with activation- extra tests for metrics
- readme examples for all supported metrics under
- (#1039)
per_class=False
option for metrics callbacksPrecisionCallack
,RecallCallack
for multiclass problems- extra docs
- docs update (#1000)
AMPOptimizerCallback
andOptimizerCallback
were merged (#1007)- (#1017)
- fixed bug in
SchedulerCallback
- Log LRs and momentums for all param groups, not only for the first one
- fixed bug in
- (#1002)
tensorboard, ipython, matplotlib, pandas, scikit-learn
moved to optional requirementsPerplexityMetricCallback
moved tocatalyst.callbacks
fromcatalyst.contrib.callbacks
PerplexityMetricCallback
renamed toPerplexityCallback
catalyst.contrib.utils.confusion_matrix
renamed tocatalyst.contrib.utils.torch_extra
- many parts of
catalyst.data
moved tocatalyst.contrib.data
catalyst.data.scripts
moved tocatalyst.contrib.scripts
catalyst.utils
,catalyst.data.utils
andcatalyst.contrib.utils
restructuredReaderSpec
renamed toIReader
SupervisedExperiment
renamed toAutoCallbackExperiment
- gain functions renamed for
dcg
/ndcg
metrics (#998) - (#1014)
- requirements respecification:
catalyst[cv]
,catalyst[dev]
,catalyst[log]
,catalyst[ml]
,catalyst[nlp]
,catalyst[tune]
- settings respecification
- extra tests for settings
- contrib refactoring
- requirements respecification:
- iou and dice metrics moved to per-class computation (#1031)
- (#1002)
KNNMetricCallback
sklearn
mode forConfusionMatrixLogger
catalyst.data.utils
- unnecessary
catalyst.tools.meters
- todos for unnecessary docs
- (#1014)
- transformers-based contrib (too unstable)
- (#1018)
- ClasswiseIouCallback/ClasswiseJaccardCallback as deprecated on (should be refactored in future releases)
- prevented modifying config during the experiment and runner initialization (#1004)
- a few test for RecSys MAP computation (#1018)
- leave batch size the same for default distributed training (#1023)
- (#1032)
- Apex: now you can use apex for multiple models training
- Apex: DataParallel is allowed for opt_level other than "O1"
- DCG, nDCG metrics (#881)
- MAP calculations #968
- hitrate calculations [#975] (catalyst-team#975)
- extra functions for classification metrics (#966)
OneOf
andOneOfV2
batch transforms (#951)precision_recall_fbeta_support
metric (#971)- Pruning tutorial (#987)
- BatchPrefetchLoaderWrapper (#986)
- DynamicBalanceClassSampler (#954)
- update Catalyst version to
20.10.1
for tutorials (#967) - added link to dl-course (#967)
IRunner
-> simplifiedIRunner
(#984)- docs were restructured (#985)
set_global_seed
moved fromutils.seed
toutils.misc
(#986)
BatchTransformCallback
- addnn.Module
transforms support (#951)- moved to
contiguous
view for accuracy computation (#982) - fixed torch warning on
optimizer.py:140
(#979)
- MRR metrics calculation (#886)
- docs for MetricCallbacks (#947)
- SoftMax, CosFace, ArcFace layers to contrib (#939)
- ArcMargin layer to contrib (#957)
- AdaCos to contrib (#958)
- Manual SWA to utils (#945)
- fixed path to
CHANGELOG.md
file and add information about unit test toPULL_REQUEST_TEMPLATE.md
([#955])(catalyst-team#955) catalyst-dl tune
config specification - now optuna params are grouped understudy_params
(#947)IRunner._prepare_for_stage
logic moved toIStageBasedRunner.prepare_for_stage
(#947)- now we create components in the following order: datasets/loaders, model, criterion, optimizer, scheduler, callbacks
MnistMLDataset
andMnistQGDataset
data split logic - now targets of the datasets are disjoint (#949)- architecture redesign (#953)
- experiments, runners, callbacks grouped by primitives under
catalyst.experiments
/catalyst.runners
/catalyst.callbacks
respectively - settings and typing moved from
catalyst.tools.*
tocatalyst.*
- utils moved from
catalyst.*.utils
tocatalyst.utils
- experiments, runners, callbacks grouped by primitives under
- swa moved to
catalyst.utils
(#963)
AMPOptimizerCallback
- fix grad clip fn support (#948)- removed deprecated docs types (#947) (#952)
- docs for a few files (#952)
- extra backward compatibility fixes (#963)
- Runner registry support for Config API (#936)
catalyst-dl tune
command - Optuna with Config API integration for AutoML hyperparameters optimization (#937)OptunaPruningCallback
alias forOptunaCallback
(#937)- AdamP and SGDP to
catalyst.contrib.nn.criterion
(#942)
- Config API components preparation logic moved to
utils.prepare_config_api_components
(#936)
MovieLens dataset
loader (#903)force
andbert-level
keywords tocatalyst-data text2embedding
(#917)OptunaCallback
tocatalyst.contrib
(#915)DynamicQuantizationCallback
andcatalyst-dl quantize
script for fast quantization of your model (#890)- Multi-scheduler support for multi-optimizer case (#923)
- Native mixed-precision training support (#740)
OptiomizerCallback
- flaguse_fast_zero_grad
for faster (and hacky) version ofoptimizer.zero_grad()
(#927)IOptiomizerCallback
,ISchedulerCallback
,ICheckpointCallback
,ILoggerCallback
as core abstractions for Callbacks (#933)- flag
USE_AMP
for PyTorch AMP usage (#933)
- autoresume option for Config API (#907)
- a few issues with TF projector (#917)
- batch sampler speed issue (#921)
- add apex key-value optimizer support (#924)
- runtime warning for PyTorch 1.6 (920)
- Apex synbn usage (920)
- Catalyst dependency on system git (922)
CMCScoreCallback
(#880)- kornia augmentations
BatchTransformCallback
(#862) average_precision
andmean_average_precision
metrics (#883)MultiLabelAccuracyCallback
,AveragePrecisionCallback
andMeanAveragePrecisionCallback
callbacks (#883)- minimal examples for multiclass and multilabel classification (#883)
- experimental TPU support (#893)
- add
Imagenette
,Imagewoof
, andImagewang
datasets (#902) IMetricCallback
,IBatchMetricCallback
,ILoaderMetricCallback
,BatchMetricCallback
,LoaderMetricCallback
abstractions (#897)HardClusterSampler
inbatch sampler (#888)
- all registries merged to one
catalyst.registry
(#883) mean_average_precision
logic merged withaverage_precision
(#897)- all imports moved to absolute (#905)
catalyst.contrib.data
merged tocatalyst.data
(#905)- {breaking} Catalyst transform
ToTensor
was renamed toImageToTensor
(#905) TracerCallback
moved tocatalyst.dl
(#905)ControlFlowCallback
,PeriodicLoaderCallback
moved tocatalyst.core
(#905)
log
parameter toWandbLogger
(#836)- hparams experiment property (#839)
- add docs build on push to master branch (#844)
WrapperCallback
andControlFlowCallback
(#842)BatchOverfitCallback
(#869)overfit
flag for Config API (#869)InBatchSamplers
:AllTripletsSampler
andHardTripletsSampler
(#825)
- Renaming (#837)
SqueezeAndExcitation
->cSE
ChannelSqueezeAndSpatialExcitation
->sSE
ConcurrentSpatialAndChannelSqueezeAndChannelExcitation
->scSE
_MetricCallback
->IMetricCallback
dl.Experiment.process_loaders
->dl.Experiment._get_loaders
LRUpdater
become abstract class (#837)calculate_confusion_matrix_from_arrays
changed params order (#837)dl.Runner.predict_loader
uses_prepare_inner_state
and cleansexperiment
(#863)toml
to the dependencies (#872)
crc32c
dependency (#872)
workflows/deploy_push.yml
failed to push some refs (#864).dependabot/config.yml
contained invalid details (#781)LanguageModelingDataset
(#841)global_*
counters inRunner
(#858)- EarlyStoppingCallback considers first epoch as bad (#854)
- annoying numpy warning (#860)
PeriodicLoaderCallback
overwrites best state (#867)OneCycleLRWithWarmup
(#851)
- docs structure were updated during (#822)
utils.process_components
moved fromutils.distributed
toutils.components
(#822)catalyst.core.state.State
merged tocatalyst.core.runner._Runner
(#823) (backward compatibility included)catalyst.core.callback.Callback
now works directly withcatalyst.core.runner._Runner
state_kwargs
renamed tostage_kwargs
- Circle loss implementation (#802)
- BatchBalanceSampler for metric learning and classification (#806)
CheckpointCallback
: new argumentload_on_stage_start
which acceptsstr
andDict[str, str]
(#797)- LanguageModelingDataset to catalyst[nlp] (#808)
- Extra counters for batches, loaders and epochs (#809)
TracerCallback
(#789)
CheckpointCallback
: additional logic for argumentload_on_stage_end
- acceptsstr
andDict[str, str]
(#797)- counters names for batches, loaders and epochs (#809)
utils.trace_model
: changed logic -runner
argument was changed topredict_fn
(#789)- redesigned
contrib.data
andcontrib.datasets
(#820) catalyst.utils.meters
moved tocatalyst.tools
(#820)catalyst.contrib.utils.tools.tensorboard
moved tocatalyst.contrib.tools
(#820)
- Added new docs and minimal examples (#747)
- Added experiment to registry (#746)
- Added examples with extra metrics (#750)
- Added VAE example (#752)
- Added gradient tracking (#679
- Added dependabot (#771)
- Added new test for Config API (#768)
- Added Visdom logger (#769)
- Added new github actions and templates (#777)
- Added
save_n_best=0
support for CheckpointCallback (#784) - Added new contrib modules for CV (#793)
- Added new github actions CI (#791)
- Changed
Alchemy
dependency (fromalchemy-catalyst
toalchemy
) (#748) - Changed warnings logic (#719)
- Github actions CI was updated (#754)
- Changed default
num_epochs
to 1 forState
(#756) - Changed
state.batch_in
/state.batch_out
tostate.input
/state.output
(#763) - Moved
torchvision
dependency fromcatalyst
tocatalyst[cv]
(#738))
- Fixed docker dependencies ($753)
- Fixed
text2embeddding
script (#722) - Fixed
utils/sys
exception (#762) - Returned
detach
method (#766) - Fixed timer division by zero (#749)
- Fixed minimal torch version (#775)
- Fixed segmentation tutorial (#778)
- Fixed Dockerfile dependency (#780)