结论先行:GPU利用率低通常是数据预处理瓶颈。用多进程DataLoader、预加载、缓存预处理三步优化,GPU利用率能从50%提到90%。
一、为什么GPU会等数据
CPU做数据预处理太慢,GPU算完了数据还没准备好。nvidia-smi看GPU利用率长期低于70%,基本就是数据瓶颈。
二、优化方法
DataLoader设num_workers=4到8,多进程并行加载。prefetch_factor=2预加载下一批。预处理好的数据缓存到内存或磁盘,不要每步都重新算。
三、大数据集怎么办
数据集超过内存时,先预处理好存成二进制格式,训练时mmap直接读。不要每步都从原始文件解析。
四、CPU核数也要够
DataLoader多进程需要CPU核数支撑。8核CPU配4个worker刚好,16核可以配8个worker。
补充:数据预处理最慢的往往是tokenizer,把tokenizer放到GPU上跑或预tokenize好存成memmap文件。这样DataLoader只负责读文件,速度快很多。
数据加载优化的GPU实例可在GPU算力平台选择。




