Currently, i’m looking for high level library that can help me to simplify the training code. After some searches, i found these libraries are promising: Ignite, TNT, and Torchbearer.
After skimming the contents, i found Ignite and TNT are closely similar each other in terms of usage and the design (based on driven API design) while torchbearer offer different design (such callback etc).
Wondering if anyone have insights about those libraries? The better question would be when to use and not to use Ignite vs TNT vs Torchbearer? Any pros and cons?
I’m one of the developers of torchbearer. Probably not qualified to talk about TNT or Ignite too much but I can give an overview. As I understand it, Ignite is predominantly a replacement of TNT, hence the similarity between them. Ignite is particularly useful if you have a large amount of non-standard code but still want some of the support offered by a training library. Torchbearer makes a few more assumptions about your training process, but uses these to offer more features out of the box (like visdom and tensorboard logging, checkpointing, etc.). So for particularly complex constructions, ignite is probably a better fit but can require a lot of code. For simpler problems, torchbearer can get things moving a bit easier / quicker. For a compaison and some links to other similar libraries have a look at our README: https://github.com/ecs-vlc/torchbearer. Obviously my opinion is biased so it’s probably still worth trying out both to be sure.
@ethanwharris thanks for presenting Ignite too !
Just for the context, this question was initially asked as ignite/issue and which was redirected here to have more general user’s opinion.
I agree with “it’s probably still worth trying out both to be sure.”
Anyway, glad that you guys are also active in developing your library. Maybe once we could exchange some best practices and ideas