How would you optimize a data loading and preprocessing pipeline in Python to ensure the GPU is never starved of data?