简短介绍
相信很多AI研究者刚入门时或多或少都被环境配置坑过一把,哪怕是老手也可能被复杂的配置折腾一会儿。我们今天的主题是:深度学习环境配置涉及哪些层次结构?我们每天所谓的配环境,到底是在配什么?遇到问题之后可以从哪些方面下手?
环境层级
按照从顶层到底层的顺序,我们大致可以将深度学习环境分为以下几个层级:
- 应用层:开发者日常接触的层级,包括各种在深度学习框架下编写的代码、使用的库和工具等。
- 环境层:各个开发环境为了避免彼此串扰而创建的隔离空间,常用的如conda, venv, uv等。
- 框架层:深度学习框架本身,如PyTorch, TensorFlow等。
- 系统层:这一层就是我们耳熟能详的CUDA等底层库了,它们直接与硬件交互,提供GPU加速等功能。CUDA分为driver和toolkit两部分,其中driver由操作系统管理,toolkit则由用户安装和管理。注意driver的版本需要与GPU驱动兼容,而toolkit的版本则需要与深度学习框架兼容。
- 硬件层:最后是我们使用的GPU等硬件设备了。GPU最重要的参数是compute capability,它决定了GPU支持哪些CUDA版本和功能。不同的深度学习框架对CUDA版本的要求也不同,因此在选择GPU时需要考虑其compute capability是否满足框架的要求。
常见问题
配置环境很难一蹴而就,以下是一些常见问题和解决思路:
- CUDA initialization: CUDA unknown error:这通常发生在硬件太新、软件太旧的情况下。例如,当你使用 RTX 5090 (Blackwell 架构,算力 12.0) 时,旧版的 PyTorch 并不包含该架构的指令集。
解决思路:检查显卡算力与 CUDA Runtime 版本的匹配度。对于新卡,优先尝试安装 Nightly 版本的 PyTorch。Conda 环境迁移导致的路径报错:如果你直接拷贝别人的 Conda 文件夹,或者在代码中使用了绝对路径(如 /home/old_user/…),程序会因为找不到对应的 Prefix 而崩溃。解决思路:在项目根目录使用 grep 搜索硬编码路径,并使用 sed 批量替换为当前的物理路径或相对路径。
- nvidia-smi 与 nvcc -V 版本不一致:这是一个常见的误区。nvidia-smi 显示的是驱动支持的最高上限,而 nvcc 是你当前安装的工具链版本。
解决思路:只要 驱动版本 工具包版本,环境就能正常运行。
Takeaway
-
先看硬件,再配软件:查清楚你的显卡 Compute Capability,它是所有配置的基准。
-
驱动“向下兼容”:保持宿主机驱动尽可能新,它能兼容更低版本的 CUDA Toolkit。
-
理解 Prefix 的物理意义:它是环境的隔离墙,也是路径报错的重灾区。
Appendix
| CUDA SDK | Tesla | Fermi | Kepler | Maxw. | Pasc. | Volt. | Turi. | Amp. | Ada | Hopp. | Black. |
| 1.0 - 2.0 | 1.0-1.3 | - | - | - | - | - | - | - | - | - | - |
| 3.0 - 4.2 | 1.0 | 2.0-2.1 | - | - | - | - | - | - | - | - | - |
| 5.0 - 6.0 | 1.0 | - | 3.0-3.5 | - | - | - | - | - | - | - | - |
| 6.5 - 7.5 | 1.1 | 2.0 | 3.7 | 5.x | - | - | - | - | - | - | - |
| 8.0 | - | 2.0 | - | - | 6.x | - | - | - | - | - | - |
| 9.0 - 9.2 | - | - | 3.0 | - | - | 7.0-7.2 | - | - | - | - | - |
| 10.0 - 10.2 | - | - | 3.0 | - | - | - | 7.5 | - | - | - | - |
| 11.0 | - | - | - | 3.5 | - | - | - | 8.0 | - | - | - |
| 11.1 - 11.7 | - | - | - | 3.5 | - | - | - | 8.6-8.7 | - | - | - |
| 11.8 | - | - | - | 3.5 | - | - | - | 8.6 | 8.9 | 9.0 | - |
| 12.0 - 12.6 | - | - | - | - | 5.0 | 6.0 | 7.0 | 8.0 | 8.9 | 9.0 | - |
| 12.8 | - | - | - | - | 5.0 | 6.0 | 7.0 | 8.0 | 8.9 | 9.0 | 12.0 |
| 13.0 | - | - | - | - | - | - | 7.5 | 8.6 | 8.9 | 9.0 | 12.1 |