Hi there.
Each worker will process a whole batch. You need to use plenty of CPUs in order to make it to be efficient.
Obviously pre-computing preprocessing leads to overfit unless you  make the system to do so in parallel to the training.
Btw try this library:

  
      
      GitHub
  
  
    

uploadcare/pillow-simd 32

The friendly PIL fork. Contribute to uploadcare/pillow-simd development by creating an account on GitHub.


  
  
    
    
  
  


and let me know if you got a good improvement.
Lastly, the “proper” way of knowing if there is a bottleneck is checking gpu utilization. If it’s always >95% you are ok. If you have peaks then you should check what can you do.