Ubuntu配置深度学习环境(TensorFlow和PyTorch)这件事,我前后在实验室、公司和自己的笔记本上折腾过不下二十次。有人觉得不就是几条pip命令吗,真正上手才发现:显卡驱动、CUDA、cuDNN、conda、pip、TensorFlow、PyTorch,每一层都可能互相卡版本。这篇文章不打算只给你一串命令,而是把我在Ubuntu 20.04、22.04、24.04上反复验证过的流程、版本选择和排错经验完整摊开。无论你是刚装完Ubuntu系统,准备搭第一套PyTorch环境,还是想让TensorFlow和PyTorch在同一台机器上共存,都能按这里的步骤直接抄作业。虚拟机、双系统、WSL、Docker这些场景也会顺带讲清楚,避免你在一个坑里反复重装。
1. 先想清楚:Ubuntu配置深度学习环境到底在配什么
1.1 驱动、CUDA、cuDNN、框架四层关系
很多人一上来就搜“PyTorch安装教程GPU”,结果命令执行完发现torch.cuda.is_available()返回False,于是开始怀疑人生。问题通常不在PyTorch本身,而在下面这四层没有对齐。
第一层是NVIDIA显卡驱动。它负责让Ubuntu认到显卡,nvidia-smi能跑起来是底线。驱动版本决定了你的机器最高能支持到哪个CUDA运行时版本。注意,nvidia-smi右上角显示的“CUDA Version”是驱动支持的最高版本,不是你系统里已经安装的CUDA版本。这一点我见过太多人误解。
第二层是CUDA Toolkit。严格说,PyTorch的pip wheel和conda包通常会自带所需的CUDA运行时,不一定依赖系统级CUDA。但TensorFlow 2.x的GPU版大多需要系统里安装匹配的CUDA和cuDNN。所以如果你只玩PyTorch,系统CUDA可以少折腾;如果TensorFlow也要GPU,系统CUDA和cuDNN就得认真装。
第三层是cuDNN。这是NVIDIA的深度学习加速库,TensorFlow对它的版本非常敏感。cuDNN版本不对,典型报错就是Could not load dynamic library 'libcudnn.so.8',或者GPU识别不到。
第四层才是TensorFlow和PyTorch。它们各自对Python版本、CUDA版本、cuDNN版本有要求。我的经验是:先确定框架版本,再倒推CUDA和cuDNN,最后看驱动够不够。顺序反了,就会陷入“驱动装了最新版,结果TensorFlow不支持”的尴尬。
1.2 为什么我建议用Miniconda做隔离
裸pip安装不是不行,但我不推荐。原因很简单:TensorFlow和PyTorch对依赖版本的要求经常打架。比如某个项目需要TensorFlow 2.15,另一个项目需要PyTorch 2.1,它们可能依赖不同版本的NumPy、protobuf、typing-extensions。你在系统Python里混装,迟早会遇到“装完PyTorch,TensorFlow坏了”的情况。
Miniconda的好处是环境隔离。你可以给TensorFlow建一个环境,给PyTorch建另一个环境,互不干扰。需要哪个就conda activate哪个,切换成本很低。Anaconda当然也可以,但它预装了大量用不到的包,体积大、下载慢。Miniconda更干净,适合自己从零搭深度学习环境。
另外,conda不仅能管Python包,还能管CUDA Toolkit、cuDNN这类非Python依赖。比如conda install pytorch-cuda=12.1会帮你把匹配的CUDA运行时装进环境里,省去手动配置LD_LIBRARY_PATH的麻烦。当然,pip安装PyTorch也很成熟,后面我会对比两种方式。
1.3 版本选择:先定框架,再定CUDA,最后看驱动
下面这张表是我根据常见稳定组合整理的,实际安装时以TensorFlow和PyTorch官网为准。注意,我刻意避开“最新版一定最好”的思路,因为深度学习框架的新版本经常刚发布就有一堆兼容问题。
| 框架版本 | 推荐Python | CUDA要求 | cuDNN要求 | 备注 |
|---|---|---|---|---|
| PyTorch 2.1+ | 3.9-3.11 | cu118/cu121/cu124 | wheel自带 | pip安装最省心 |
| TensorFlow 2.15 | 3.9-3.11 | CUDA 12.2 | cuDNN 8.9 | GPU支持需要系统CUDA |
| TensorFlow 2.14 | 3.9-3.11 | CUDA 11.8 | cuDNN 8.7 | 较常见组合 |
| TensorFlow 2.13 | 3.8-3.11 | CUDA 11.8 | cuDNN 8.6 | 老项目常用 |
| TensorFlow 2.12 | 3.8-3.11 | CUDA 11.8 | cuDNN 8.6 | 兼容性不错 |
| TensorFlow 2.10 | 3.7-3.10 | CUDA 11.2 | cuDNN 8.1 | 旧卡可考虑 |
选择逻辑:如果你的显卡驱动比较新,nvidia-smi显示支持CUDA 12.4,那你可以装PyTorch的cu124版本,也可以装TensorFlow 2.15要求的CUDA 12.2。但如果驱动只支持到CUDA 11.8,就别硬上TensorFlow 2.15的CUDA 12.2,要么升级驱动,要么降TensorFlow版本。
1.4 装之前先确认这五件事
动手之前,我习惯先跑一遍检查清单,能省掉很多返工。
- 显卡型号:
lspci | grep -i nvidia,确认是NVIDIA卡,不是AMD或Intel核显。 - 系统版本:
lsb_release -a,Ubuntu 20.04、22.04、24.04都行,但驱动安装命令略有差异。 - 内核版本:
uname -r,某些新内核和旧驱动不兼容。 - 是否开启Secure Boot:
mokutil --sb-state,开启后安装第三方驱动需要设置MOK密码。 - 磁盘空间:
df -h,深度学习环境加上数据集,建议至少留50GB。
这五件事确认完,再开始装驱动。不要一边装驱动一边装框架,出问题很难定位。
2. Ubuntu系统准备:从裸机到能跑nvidia-smi
2.1 系统版本与基础更新
如果你刚装完Ubuntu,第一件事是更新软件源。我一般用清华或阿里云镜像,速度比默认源快很多。编辑/etc/apt/sources.list,把archive.ubuntu.com和security.ubuntu.com替换成镜像地址。Ubuntu 22.04之后的版本,源文件可能在/etc/apt/sources.list.d/ubuntu.sources,格式是deb822,改的时候注意语法。
更新命令:
sudo apt update sudo apt upgrade -y sudo apt install build-essential cmake git wget curl vim -ybuild-essential包含gcc、g++、make,很多Python包编译时需要。cmake版本问题后面会讲,先用apt装一个够用的版本。如果你遇到ubuntu安装gcc失败,大概率是源没配好或者依赖冲突,先sudo apt update再sudo apt install --fix-broken。
Ubuntu 24.04默认Python是3.12,有些老框架还不支持。如果要用TensorFlow 2.15,建议用Miniconda装Python 3.10或3.11。不要试图降级系统Python,会搞坏系统工具。
2.2 安装NVIDIA驱动:ubuntu-drivers和手动安装的取舍
Ubuntu装NVIDIA驱动有两种主流方式:apt/ubuntu-drivers和NVIDIA官方runfile。我90%的情况推荐第一种,省事、和内核更新配合好。
先查看推荐驱动:
sudo apt update sudo apt install ubuntu-drivers-common -y ubuntu-drivers devices输出里会列出driver: nvidia-driver-535 - third-party free recommended之类的信息。推荐版本通常是经过Ubuntu测试的。直接自动安装:
sudo ubuntu-drivers autoinstall或者指定版本:
sudo apt install nvidia-driver-535 -y安装完必须重启:
sudo reboot重启后运行nvidia-smi,如果看到显卡型号、驱动版本、显存占用,说明驱动OK。
什么时候用手动runfile?通常是apt源里的驱动太旧,或者你需要特定版本。手动安装前要禁用nouveau,否则会冲突。步骤:
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf" sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf" sudo update-initramfs -u sudo reboot重启后按Ctrl+Alt+F3进入文本模式,关闭图形界面:
sudo systemctl stop gdm3然后运行NVIDIA驱动安装包,按提示走。手动安装的坑在于:每次内核升级后可能需要重装驱动,Secure Boot开启时还要签名。所以除非有特殊需求,优先用apt。
2.3 验证驱动与nouveau处理
nvidia-smi能跑不代表CUDA可用。继续检查:
nvidia-smi nvcc --version如果nvcc找不到,说明没装CUDA Toolkit。只玩PyTorch的话,可以先不装系统CUDA。但TensorFlow GPU需要,后面再装。
检查nouveau是否真的禁用:
lsmod | grep nouveau没有输出就是禁用了。如果有输出,说明黑名单没生效,检查/etc/modprobe.d/下的配置文件,再sudo update-initramfs -u并重启。
注意:如果你用的是Ubuntu 22.04/24.04,Secure Boot开启时,apt安装驱动会弹出MOK管理界面,让你设置密码。重启后会出现蓝色界面,选择Enroll MOK,输入密码。这一步不完成,驱动不会加载,
nvidia-smi会报“No devices were found”。
2.4 周边配置:SSH、中文输入法、Docker按需处理
这些不是深度学习环境的核心,但实际用起来少不了。
SSH:如果你用Xshell或VSCode Remote连接Ubuntu,先装openssh-server:
sudo apt install openssh-server -y sudo systemctl enable ssh sudo systemctl start ssh如果连不上,检查sudo ufw status,放行22端口:sudo ufw allow 22。还要确认IP地址:ip addr。虚拟机的话,网络模式选桥接或NAT,NAT需要端口转发。
中文输入法:Ubuntu默认有IBus,可以装拼音。如果习惯搜狗,去搜狗输入法官网下载Linux版deb包,然后sudo dpkg -i sogoupinyin.deb,缺依赖就sudo apt install -f。不过搜狗在Ubuntu 24.04上偶尔有兼容问题,我現在更多用IBus智能拼音或Fcitx5。
Docker:如果你要用容器跑深度学习,装Docker和NVIDIA Container Toolkit:
sudo apt install docker.io -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker $USERNVIDIA Container Toolkit需要添加官方仓库,然后sudo apt install nvidia-container-toolkit,重启Docker。这样docker run --gpus all才能用显卡。
虚拟机场景:VMware或VirtualBox装Ubuntu,通常无法直通NVIDIA显卡,只能跑CPU版PyTorch和TensorFlow。如果你只是学习语法、跑小模型,CPU版够用。要用GPU,建议双系统或物理机。
3. Miniconda与Python环境:让TensorFlow和PyTorch各自独立
3.1 安装Miniconda并配置镜像源
下载Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装过程中会问安装路径,默认~/miniconda3就行。安装完激活:
source ~/.bashrc conda --version如果conda命令找不到,手动初始化:
~/miniconda3/bin/conda init bash source ~/.bashrc配置国内镜像源,加快下载速度:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --set show_channel_urls yes要注意,PyTorch的官方conda channel有时不在镜像里同步,安装PyTorch时可能需要临时指定-c pytorch。如果镜像源里找不到某个包,可以换回默认源,或者用pip安装。
3.2 创建独立环境与Python版本选择
给PyTorch建一个环境:
conda create -n pytorch_env python=3.10 -y conda activate pytorch_env给TensorFlow建另一个:
conda create -n tf_env python=3.10 -y conda activate tf_envPython版本怎么选?我的建议:
- PyTorch 2.x:Python 3.9、3.10、3.11都行,3.10最省心。
- TensorFlow 2.15:支持3.9-3.11,选3.10。
- 老项目TensorFlow 2.10:支持3.7-3.10,选3.8或3.9。
不要选太新的Python,比如3.12,很多包还没出wheel,pip会尝试源码编译,容易失败。也不要选太老的,新框架不支持。
3.3 conda和pip混用原则
这是重灾区。我的原则是:一个环境里,能用conda就用conda,不能用再用pip,并且记录安装顺序。不要交替反复装同一个包。
比如PyTorch,可以用conda装:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia也可以用pip装:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121两种方式都可以,但不要先conda装一半,再用pip覆盖。如果你已经pip装了,发现有问题,最干净的做法是删掉环境重建:
conda deactivate conda env remove -n pytorch_env conda create -n pytorch_env python=3.10 -y另外,pip安装时尽量加--index-url指定官方wheel源,不要用乱七八糟的第三方源,避免版本不对。如果网络慢,可以临时用清华PyPI镜像,但PyTorch的CUDA wheel通常在I/O官方源,镜像可能不全。
3.4 环境导出与迁移
环境配好后,导出依赖清单:
conda env export > environment.yml但environment.yml里会包含本地路径和精确版本,换机器可能装不上。我更推荐导出pip清单:
pip freeze > requirements.txt迁移时,在新机器创建空环境,然后:
pip install -r requirements.txt注意,PyTorch的CUDA版本可能因机器驱动不同而需要调整,所以requirements.txt里最好只写torch==2.1.0,不写+cu121后缀,安装时再根据驱动选wheel。
4. PyTorch安装实操:GPU版、CPU版和验证方法
4.1 查驱动、查CUDA、查PyTorch官网命令
先跑nvidia-smi,看右上角CUDA Version。比如显示12.4,说明驱动支持到CUDA 12.4。你可以装cu121或cu124的PyTorch。如果显示11.8,就装cu118。
去PyTorch官网,选择对应的OS、Package、Language、Compute Platform,它会生成安装命令。比如Linux、pip、Python、CUDA 12.1:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121CPU版:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpuconda版:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia我实测下来,pip安装PyTorch更简单,因为wheel自带CUDA运行时,不依赖系统CUDA。conda安装有时会解析依赖很久,但好处是能统一管理。如果你只玩PyTorch,推荐pip。
4.2 conda安装与pip安装的实测对比
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| pip | 速度快,wheel自带CUDA | 不管理非Python依赖 | 大多数PyTorch用户 |
| conda | 依赖统一,可管CUDA | 解析慢,镜像可能不同步 | 需要环境完全隔离 |
| 源码编译 | 可定制 | 耗时长,易失败 | 特殊硬件或研究需求 |
我自己的选择:PyTorch用pip,TensorFlow用pip+系统CUDA。这样两个环境互不干扰,PyTorch升级也方便。
安装完成后,记录版本:
python -c "import torch; print(torch.__version__)"4.3 安装后必须做的三项验证
第一项,检查CUDA是否可用:
import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.cuda.get_device_name(0))如果is_available()返回False,先别急着重装。检查:驱动是否装好,nvidia-smi是否正常,PyTorch版本是否CPU版。如果你装的是CPU wheel,那当然不支持CUDA。
第二项,跑一个张量运算:
import torch x = torch.randn(3, 3).cuda() y = torch.randn(3, 3).cuda() z = x @ y print(z)能输出结果,说明GPU计算链路通了。
第三项,测一个小网络:
import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 64), nn.ReLU(), nn.Linear(64, 1) ).cuda() x = torch.randn(32, 10).cuda() y = model(x) print(y.shape)这一步能跑通,基本可以开始做PyTorch实战了,比如图像分类、Transformer训练、TD3强化学习代码。
4.4 PyTorch常见报错与处理
报错:AssertionError: Torch not compiled with CUDA enabled说明你装的是CPU版。卸载重装GPU版:
pip uninstall torch torchvision torchaudio -y pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121报错:CUDA out of memory显存不够。减小batch size,用torch.cuda.empty_cache()清理缓存,或者用梯度累积。如果是多卡,检查是否默认占用了0号卡。
报错:RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED通常是cuDNN版本和PyTorch不匹配。pip wheel自带的cuDNN一般没问题,如果你手动装过系统cuDNN,可能冲突。建议在干净conda环境里用pip重装。
报错:nvidia-smi has failed because it couldn't communicate with the NVIDIA driver驱动掉了。可能内核更新后驱动没重新编译。重启试试,不行就重装驱动。
5. TensorFlow安装实操:2.x版本的GPU支持与兼容坑
5.1 TensorFlow与CUDA/cuDNN对应关系
TensorFlow 2.x的GPU支持比PyTorch麻烦,因为它依赖系统级CUDA和cuDNN。你必须严格按照官方对应表来。比如TensorFlow 2.15需要CUDA 12.2和cuDNN 8.9。如果你系统装的是CUDA 11.8,就装TensorFlow 2.14或2.13。
安装系统CUDA Toolkit,推荐用NVIDIA官方apt仓库:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt update sudo apt install cuda-toolkit-12-2 -y安装cuDNN:
sudo apt install libcudnn8=8.9.* libcudnn8-dev=8.9.* -y如果apt里找不到精确版本,可以去NVIDIA官网下载对应版本的tar包,解压后复制到CUDA目录。配置环境变量:
echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc验证:
nvcc --version5.2 pip安装TensorFlow的完整步骤
创建TensorFlow环境:
conda create -n tf_env python=3.10 -y conda activate tf_env安装TensorFlow:
pip install tensorflow==2.15.0如果你不需要GPU,直接pip install tensorflow就行。如果需要GPU,确保系统CUDA和cuDNN版本匹配。安装完成后,TensorFlow不会自动把所有GPU库都找到,有时需要手动设置:
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:/usr/local/cuda-12.2/extras/CUPTI/lib64:$LD_LIBRARY_PATHcuDNN的库路径也要加进去,如果装在/usr/lib/x86_64-linux-gnu,通常已经在默认路径里。
5.3 验证GPU是否被识别
import tensorflow as tf print(tf.__version__) print(tf.config.list_physical_devices('GPU'))如果输出[],说明没识别到GPU。检查:
nvidia-smi是否正常。- CUDA版本是否匹配。
- cuDNN版本是否匹配。
LD_LIBRARY_PATH是否包含CUDA和cuDNN路径。
还可以跑一个矩阵乘法:
import tensorflow as tf with tf.device('/GPU:0'): a = tf.random.normal([1000, 1000]) b = tf.random.normal([1000, 1000]) c = tf.matmul(a, b) print(c.shape)如果报错Could not create cudnn handle,多半是cuDNN版本不对。TensorFlow对cuDNN非常挑,差一个小版本都可能失败。
5.4 TensorFlow和PyTorch共存的冲突处理
共存的核心是环境隔离。我给TensorFlow和PyTorch分别建conda环境,用的时候切换。系统级只装一份NVIDIA驱动,CUDA Toolkit可以装多个版本,通过LD_LIBRARY_PATH切换,或者让TensorFlow环境用系统CUDA,PyTorch环境用自带CUDA。
如果你非要在同一个环境里同时装TensorFlow和PyTorch,要注意:
- 先装TensorFlow,再装PyTorch,避免pip依赖冲突。
- 不要同时用conda和pip反复覆盖。
- 如果NumPy版本冲突,优先满足TensorFlow,因为TensorFlow对NumPy上限要求更严。
- protobuf版本也容易冲突,TensorFlow 2.15要求
protobuf>=3.20,<5,PyTorch一般兼容。
我的建议还是分开。两个环境加起来也就几百MB,比调试冲突省时间。
6. 常见问题排查速查表与避坑心得
6.1 问题速查表
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
nvidia-smi命令找不到 | 驱动未安装 | ubuntu-drivers autoinstall后重启 |
nvidia-smi无设备 | Secure Boot未签名、nouveau冲突 | 完成MOK注册,禁用nouveau |
torch.cuda.is_available()False | 装了CPU版、驱动异常 | 重装GPU版PyTorch,检查驱动 |
| TensorFlow不识别GPU | CUDA/cuDNN版本不匹配 | 按官方对应表安装 |
libcudnn.so.8找不到 | cuDNN未装或路径不对 | 安装cuDNN,配置LD_LIBRARY_PATH |
| conda安装慢 | 默认源慢 | 配置国内镜像源 |
| pip安装超时 | 网络问题 | 换镜像源,或重试 |
| SSH无法连接 | 未装openssh-server、防火墙 | 安装ssh,放行22端口 |
| Ubuntu环境变量配置错误 | .bashrc重复追加 | 清理.bashrc,重新source |
| gcc安装失败 | 依赖冲突、源问题 | apt update && apt install -f |
| cmake版本低 | apt版本旧 | 用pip安装或源码编译 |
| Docker无法用GPU | 未装nvidia-container-toolkit | 安装并重启Docker |
6.2 虚拟机、双系统、WSL场景的区别
VMware虚拟机安装Ubuntu:默认无法直通NVIDIA显卡,只能CPU版。如果你只是学PyTorch张量基础,CPU够用。要GPU,需要VMware支持显卡直通,但配置复杂,笔记本上经常失败。
双系统安装Ubuntu:能直接用物理显卡,性能最好。注意安装时给Ubuntu留足空间,至少100GB。驱动和Windows可以共存,但Windows快速启动可能影响Ubuntu挂载NTFS分区。
WSL2:Windows下用WSL2跑Ubuntu,可以支持CUDA,但需要Windows装NVIDIA驱动,WSL里不要装驱动。PyTorch和TensorFlow都能用GPU,性能接近原生。适合不想折腾双系统的用户。
Docker:适合环境隔离和部署。用nvidia-container-toolkit后,容器里也能用GPU。镜像可以基于nvidia/cuda或pytorch/pytorch。
6.3 环境变量、gcc、cmake等周边问题
环境变量配置错误:最常见的是~/.bashrc里重复追加export PATH,导致PATH越来越长。解决方法是手动编辑~/.bashrc,删掉重复行,然后source ~/.bashrc。可以用echo $PATH检查。
gcc版本:Ubuntu 22.04默认gcc 11,24.04默认gcc 13。有些老代码需要gcc 9,可以sudo apt install gcc-9 g++-9,然后用update-alternatives切换。不过深度学习框架现在对gcc要求不严,用默认的就行。
cmake版本:apt装的cmake可能比较旧。如果某个库要求cmake 3.20+,可以用pip装:
pip install cmake --upgrade或者去cmake官网下载二进制包,解压后把bin目录加入PATH。
CUDA多版本切换:如果你装了CUDA 11.8和12.2,可以通过软链接切换:
sudo rm -rf /usr/local/cuda sudo ln -s /usr/local/cuda-12.2 /usr/local/cuda但更推荐用环境变量控制,避免影响其他用户。
6.4 我的几条实操心得
第一条,装驱动前先看主板BIOS。有些笔记本默认开启Secure Boot,导致驱动装不上。如果不想处理MOK,可以在BIOS里关闭Secure Boot,装完驱动再开。但注意,关闭Secure Boot可能影响Windows双系统启动。
第二条,不要迷信最新CUDA。TensorFlow和PyTorch对CUDA的支持有滞后。比如CUDA 12.4刚出时,PyTorch可能只有cu124预览版,TensorFlow还没跟上。选一个框架官方明确支持的版本,比追新省事。
第三条,每次重装系统后先做快照。如果是虚拟机,装好驱动和Miniconda后拍个快照。后面环境搞乱了,直接回滚,比排查半天快得多。物理机可以用Timeshift。
第四条,记录成功配置。我有个习惯,每配好一套环境,就把nvidia-smi输出、pip freeze、CUDA版本、cuDNN版本记在笔记里。下次装新机器,直接照抄,不用重新试错。
第五条,PyTorch和TensorFlow分开环境。哪怕你觉得自己只用一个,也建议分开。因为项目迁移时,依赖冲突会让你抓狂。分开环境,导出requirements.txt,换机器重建,几分钟搞定。
最后再分享一个小技巧:如果你在Ubuntu上遇到torch.cuda.is_available()时好时坏,先别怀疑PyTorch。跑一下watch -n 1 nvidia-smi,看看显卡是否被其他进程占用,或者驱动是否频繁掉线。显卡被占满时,PyTorch会报显存不足,但有时表现成CUDA初始化失败。确认没有僵尸进程占卡,再重启环境。这套流程帮我省下不少重装时间,也希望对你有用。