深度学习环境配置是一个很典型的“新手劝退、老手浪费时间”的问题。

就算已经熟悉 CUDA、PyTorch、conda,也仍然可能遇到版本不适配、数据集太大、服务器网络太慢、GitHub 包装不上等问题。

我短时间内经历了笔记本和服务器四五次完整环境搭建,每次都要花 3-4 个小时。为了避免以后继续浪费时间和算力,把目前比较稳定的一套流程整理下来。

总体原则

配置环境时,最重要的是不要边跑边乱改。

我现在的习惯是:

  1. 先确定显卡驱动、CUDA、PyTorch 版本。
  2. 再创建干净的 conda 环境。
  3. 最后根据项目补依赖。

不要一开始就把所有包装进去。环境越早变脏,后面越难排查。

初始配置

一台新机器通常先做这些事:

  1. 配置显卡驱动。
  2. 配置 CUDA。
  3. 安装 Miniconda / Miniforge / Anaconda。个人更推荐 Miniconda。
  4. 配置镜像源,例如清华源。如果 apt update 很慢,也可以配置 apt 镜像源。
  5. 创建新的 conda 环境。

建议每个项目都新建独立环境,不要把所有项目塞进同一个 base 环境。

配置 conda 或 uv 环境

复现论文或别人项目

复现别人项目时,我一般按这个顺序来:

  1. 先看项目要求的 Python、CUDA、PyTorch 版本。
  2. 如果 pyproject.toml 或依赖文件里直接锁死了 torch,可以先把 torch 相关依赖注释掉。
  3. 根据自己的 CUDA 版本单独安装 PyTorch。
  4. 进入项目目录执行:
pip install -e .
  1. 跑训练或推理脚本,缺什么再补什么。

如果是 50 系显卡,目前通常需要注意 cu128 相关版本。

自己的项目

自己的项目更简单:

  1. 根据显卡和 CUDA 版本先安装 PyTorch。
  2. 只安装当前确实要用的包。
  3. 每次跑通一个阶段,就记录一次环境。

例如:

pip freeze > requirements_freeze.txt
conda env export > environment.yaml

这两个文件很重要。以后环境坏了、迁移服务器、复现结果,都能省很多时间。

下载模型和数据集

模型和数据集不要手动一点点传服务器,太慢,也容易中断。

目前我更推荐使用 hfd 镜像脚本配合 aria2c 下载,速度比较稳定,也能跑满带宽。

常用流程:

wget https://hf-mirror.com/hfd/hfd.sh
sudo apt install aria2
chmod a+x hfd.sh

export HF_ENDPOINT=https://hf-mirror.com
export HFD_DOWNLOADER="aria2c -x 16 -s 16 -k 1M"

然后根据模型或数据集地址执行下载命令。

这个方案比浏览器下载、手动上传、普通 git lfs 都更稳定。

服务器环境迁移

服务器配置环境时,优先思路是:代码可以上传,模型和数据集尽量在服务器上直接下载。

本地到服务器

如果本地已经有代码,可以这样做:

  1. 使用 FileZilla 等支持 SFTP 的工具上传代码。
  2. 尽量使用更稳定、更高带宽的网络,校园网有时会很慢。
  3. 只上传代码,不上传大模型权重和数据集。
  4. 数据集和模型权重直接在服务器上用下载脚本获取。
  5. 在服务器上重新配置 conda 环境。

服务器无法科学上网时

如果服务器网络受限,可以折中处理:

  1. 先在本地 git clone 好项目,再上传服务器。
  2. 本地提前下载服务器装不上的依赖包,再上传安装。
  3. 模型和数据集尽量使用镜像源下载。
  4. 最后配置 conda 环境并测试脚本。

常见问题

GPU 无法使用

先检查 PyTorch 是否能识别 CUDA:

import torch
print(torch.cuda.is_available())

如果返回 False,优先检查 PyTorch 和 CUDA 版本是否匹配。很多 GPU 用不了的问题,本质上都是 torch 版本装错了。

下载速度很慢或连接超时

模型和数据集优先使用上面的 hfd + aria2c 方法。

环境包下载慢时,可以先配置清华源。如果还是不行,可以尝试手动下载 wheel 文件,再传到服务器安装。

版本不适配或频繁报错

不要在同一个环境里反复乱改。先确定项目到底需要什么版本,再针对性更新能改的包。

如果环境已经被改得很乱,很多时候重建一个新环境比继续修更快。

小结

环境配置最重要的是可复现。

每次跑通之后,都要及时保存依赖记录。这样以后换机器、换服务器、迁移项目时,就不会重新从零开始踩坑。