Ubuntu下PyTorch内存不足的排查与优化

一、先快速定位是GPU显存还是系统内存
二、GPU显存不足时的高效做法
三、系统内存不足时的处理
四、可直接套用的代码片段
import torch, gcfrom torch.cuda.amp import autocast, GradScalermodel.train()optimizer.zero_grad()scaler = GradScaler()for data, target in train_loader:with autocast():output = model(data)loss = criterion(output, target)scaler.scale(loss).backward()scaler.step(optimizer)scaler.update()# 释放本轮临时张量del output, loss, data, targetgc.collect()torch.cuda.empty_cache()import torch, psutil, numpy as npdef find_max_batch(dataset, start=4, max_attempts=5):bs = startfor _ in range(max_attempts):try:_ = torch.stack([dataset[i][0] for i in range(bs)])# 仅测试张量分配bs *= 2except RuntimeError:bs = max(1, bs // 2)return bsdef monitor(interval=1):while True:m = psutil.virtual_memory()print(f"Mem: {m.total/1e9:.1f}GB used: {m.percent}% avail: {m.available/1e9:.1f}GB")time.sleep(interval)上述模板覆盖了AMP、显存清理与动态批大小,配合系统监控更易定位瓶颈。
五、实用命令清单
借助RubyGnome2库进行GTK下的Ruby GUI编程的基本方法
哑巴模型Jev使用实用指南:运行机制、原语定义、运行时环境配置及业务场景实用指南
编写Ruby脚本来对Twitter用户的数据进行深度挖掘
从零搭建自己的Codex Plugin Marketplace的实践指南实用指南
如何解决PHPExcel不兼容php7.4版本
thinkphp使用url请求调用ThinkApi天气教程【图文详解】