PyTorch卸载后残留缓存文件怎么清理
针对PyTorch执行pip或conda卸载后磁盘空间未释放的问题,系统讲解Torch Hub预训练权重、JIT扩展编译缓存、Triton编译器缓存及包管理器残留的分布路径、快速清理命令与长效管理策略。
pip uninstall torch 或 conda remove pytorch 后,包管理器只会移除当前 Python 环境中的基础库文件,却不会自动清理运行期间生成的预训练权重、动态编译拓展与安装包下载缓存。这些残留文件通常深藏在系统用户目录下,占用数 GB 到数十 GB 空间。要彻底释放磁盘,需要按模块分别定位并手动或通过专用命令清理 Torch Hub、扩展构建缓存、Triton 编译器缓存以及 pip/conda 离线缓存。
一、为什么卸载 PyTorch 后磁盘空间没有明显变化
很多开发者在完成深度学习项目或更换深度学习框架后,会执行常规卸载命令。然而检查系统盘(特别是 Windows 的 C 盘或 Linux 的根分区)时,常常会发现几十吉字节(GB)的容量并没有如期释放。这一现象是由 Python 生态的设计机制决定的。
Python 虚拟环境(如 venv、conda env)主要管理环境自身目录下的第三方包文件(即 site-packages)。当执行卸载时,包管理器仅严格删除该目录下的 torch、torchvision、torchaudio 等包体代码。但 PyTorch 在运行过程中为了保证效率和复用能力,会将大量重型依赖和构建产物写入用户的全局主目录中,这些目录独立于任何具体的虚拟环境。
二、四大主要残留缓存分类与存储路径
PyTorch 的残留主要集中在四个独立的位置。为了避免误删其他正常软件的数据,先了解每个目录承担的职责至关重要:
1. Torch Hub 预训练模型权重(体积最大)
当在代码中调用 torch.hub.load() 或使用 torchvision.models(如 ResNet、VGG、BERT、Stable Diffusion 权重等)时,PyTorch 会自动将远端模型下载到本地。如果未显式配置 TORCH_HOME,权重默认存放在用户目录下的 .cache/torch/hub/checkpoints/ 中。这类模型文件单个往往从几百 MB 到数十 GB 不等,是导致磁盘吃紧的头号元凶。
2. C++/CUDA 扩展构建缓存(torch_extensions)
在使用诸如 torch.utils.cpp_extension 进行即时编译(JIT 编译),或者安装 FlashAttention、Deepspeed、Apex 等需要本地针对具体 GPU 架构编译的算子时,系统会生成大量的目标文件(.obj、.so、.ninja 锁文件与符号文件)。这些构建产物统一缓存在 torch_extensions 目录下。
3. PyTorch 2.x Triton 与 Inductor 缓存
从 PyTorch 2.0 开始,引入了 torch.compile 及其后端 Triton 编译器。在首次执行模型前向与反向传播编译时,Triton 会在用户的根目录下创建 .triton/cache,记录编译生成的 GPU 内核文件。卸载 PyTorch 后,该目录并不会被联动清除。
4. 包管理器下载的 Wheel 与包缓存
由于 PyTorch 官方附带庞大的 CUDA Runtime(cuDNN、NCCL 等动态链接库),其官方安装包(.whl)体积往往高达 2GB 到 3GB 甚至更大。使用 pip install torch 时,pip 会在系统缓存区完整保留这份下载文件;使用 Conda 安装时,pkgs 目录也会保留压缩包及解包缓存。
三、残留缓存的排查与清理操作步骤
按照“先排查确认占用、再针对性清理、最后验证空间”的步骤执行,可以有效避免因误删导致其它系统功能异常。
步骤 1:排查现有残留容量
在直接删除前,建议先通过终端命令查看各缓存目录实际占用的磁盘大小。
在 Linux / macOS 下执行:
# 查看 Torch 权重和扩展编译缓存的大小
du -sh ~/.cache/torch 2>/dev/null
du -sh ~/.cache/torch_extensions 2>/dev/null
du -sh ~/.triton 2>/dev/null
# 示例输出参考(实际视本机使用情况而定):
# 18G /home/username/.cache/torch
# 420M /home/username/.cache/torch_extensions
# 1.2G /home/username/.triton
在 Windows(PowerShell)下执行:
# 检查 Torch 目录大小
$torchPath = "$HOME\.cache\torch"
if (Test-Path $torchPath) {
"{0:N2} GB" -f ((Get-ChildItem $torchPath -Recurse | Measure-Object -Property Length -Sum).Sum / 1GB)
} else { "目录不存在" }
步骤 2:彻底删除 Torch 与 Triton 专属运行时缓存
这些目录中的所有内容均为 PyTorch 运行期派生数据,可以直接递归删除。如果未来再次安装 PyTorch,它会在首次需要时重新创建空文件夹并按需拉取,不会造成程序损坏。
在 Linux / macOS 下执行删除:
# 清理 Torch 模型权重与运行时数据
rm -rf ~/.cache/torch
# 清理 C++/CUDA 扩展构建临时产物
rm -rf ~/.cache/torch_extensions
# 清理 PyTorch 2.x Triton 编译缓存
rm -rf ~/.triton/cache ~/.cache/triton 2>/dev/null
在 Windows 下执行删除(PowerShell 或 CMD):
# 在 PowerShell 中执行移除
Remove-Item -Recurse -Force "$HOME\.cache\torch" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$HOME\.cache\torch_extensions" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$HOME\.triton" -ErrorAction SilentlyContinue
如果使用图形界面文件资源管理器,也可以在路径地址栏输入 %USERPROFILE%\.cache 并回车,手动选中并彻底删除(Shift + Delete)名为 torch 与 torch_extensions 的文件夹。
步骤 3:清除包管理器安装包残留(pip / Conda)
除了运行期缓存,安装过程中留存的巨大 Wheel 文件也需要清理。
清理 pip 缓存:
# 查看当前 pip 缓存位置与体积
pip cache list
# 一键清除所有已缓存的 wheel 包
pip cache purge
如果只想单单删除与 torch 相关的下载轮子包,可以在 pip 缓存目录下的 wheels 文件夹中搜索包含 torch 关键字的文件进行针对性删除。
清理 Conda 缓存包:
# 清除未使用的包与 tarballs 压缩包
conda clean --all -y
该命令会安全地扫描 Conda 安装目录下的 pkgs/ 文件夹,清除已被删除环境遗留下来的未解包压缩归档及孤立库文件,通常能立刻释放 3GB ~ 10GB 以上的存储。
rm -rf ~/.cache/torch 会清空所有环境共享的预训练模型权重。这不会破坏那些环境的运行代码,但其他环境下次在调用预训练模型时,会触发重新向 Hugging Face 或 PyTorch 官网下载权重的动作。
四、特殊配置检查:自定义缓存路径(TORCH_HOME)
某些开发者为了缓解 C 盘压力,此前可能在系统的环境变量或 shell 配置文件(如 ~/.bashrc、~/.zshrc、Windows 系统环境变量)中指定过自定义路径:
TORCH_HOME:指定权重与 Hub 数据根路径(例如D:\data\torch_cache或/data/torch)。TORCH_EXTENSIONS_DIR:指定 JIT 扩展构建路径。HF_HOME/TRANSFORMERS_CACHE:如果配合 Hugging Face 模型库使用,权重往往缓存在这里。
如果清空默认的 ~/.cache/torch 后发现磁盘仍然没有变化,可以通过终端查看环境变量是否指向了其他驱动器:
# Linux / macOS
echo $TORCH_HOME
echo $TORCH_EXTENSIONS_DIR
# Windows PowerShell
$env:TORCH_HOME
$env:TORCH_EXTENSIONS_DIR
如果输出了具体目录,直接前往该路径手动清空对应的文件夹即可。
五、清理后验证与日常缓存治理总结
完成上述清理后,建议使用系统的存储检查工具验证磁盘释放成果。同时,如果未来仍需频繁安装与测试不同的深度学习框架,掌握合理的缓存管理策略能彻底避免系统盘被填满的困扰。
| 缓存项目 | 默认存放位置 | 推荐清理方法 | 清理后影响 |
|---|---|---|---|
| Torch Hub 权重 | ~/.cache/torch/hub |
直接删除该目录 | 无破坏性,下次使用时按需重新从官方拉取 |
| C++/CUDA 编译库 | ~/.cache/torch_extensions |
直接删除该目录 | 无破坏性,下次调用相关扩展时自动重新编译 |
| Triton 编译器缓存 | ~/.triton/cache |
直接删除该目录 | 无破坏性,首次调用 torch.compile 重新生成 |
| pip 下载 Wheel | ~/.cache/pip 或 AppData\Local\pip |
运行 pip cache purge |
无影响,仅清空本地离线安装包归档 |
| Conda 离线包 | conda/pkgs |
运行 conda clean --all -y |
无影响,清理未被任何环境引用的旧包 |
按照上述步骤操作后,PyTorch 在机器上产生的各类全局残留将彻底清除,系统盘能够恢复原本应有的空闲空间。对于需要经常训练模型的开发者,建立将 TORCH_HOME 指向非系统盘数据分区的习惯,是长期维护开发环境整洁最省心的方法。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













