Set multiprocessing_context to fork works fine on linux.
I guess the reason is that the arg is a class variable (rather than an instance variable) and mutuable. As spawn pickles instances to use in new process, the old class variable is inaccessible in dataloader workers. And it makes sense  that multiprocessing_context=fork works fine, for forked processes share some resources.