BERT minimal batch size

Is there a minimum batch size for training/re-fining a BERT model on custom data?

Could you name any cases where a mini batch size between 1-8 would make sense?

Would a batch size of 1 make sense at all?

Small mini-batch size leads to a big variance in the gradients. In theory, with a sufficiently small learning rate, you can learn anything even with very small batches.

In practice, Transformers are known to work best with very large batches. You can simulate large batches by accumulating gradients from the mini-batches and only do the update once in several steps.

Also, when finetuning BERT, you might also think of fine-tuning only the last layer (or several last layers), so you save some memory on the parameter gradients and can have bigger batches.

• Thanks! Will tag as the correct answer! Could you please provide an example for ‘accumulating gradients from the mini-batches and update once in several steps’? – Predicted Life Nov 27 '20 at 10:32
• In PyTorch, it is done easily by calling loss.backward() after each batch (the gradients get added to the existing ones) and calling optimizer.step() with optimizer.zero_grad() only in every k-th step. – Jindřich Nov 27 '20 at 10:42