During Multiprocessing each batch is splitted over all available specified GPUs or CPUs. This is especially helpfull to train large networks with an effective batchsize > 1.
Since your network consists of only 1 Linear layer, the forward pass is really fast. The problem of parallel training is that it has to be synchronized at some points (e.g. to accumulate gradients). Thus synchronization is usually at data input and prediction output/loss calculation.
Regarding this, your model (at least the really fast forward pass) is indeed executed in parallel, but the synchronization results in a serialization somehow to accumulate gradients. If you compare it with a huge network consisting of an arbitrary number of convolutional layers, the forward pass in this huge network takes a much greater amount of time (which is executed in parallel) and thus the gains are much higher.