Ubuntu系统管理PyTorch存储空间的核心方法
PyTorch运行时会缓存计算结果以加速后续操作,但过度缓存会占用大量GPU/系统内存。通过以下命令可有效释放内存:
torch.cuda.empty_cache()
函数清空GPU缓存,释放未被引用的显存。该操作不会影响正在使用的张量,但会清理缓存中的临时数据。del
关键字删除不再使用的张量或模型变量(如del model, inputs, outputs
),随后调用gc.collect()
触发Python垃圾回收机制,彻底释放内存。通过调整模型结构和训练参数,从根源上减少内存占用:
torch.cuda.amp
模块实现自动混合精度训练,在保持数值稳定性的同时,将内存占用减少约50%(float16 vs float32)。示例代码:scaler = torch.cuda.amp.GradScaler()
with torch.cuda.amp.autocast():
outputs = model(inputs)
loss = criterion(outputs, targets)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
accumulation_steps=4
表示累积4个小批次的梯度后更新)。针对Ubuntu系统的整体存储优化,确保存放PyTorch数据集、模型的磁盘空间充足:
sudo apt-get clean
清理APT缓存(软件包下载文件),sudo apt-get autoremove
删除无用依赖包,释放系统磁盘空间。/home/user/data
):
sudo mkfs.ext4 /dev/sdb
(替换为实际磁盘路径);sudo mkdir -p /home/user/data
;sudo mount /dev/sdb /home/user/data
;/dev/sdb /home/user/data ext4 defaults 0 2
添加到/etc/fstab
文件,重启后自动挂载。sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 持久化配置(添加到/etc/fstab)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
通过工具监控PyTorch的内存占用,定位瓶颈:
torch.cuda.memory_summary()
查看GPU内存分配详情,torch.cuda.memory_allocated()
获取当前分配的显存大小,帮助识别内存泄漏或过度使用的环节。nvidia-smi
命令实时查看GPU内存使用率(如nvidia-smi -l 1
每秒刷新),或使用htop
监控系统内存占用。