深度学习训练环境磁盘空间清理指南

1156 字
6 分钟
深度学习训练环境磁盘空间清理指南

背景#

跑深度学习实验最头疼的事情之一,就是磁盘空间不知不觉就被占满了。模型权重、训练 checkpoint、数据集、各种缓存……几天不清理,几百G 的空间就消失了。这篇文章整理一下常用的清理方法,涵盖数据集、checkpoint、模型缓存、包管理器等各个方面。

1. 数据集管理#

数据集往往是占用空间最大的部分,但清理时需要谨慎——删错了可能要重新下载,很浪费时间。

清理不用的数据集#

先检查哪些数据集占空间最大:

Terminal window
# 查看 Hugging Face 数据集缓存
du -sh ~/.cache/huggingface/datasets/* | sort -h
# 查看自定义数据集目录
du -sh /path/to/datasets/* | sort -h

对于确认不再需要的数据集,直接删除即可。对于暂时不用但以后可能需要的,可以考虑:

迁移到 HDD#

SSD 空间有限,可以把不常用的数据集迁移到 HDD:

Terminal window
# 移动数据集
mv /ssd/datasets/imagenet /hdd/datasets/
# 创建软链接,保持代码兼容性
ln -s /hdd/datasets/imagenet /ssd/datasets/imagenet

这样代码里读取 /ssd/datasets/imagenet 仍然能正常工作,但实际上数据存储在 HDD 上。

压缩不常用数据集#

对于读取频率不高的数据集,可以压缩存储:

Terminal window
# 压缩为 tar.gz
tar -czf dataset.tar.gz /path/to/dataset
# 使用时解压到临时目录
tar -xzf dataset.tar.gz -C /tmp/

2. Checkpoint 管理#

训练过程中保存的 checkpoint 是磁盘占用的另一大来源。以 PyTorch Lightning 为例:

Lightning 的自动清理#

Lightning 提供了方便的 checkpoint 管理:

from pytorch_lightning.callbacks import ModelCheckpoint
# 只保留最新的 3 个 checkpoint
checkpoint_callback = ModelCheckpoint(
save_top_k=3,
monitor="val_loss",
mode="min",
filename="{epoch}-{val_loss:.2f}"
)
# 或者只保留验证指标最好的 1 个
checkpoint_callback = ModelCheckpoint(
save_top_k=1,
monitor="val_acc",
mode="max"
)

手动清理旧 checkpoint#

如果没有使用自动清理,可以写脚本定期删除:

Terminal window
# 保留最新的 5 个 checkpoint,删除其余的
ls -t checkpoints/*.ckpt | tail -n +6 | xargs rm -f
# 或者按时间删除,比如删除 7 天前的 ind checkpoints/ -name "*.ckpt" -mtime +7 -delete

只保存必要的内容#

checkpoint 通常包含模型权重、优化器状态、学习率调度器状态等。如果只需要模型权重,可以只保存 state_dict

# 只保存模型权重,文件更小
torch.save(model.state_dict(), "model_weights.pth")
# 而不是保存整个 checkpoint
torch.save({
'epoch': epoch,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
...
}, "full_checkpoint.pth")

3. 模型缓存清理#

PyTorch 缓存#

Terminal window
# 删除下载的预训练模型
rm -rf ~/.cache/torch/hub/checkpoints/*
# 删除 torchvision 数据集缓存
rm -rf ~/.cache/torch/datasets/*
# 删除 torch 编译缓存(PyTorch 2.0+)
rm -rf ~/.cache/torch/kernels/*

Hugging Face 缓存#

Terminal window
# 删除所有 Hugging Face 缓存
rm -rf ~/.cache/huggingface/*
# 或者分别清理
rm -rf ~/.cache/huggingface/hub/* # 模型权重
rm -rf ~/.cache/huggingface/datasets/* # 数据集
rm -rf ~/.cache/huggingface/transformers/*

其他模型库#

大部分模型库都遵循类似的缓存模式:

Terminal window
# timm 模型缓存
rm -rf ~/.cache/timm/*
# transformers(旧版本可能用这个路径)
rm -rf ~/.cache/transformers/*

修改缓存位置#

如果 SSD 空间紧张,可以把缓存目录改到 HDD:

Terminal window
# PyTorch
export TORCH_HOME=/hdd/.cache/torch
# Hugging Face
export HF_HOME=/hdd/.cache/huggingface
# 添加到 ~/.bashrc 永久生效
echo 'export HF_HOME=/hdd/.cache/huggingface' >> ~/.bashrc

4. 包管理器缓存#

pip#

Terminal window
pip cache purge

conda / mamba#

Terminal window
conda clean -a

uv#

Terminal window
uv cache clean

pixi#

Terminal window
pixi clean

5. 其他常见占用#

Docker 镜像#

如果用 Docker 跑实验,镜像可能占用大量空间:

Terminal window
# 删除所有未使用的镜像、容器、卷
docker system prune -a
# 只删除未使用的卷
docker volume prune

日志文件#

训练日志可能积累到很大:

Terminal window
# 清空日志文件(保留文件,清空内容)
truncate -s 0 /path/to/train.log
# 或者删除旧的日志
find logs/ -name "*.log" -mtime +30 -delete

Jupyter Notebook 检查点#

Terminal window
# 删除所有 .ipynb_checkpoints 目录
find ~ -name ".ipynb_checkpoints" -type d -exec rm -rf {} + 2>/dev/null

Python 编译缓存#

Terminal window
# 删除 __pycache__ 目录
find ~ -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null
# 删除 .pyc 文件
find ~ -name "*.pyc" -delete

6. 预防性措施#

除了事后清理,更好的方法是预防:

监控磁盘使用#

Terminal window
# 查看当前目录各子目录大小
du -sh */ | sort -h
# 实时监控磁盘使用
watch -n 60 'df -h'

设置 checkpoint 保存策略#

训练代码里就设置好只保留必要的 checkpoint,避免事后清理。

使用云存储#

对于大规模数据集,考虑使用云存储(S3、OSS 等),按需下载,减少本地存储压力。

总结#

深度学习环境的磁盘清理是个持续的工作,建议:

  • 定期检查磁盘使用情况
  • 训练时就设置好 checkpoint 保存策略
  • 不用的数据集及时迁移或删除
  • 大文件优先放 HDD,SSD 留给频繁读写的数据

保持磁盘空间充足,训练才不会因为磁盘满了而中断。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

深度学习训练环境磁盘空间清理指南
https://notes.shimmer93.com/posts/dl-training-disk-cleanup/
作者
Shimmer93
发布于
2026-04-01
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Shimmer93
由玖露亚酱占领~
分类
标签
站点统计
文章
4
分类
2
标签
18
总字数
4,680
运行时长
0
最后活动
0 天前

目录