常用:
1. 减小batch size
2. 如果需要较大的batch size来达到预期训练指标效果,则使用gradient accumulation来累积梯度,达到等价效果的同时,占用显存小;
2.5 使用gradient-checkpointing,以时间换空间;
3. 使用低精度做训练。(mixed precision training) FP16+FP32或BF16+FP32;8bit-Adam optimizer(存INT8的,计算的时候转成FP32);
4. 减小训练数据样本的长度
9. Model并行或者Pipeline并行,把模型拆分至多卡
不常用:
5. 释放闲置内存;torch.cuda.empty_cache()
6. 缓解PyTorch的显存碎片;PYTORCH_CUDA_ALLOC_CONF和max_split_size_mb
7.使用更小的模型
8. 增大GPU显存
10. 使用nvidia-smi看到该GPU上的其他进程;可杀则杀;
Perplexity 查询结果:
Here are several solutions to resolve the "