DataParallel
class torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)
Implements data parallelism at the module level.
This container parallelizes the application of the given "module"
   by splitting the input across the specified devices by chunking in
   the batch dimension (other objects will be copied once per device).
   In the forward pass, the module is replicated on each device, and
   each replica handles a portion of the input. During the backwards
   pass, gradients from each replica are summed into the original
   module.
The batch size should be larger than the number of GPUs used.
Warning:
 It is recommended to use "DistributedDataParallel", instead of
 this class, to do multi-GPU training, even if there is only a
 single node. See: Use nn.parallel.DistributedDataParallel instead
 of multiprocessing or nn.DataParallel and Distributed Data
 Parallel.

Arbitrary positional and keyword inputs are allowed to be passed