One reason might be that your mini-batch size is too small. If you increase the batch size the utilization should increase as well.
Mind that varying the mini-batch size can affect generalization and increasing it decreases the number of optimization steps you are doing in an epoch.
Another reason might be a slow preprocessing of the data. In that case, you can increase the data loader number of workers or try to speed up your preprocessing.