As I understand, in forward(), they compute the function and store the input and keep the place holder for the gradient from next node (by chain rule).
In backward(), from gradient of loss function, it compute all the gradient to be ready to optimize.
In step(), they update all gradient depend on your optimization method (SGD, Adam, RMSProp, etc).
So when you increase batch size, all computation cost  will raise which leads to an increase in time.