A Batch Size Scheduler library compatible with PyTorch DataLoaders.
- Using a big batch size has several advantages:
- Better hardware utilization.
- Enhanced parallelism.
- Faster training.
- However, using a big batch size from the start may lead to a generalization gap.
- Therefore, the solution is to gradually increase the batch size, similar to a learning rate decay policy.
- See Don't Decay the Learning Rate, Increase the Batch Size.
-
LambdaBS
- sets the batch size to the base batch size times a given lambda. -
MultiplicativeBS
- sets the batch size to the current batch size times a given lambda. -
StepBS
- multiplies the batch size with a given factor at a given number of steps. -
MultiStepBS
- multiplies the batch size with a given factor each time a milestone is reached. -
ConstantBS
- multiplies the batch size by a given factor once and decreases it again to its base value after a given number of steps. -
LinearBS
- increases the batch size by a linearly changing multiplicative factor for a given number of steps. -
ExponentialBS
- increases the batch size by a given$\gamma$ each step. -
PolynomialBS
- increases the batch size using a polynomial function in a given number of steps. -
CosineAnnealingBS
- increases the batch size to a maximum batch size and decreases it again following a cyclic cosine curve. -
IncreaseBSOnPlateau
- increases the batch size each time a given metric has stopped improving for a given number of steps. -
CyclicBS
- cycles the batch size between two boundaries with a constant frequency, while also scaling the distance between boundaries. -
CosineAnnealingBSWithWarmRestarts
- increases the batch size to a maximum batch size following a cosine curve, then restarts while also scaling the number of iterations until the next restart. -
OneCycleBS
- decreases the batch size to a minimum batch size then increases it to a given maximum batch size, following a linear or cosine annealing strategy. -
SequentialBS
- calls a list of schedulers sequentially given a list of milestone points which reflect which scheduler should be called when. -
ChainedBSScheduler
- chains a list of batch size schedulers and calls them together each step.
Please install PyTorch first before installing this repository.
pip install bs-scheduler
The library is licensed under the BSD-3-Clause license.
To be added...