step(closure=None, **kwargs)
  Performs a single optimizer step and syncs parameters across all
  ranks.

  Parameters:
     **closure** (*Callable*) -- a closure that re-evaluates the
     model and returns the loss; optional for most optimizers.

  Returns:
     Optional loss depending on the underlying local optimizer.

  Return type:
     *Optional*[float]
