I’m not sure at all you can do that (training with multiprocessing and cpu).
Think that training is a sequential algorithm, thus you cannot train a model which uses shared weights.
I slightly know that torch multiprocessing allows to share variables between processes but I cannot see where you could make use of that here.
To do something more or less similar to what you are doing you should create an agnostic do_train function which takes as input the model you are working with. However for each time you call the function the model should be different.
To do the cat, you should pull the outputs of both networks to the main process.
If the problem is core jumps try to use
process = Process(target=do_train, args=(text_a.clone(), text_b.clone()))

To clone the tensor before getting in the mp