torch.cuda.empty_cache()释放未使用的缓存内存(如未释放的张量),但需注意频繁清理可能影响性能。del关键字删除不再需要的张量(如中间结果、旧模型),配合gc.collect()手动触发垃圾回收,彻底释放内存。nvidia-smi实时查看GPU内存占用,或torch.cuda.memory_summary()查看PyTorch内存详情,快速定位内存泄漏。torch.cuda.amp(自动混合精度)将计算转换为FP16,减少内存占用(约50%),同时保持模型精度。DataLoader的num_workers(如4-8),启用多进程并行加载数据,避免CPU成为瓶颈;pin_memory=True,加速数据从CPU到GPU的传输。torch.quantization)减少模型参数。accumulation_steps=4),不增加显存占用。torch.utils.checkpoint替代部分层的激活保存,反向传播时重新计算激活值,减少显存占用(约30%-50%),适合Transformer等大型模型。tensor.cpu()),仅在需要时移回GPU,缓解GPU内存压力(适合超大型模型)。torch.nn.DataParallel将模型复制到多个GPU,分散batch处理,但通信开销较大。torch.distributed模块实现多GPU数据并行,通信效率更高(比DP快2-3倍),适合大规模训练。os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'expandable_segments:True'开启可扩展内存段,减少内存碎片化。以上策略可根据具体场景组合使用(如小模型用混合精度+梯度累积,大模型用FSDP+梯度检查点),逐步优化内存使用。