Thanks for the reply.
I know that each worker processes the data defined in the getitem() method- the issue was two fold, the sheer time and the locking method of the dataloader.
I also know the bottleneck is this step because I profiled the usage using cProfile.  Nearly all the compute time is spent in dataloader methods.  Running the script with predefined tensors (putting the full weight on GPU side) is about 20 seconds per epoch, while with the transforms is about 4 minutes.
I guess the dataloader already implements PIL methods, can this pillow-simd be simply swapped?
Andy