Alternatively, if the flag "throw_on_early_termination" is
      specified to be "True", all trainers will throw an error once
      one rank runs out of inputs, allowing these errors to be caught
      and handled according to application logic.
  Once all DDP processes have joined, the context manager will
  broadcast the model corresponding to the last joined process to
  all processes to ensure the model is the same across all
  processes (which is guaranteed by DDP).

  To use this to enable training with uneven inputs across
  processes, simply wrap this context manager around your training
  loop. No further modifications to the model or data loading is
  required.

  Warning:

    If the model or training loop this context manager is wrapped
    around has additional distributed collective operations, such
    as "SyncBatchNorm" in the model's forward pass, then the flag
    "throw_on_early_termination" must be enabled. This is because
