FEATURED · 精选文章

Linux Mint 深度学习环境搭建:CUDA、cuDNN、Anaconda

发布时间 / 2026/9/18 5:47:08
来源 / 创域科博编辑部
栏目 / 资讯中心
Linux Mint 深度学习环境搭建:CUDA、cuDNN、Anaconda 1. 为什么把 Linux Mint 当作深度学习开发主力机深度学习这套开发流程有个很现实的特点驱动、CUDA、cuDNN、Python 环境、IDE 这几层耦合得很紧任何一层版本没对上跑模型的时候就是一堆看不懂的报错。很多人第一次配环境是在 Windows 上装完驱动装 CUDA装完 CUDA 发现显卡驱动被覆盖了再来一遍。这种情况下换一个对开发者更友好的桌面发行版能省下大量时间。Linux Mint 就是这样被我选中的系统它基于 Ubuntu LTS 构建软件源和 apt 生态跟 Ubuntu 完全一致但桌面体验比原生 Ubuntu 顺手不少尤其是从 Windows 转过来的人几乎没有学习成本。我目前的做法是裸机装 Linux Mint 做主力开发机显卡驱动、CUDA、cuDNN 全装在系统层面Python 侧用 Anaconda 管理多个 conda 环境日常写代码用 PyCharm 连上对应的 conda 解释器。这套组合的好处是职责清晰——系统层只管硬件和驱动CUDA 层提供编译工具链和运行时库conda 层负责 Python 包依赖。任何一层出问题排查范围都很明确不会出现到底是驱动挂了还是 Python 包装错了这种扯不清的情况。Mint 的另一个优势是长期支持版本给得实在。Linux Mint 22 基于 Ubuntu 24.04 LTS官方支持到 2029 年期间不用反复重装系统。对于那些不想每半年折腾一次系统升级、只想安安静静跑实验的人来说这一点比什么新特性都重要。驱动和 CUDA 的兼容性也在这个 LTS 周期里被验证得比较充分社区里能搜到的解决方案大多能直接套用。1.1 Mint 版本分支怎么挑Cinnamon、MATE、XfceLinux Mint 官网提供三个桌面分支很多人第一次装的时候会在这里卡住。我的建议很直接机器配置正常就选 Cinnamon它是 Mint 的旗舰桌面视觉效果最好窗口管理、快捷键、通知系统都做得比较完整。注意我说的是旗舰但它的资源占用并不夸张16GB 内存、四核以上的机器跑起来毫无压力深度学习开发机基本都是这个配置往上所以不需要为了省内存去选轻量桌面。MATE 和 Xfce 是给老机器准备的。MATE 延续了传统 GNOME 2 的操作逻辑Xfce 更精简。如果你打算把 Mint 装在虚拟机里当测试环境或者手边只有一台老笔记本这两个分支确实更合适。但要说清楚一点换桌面环境不会让 CUDA 编译变快也不会让模型训练提速它影响的只是你每天面对的那个界面流畅度。我在一台 2015 年的老本上装过 Xfce 版本日常敲代码没问题但编译带 CUDA 的自定义算子时该等多久还是等多久。还有一个容易忽略的点三个分支的软件源是同一套所以你完全可以在 Cinnamon 上装 Xfce 的终端或者在 Xfce 上换 Cinnamon 的主题。系统底层的包管理、驱动仓库、内核版本都是共享的真正有差异的只是桌面组件和默认应用。选分支的时候不用太纠结选错了重装一次也就半小时。至于 Mint 的美化我的态度是先跑通环境再折腾外观。Mint 自带主题管理、图标包切换、字体设置想让它像 macOS 那样有个底部 Dock装个 Plank 或者 Cairo-Dock 就行apt 里都有。但建议把这些放到 CUDA 和 PyTorch 都验证通过之后再做否则出问题时你会怀疑是不是美化动了系统组件。1.2 相对 Ubuntu 和 Windows 的取舍逻辑先说 Ubuntu。Mint 和 Ubuntu 的关系是同源的Mint 22 的软件源指向 Ubuntu 24.04 的仓库。这意味着你在网上搜到的绝大多数 Ubuntu 教程命令可以直接在 Mint 上跑。区别在于桌面层Ubuntu 的 GNOME 默认布局跟 Windows 差异大Mint 的 Cinnamon 保留了开始菜单、任务栏、系统托盘这一套经典结构切换成本低得多。另外 Mint 默认不推 Snap 包而 Ubuntu 这几年在往 Snap 上倾斜apt 装的东西和 Snap 装的东西混在一起容易出权限问题Mint 在这点上干净一些。再说 Windows。Windows 上装 CUDA 是可行的但有几个绕不开的坎。第一是 WSL2 的 CUDA 支持和原生 Windows 的 CUDA 支持是两套东西很多库在 WSL 下编译报错你得反复确认自己到底在哪一层。第二是 Windows 的路径分隔符、文件权限、符号链接都跟 Linux 不一样很多开源项目提供的安装脚本直接就是 bash 脚本在 Windows 上要么改要么用 Git Bash 硬扛。第三是显存管理Windows 桌面本身就吃一部分显存跑大模型的时候可用显存比理论值少一截。Linux 下虽然桌面也吃显存但整体开销小而且可以切到无图形界面的 tty 里跑训练。所以我的取舍逻辑是如果你的工作流完全依赖某些 Windows 独占软件那就留着 Windows如果主要是 Python PyTorch/TensorFlow 这套Linux Mint 裸机是更省心的选择。万一必须双系统注意 EFI 分区共享的问题先装 Windows 再装 Mint让 Mint 的引导程序接管启动菜单这样能避免 Windows 更新后把引导覆盖掉。2. 系统安装从 U 盘启动到分区落地装机这件事看起来是纯体力活但分区方案一旦定错后面迁移数据会很痛苦。我在第一次装 Mint 的时候随手用了默认的擦除整个磁盘结果后来想重装系统升级大版本发现所有项目数据、conda 环境、下载好的数据集全在根分区里只能先备份再动手。第二次装的时候我就把 /home 单独切了出来之后系统升级直接覆盖根分区用户数据一行不动这个习惯一直保留到现在。安装前需要确认的硬件信息有两条一是显卡型号二是主板固件模式UEFI 还是 Legacy BIOS。显卡型号决定了后面 CUDA 版本的选择比如 RTX 4060 Ti 是 Ada Lovelace 架构计算能力 8.9需要 CUDA 11.8 以上的版本才能完整支持如果是更老的 Kepler 架构显卡新版 CUDA 已经放弃支持只能停在 11.x 的某个版本。固件模式决定了分区表格式UEFI 对应 GPT 加 EFI 系统分区Legacy BIOS 对应 MBR两者不能混。装之前进 BIOS 看一眼可以省掉一次安装失败。安装过程中还有个小细节值得提语言和键盘布局选完之后Mint 会问你要不要安装多媒体解码器和第三方软件。这两个勾建议都打上尤其是第三方软件里的显卡驱动和无线网卡固件提前装好能避免装完系统发现连不上网、或者分辨率不对还得手动调。至于加密主目录这个选项看你自己的需求加密后每次启动要输密码安全但麻烦纯开发机我一般是关掉的。2.1 安装介质制作与固件设置U 盘启动盘的制作工具Linux 下我习惯用dd或者 balenaEtcherWindows 下用 Rufus。这里有个坑用 Rufus 的时候如果你要装的是 UEFI 模式分区方案一定要选 GPT目标系统选 UEFI不要用默认的 MBR 配置否则 U 盘插上去主板认不出来。用dd的话不会出错命令很简单# 确认 U 盘设备名千万别写错写错就是格式化你的硬盘 lsblk sudo dd iflinuxmint-22-cinnamon-64bit.iso of/dev/sdX bs4M statusprogress oflagsyncoflagsync这个参数不能省它保证数据真正写完再返回不加的话命令提示结束了实际缓存里还有数据没落盘拔 U 盘就废了。写完可以用sudo sync再确认一次。接着进 BIOS。需要动的设置一般有这几项关闭 Secure Boot多数情况下装 NVIDIA 驱动时需要Mint 虽然支持签名驱动但自己编译内核模块时会遇到签名拦截启动顺序把 USB 排到第一位如果机器有 RAID 模式或者 Intel RST要切成 AHCI否则安装程序看不到硬盘。这几项设置在不同主板上的叫法不一样翻一翻说明书或者搜索主板型号加装 Linux基本都能找到对应位置。Secure Boot 关不关其实有争议。开着的话系统更安全但装完 NVIDIA 驱动后需要手动给内核模块签名步骤繁琐而且每次内核更新都要重签。我的选择是开发机上关掉日常上网的机器上留着。这个取舍取决于你把机器当什么用。2.2 分区方案的取舍分区是最需要提前想清楚的一步。我推荐的方案是手动分区具体分配如下挂载点建议大小文件系统说明/boot/efi512MB ~ 1GBFAT32UEFI 启动必需双系统时要和 Windows 共用同一个/80GB ~ 120GBext4系统和软件包CUDA 装在这里会吃掉 10GB 以上/home剩余全部ext4项目代码、数据集、conda 环境都在这里swap内存的 0.5~1 倍swap大内存机器可以给 16GB 或者直接用 swapfile根分区给 80GB 是保守估计。装完系统大概占 15GBNVIDIA 驱动加 CUDA Toolkit 每个版本占 5~8GBcuDNN 几百兆如果你打算装两三个 CUDA 版本做兼容测试根分区很容易吃紧。我有一台机器根分区只给了 60GB装完 CUDA 11.8 和 12.4 之后就剩不到 10GB后来不得不清缓存。所以直接给 100GB 以上省心。swap 的争议比较大。如果你的内存是 64GB 以上日常跑模型基本用不到 swap可以只给 8GB 甚至不给或者用 2GB 的 swapfile 兜底。但要注意一个例外有些训练框架会检查可用内存加交换空间的总量如果这个值太小会直接报错退出。所以完全不设 swap 也不是好主意给个 8GB 到 16GB 比较稳妥。/home 独立的最大价值是重装系统时不用搬数据。我现在的做法是每次大版本升级前把 conda 的环境导出成 yml 文件系统重装后再根据 yml 重建环境代码和数据都在 /home 里原封不动。这样一次升级大概花两个小时大部分时间还是在等 conda 下载包。2.3 虚拟机里玩 Mint 的注意事项有些人想先在 VirtualBox 里体验 Mint确认顺手了再装裸机。这个思路没问题但要把预期放对虚拟机里跑 CUDA 基本是不现实的。VirtualBox 的显卡是虚拟的不支持 NVIDIA 的 CUDA 运行时除非你的机器支持 PCI 直通这需要 CPU 和主板支持 IOMMU配置也复杂否则在虚拟机里装完 CUDA 会发现nvidia-smi根本不存在。所以虚拟机适合熟悉系统操作、测试软件安装流程不适合做真实的 GPU 开发。VirtualBox 里装完 Mint 后第一件事是装增强功能否则分辨率不能自适应、共享文件夹用不了、鼠标会飘。Mint 官方源里有现成的包sudo apt update sudo apt install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11装完重启vboxguest、vboxvideo这些内核模块就加载上了。如果遇到增强功能装不上、提示内核模块编译失败多半是内核头和当前内核版本不匹配先跑sudo apt install linux-headers-$(uname -r)补齐再重装。共享文件夹在 VirtualBox 的设置里指定目录后在 Mint 里用sudo mount -t vboxsf 共享名 /mnt/share挂载即可要开机自动挂载就写进/etc/fstab。虚拟机另一个要注意的是快照。装 CUDA 这类操作容易把系统搞乱我建议在装驱动之前先打个快照出问题直接回滚比修系统快得多。快照会占用磁盘空间所以别打太多关键节点打两三个就够。3. GPU 环境搭建驱动、CUDA、cuDNN 三件套这一节是整篇文章的核心也是踩坑最密集的地方。先说清楚一个基本概念很多人在这里就晕了NVIDIA 驱动、CUDA Toolkit、cuDNN 是三个不同层次的东西。驱动是内核模块负责让操作系统认识显卡它提供的功能里包含一个最高支持的 CUDA 版本可以用nvidia-smi看到。CUDA Toolkit 是安装在你系统上的开发工具链包含nvcc编译器、运行时库、头文件装在/usr/local/cuda-x.x目录下。cuDNN 是深度学习的加速库它依赖 CUDA 的运行时库本质上就是几个头文件加几个动态库。三者必须版本对应。驱动版本要大于等于 CUDA Toolkit 要求的驱动下限cuDNN 版本要和 CUDA 大版本匹配。举个具体例子RTX 4060 Ti 建议配 CUDA 12.x那么驱动至少要在 525 以上对应 CUDA 12.0如果想用 CUDA 12.4驱动要到 550 左右。这些对应关系在 NVIDIA 官方的 release notes 里有一张表装之前查一下比事后 debug 划算得多。还有一个常见误解要澄清nvidia-smi显示的 CUDA 版本不是你装的 CUDA 版本而是当前驱动能支持的最高 CUDA 版本。很多人看到nvidia-smi显示 12.4就以为自己装了 12.4其实nvcc -V显示的才是真正安装的编译器版本。这两个数字不一致是完全正常的只要装的 CUDA 版本不高于驱动支持的上限就行。3.1 NVIDIA 驱动安装的三条路线装驱动有三条路各有适用场景。第一条是用 Mint 自带的驱动管理器在开始菜单里搜 Driver Manager。打开之后它会扫描硬件列出可用的驱动版本选推荐的那个点应用就行。这条路最省事适合新手而且装的是打包好的 deb 包跟系统集成得好内核更新时会自动重建模块。缺点是版本可能不是最新的如果你的显卡很新仓库里的驱动可能不够用。第二条是用 apt 手动装。先看看有哪些可用版本ubuntu-drivers devices输出里会标注 recommended 的那个然后sudo apt install nvidia-driver-550这样装。这条路的优势是可控你可以指定版本也可以随时apt remove卸载干净。缺点和第一条一样受限于仓库里的版本。第三条是用 NVIDIA 官网下载的.run文件安装。这条路能拿到最新驱动但要先禁用开源的 nouveau 驱动还要在关闭图形界面的情况下装步骤麻烦。禁用 nouveau 的方法是在/etc/modprobe.d/下新建一个配置文件sudo tee /etc/modprobe.d/blacklist-nouveau.conf EOF blacklist nouveau options nouveau modeset0 EOF sudo update-initramfs -u sudo reboot重启后按CtrlAltF3切到文本模式停掉显示管理器Mint 用的是 lightdmsudo service lightdm stop然后运行.run文件。安装过程中会问你要不要装 32 位兼容库、要不要改 xorg 配置一般选是。装完sudo reboot进系统后nvidia-smi能出结果就算成功。我的建议是显卡不是最新款就用前两条路省事显卡是新发布的、仓库驱动还没跟上才走第三条。而且不管走哪条装完一定要重启再验证不要在装完驱动就直接跑 CUDA 安装因为内核模块加载需要重启才能生效。3.2 版本选择CUDA Toolkit 怎么挑选 CUDA 版本要考虑三个约束显卡架构、你用的深度学习框架支持哪些版本、驱动能不能跟上。先看显卡架构。RTX 40 系是 Ada Lovelace计算能力 8.9CUDA 11.8 开始支持。RTX 30 系是 Ampere8.6CUDA 11.1 以上。再往前的 20 系是 Turing7.5CUDA 10 以上。新的 Blackwell 架构需要 CUDA 12.8 及以上。所以如果你是 4060 Ti最低线是 11.8正常选 12.x 更合适。再看框架。PyTorch 官方预编译包通常会提供 CUDA 11.8、12.1、12.4 这几个版本TensorFlow 的节奏略慢一些。我一般会去 PyTorch 官网的安装页面看当前支持哪些 CUDA 版本挑一个和显卡兼容、并且框架支持的交集。注意框架自带的 CUDA 运行时和系统装的 CUDA Toolkit 是两回事pip 装的 PyTorch 会自带一套 CUDA 运行时库理论上你系统不装 CUDA 也能跑只要驱动够新。但如果要编译自定义算子、或者用某些需要nvcc的库系统层就必须有完整的 Toolkit。最后看驱动。CUDA 12.4 大约需要 550 以上的驱动CUDA 12.8 需要 570 以上。装之前nvidia-smi看一眼驱动版本不够就先升级驱动。下载页面上通常提供两种安装包runfile (local)和deb (local)。我推荐用 runfile原因是它不依赖仓库配置不会在你不知情的时候自动升级驱动。装的时候有一个关键步骤sudo sh cuda_12.4.0_550.54.14_linux.run在安装选项界面把 Driver 那一项取消勾选只保留 CUDA Toolkit。原因是你已经用系统方式装好驱动了runfile 里带的驱动版本可能和你系统的不匹配覆盖安装容易出问题。这个细节如果漏掉装完之后很可能出现登录循环或者黑屏。装完配环境变量我习惯写在/etc/profile.d/cuda.sh里这样所有用户都能用export CUDA_HOME/usr/local/cuda export PATH$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATHLD_LIBRARY_PATH这一条是必须的很多装完 CUDA 但程序找不到 libcudart的问题都是漏了它。写完后source /etc/profile或者重新登录生效。3.3 cuDNN 的两种装法cuDNN 的安装方式这几年变化挺大。老办法是下载 tar 包解压后把文件拷到 CUDA 目录tar -xzvf cudnn-linux-x86_64-8.x.x.x_cudaX.X-archive.tar.xz sudo cp cuda/include/cudnn*.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod ar /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*这个方法的缺点是升级 CUDA 后要重新拷一遍而且没有包管理器记录卸载不干净。新办法是加 NVIDIA 的 apt 仓库然后直接sudo apt install cudnn9-cuda-12包管理器帮你处理依赖和文件位置。这个方法更干净而且 cuDNN 9 之后版本号管理也简化了。缺点是仓库配置有时候会因为网络问题加不上需要多试几次。下载 cuDNN 需要 NVIDIA 开发者账号注册免费但要填一些信息。下载页面上会有多个版本对应不同的 CUDA 大版本选的时候看清楚包名里的cuda12还是cuda11装错版本编译器不会报错但运行时会遇到各种诡异的段错误。装完之后验证cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2这个命令能打出主版本号、次版本号和补丁号。cuDNN 8 和 9 的头文件名略有差异8 是cudnn_version.h9 也是这个文件但内部宏定义结构变了用 grep 匹配的时候要注意。如果这个文件找不到说明头文件没拷到位回头检查拷贝路径对不对。3.4 多版本 CUDA 共存与切换做深度学习的人迟早会遇到这个问题论文的官方实现要求 CUDA 11.8但你自己在做的项目用的是 12.4来回重装系统受不了。解决办法是让多个版本共存按需切换。runfile 安装时可以通过--installpath参数指定安装目录或者干脆装完再把/usr/local/cuda-12.4改名成/usr/local/cuda-12.4然后创建软链接/usr/local/cuda指向当前要用的版本。NVIDIA 的 runfile 默认就是这么做的装 12.4 会生成/usr/local/cuda-12.4同时把/usr/local/cuda指向它。切换的时候只要改软链接sudo rm -rf /usr/local/cuda sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda再重新 source 一下环境变量文件nvcc -V就指向新版本了。我一般会写两个小脚本use-cuda118.sh和use-cuda124.sh放在~/bin里切换的时候跑一下比记命令省事。要注意的是软链接切换只影响系统层的 CUDA Toolkit。conda 环境里如果装了cudatoolkit那是 conda 自带的一套运行库优先级可能比系统的高。所以切完系统 CUDA 之后最好在目标 conda 环境里确认一下python -c import torch; print(torch.version.cuda)的输出确认框架实际用的是哪个运行时。3.5 版本验证的正确姿势装完之后有一套固定的验证流程我每次都按这个顺序走一遍能快速定位问题出在哪一层。检查项命令期望结果驱动是否工作nvidia-smi显示显卡型号、驱动版本、显存占用驱动支持的最高 CUDAnvidia-smi右上角例如 CUDA Version: 12.4实际安装的编译器nvcc -V显示 release 版本号运行库路径echo $LD_LIBRARY_PATH包含 /usr/local/cuda/lib64cuDNN 版本cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2显示主次版本号框架识别的 CUDApython -c import torch; print(torch.version.cuda)显示框架自带的运行时版本cuDNN 是否可用python -c import torch; print(torch.backends.cudnn.version())显示框架用的 cuDNN 版本这里最容易出问题的是第四项。如果你的LD_LIBRARY_PATH里没有 CUDA 的 lib64 路径那么即使nvcc -V正常跑程序的时候还是会报找不到动态库。另一个常见问题是nvcc找不到这说明/usr/local/cuda/bin没进 PATH。这两个都是环境变量的问题回头检查/etc/profile.d/cuda.sh写对没有。最后一项也值得强调框架用的 cuDNN 版本和系统装的 cuDNN 版本可以不一样因为 pip 装的 PyTorch 自带一份 cuDNN。如果你在意版本一致性可以用 conda 装 PyTorch让 conda 统一管理 CUDA 运行时和 cuDNN这样版本对齐更简单。4. Anaconda 与 PyCharmPython 侧的开发环境系统层的 GPU 环境搞定之后接下来是 Python 这一层。这一层的基本原则是不要在系统 Python 里装任何东西。Mint 自带的 Python 是系统组件很多系统工具依赖它你往里装包一旦版本冲突可能连桌面都起不来。正确做法是用 Anaconda 建独立环境每个项目一个环境。Anaconda 的价值不只是包管理更重要的是它把 CUDA 运行时、cuDNN 这些非 Python 依赖也纳入管理了。当你执行conda install pytorch torchvision pytorch-cuda12.4 -c pytorch -c nvidia的时候conda 会自动下载匹配版本的 CUDA 运行时库放到环境目录里这个环境自带的运行时优先级高于系统版本。好处是环境之间完全隔离A 项目用 11.8、B 项目用 12.4 互不干扰代价是每个环境都要占几个 GB 磁盘。还有个替代方案是 Miniconda只装 conda 和 Python不预装那一堆科学计算包。如果你磁盘紧张、或者喜欢自己控制装什么Miniconda 更合适。Anaconda 预装的几百个包大部分你可能一辈子都用不上但好处是开箱即用numpy、pandas、jupyter 这些常用工具不用单独装。4.1 Anaconda 安装与源配置安装过程本身很简单。从官网下载 Linux 版的.sh安装脚本然后bash Anaconda3-2024.10-1-Linux-x86_64.sh安装时会问安装路径默认是~/anaconda3建议就用默认值放在用户目录下权限清晰重装系统时如果 /home 独立环境还在不过不同系统的库可能有差异跨系统迁移环境至少要重新解压编译包。还会问要不要conda init选是这样它会把 conda 的初始化代码写进~/.bashrc之后打开终端自动激活 base 环境。这里有个小争议自动激活 base 环境会让终端提示符前面多一个(base)有些人觉得碍眼。而且 base 环境被激活后所有pip install默认装到 base 里容易把基础环境搞乱。我的做法是关掉自动激活conda config --set auto_activate_base false需要的时候手动conda activate xxx就行。源配置是个重点。默认源在国内访问速度不稳定换成国内高校开源镜像站能快很多。用命令行配置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要注意的是镜像站同步有延迟某些刚发布的包可能还没同步过来。如果conda install报PackageNotFoundError但你确定这个包存在先别急着怀疑环境把镜像注释掉试试官方源能区分是网络问题还是包确实没有。还有一个坑不要混用 conda 源和 pip 源。conda 装包走 conda 源pip 装包走 pip 源两者的依赖解析是独立的。同一个环境里如果既用 conda 装了 numpy又用 pip 装了一个依赖不同 numpy 版本的包很容易出现版本冲突。我的原则是能用 conda 装的就用 condaconda 没有的才用 pip并且装完 pip 包之后不要再动 conda 的依赖。4.2 用 conda 建 PyTorch 环境把 CUDA 对上建环境的流程我一般是这样conda create -n dl python3.11 conda activate dl pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124为什么用 pip 而不是 conda 装 PyTorch因为 pip 版用的是框架自带的 CUDA 运行时和你系统装的 CUDA Toolkit 是解耦的只要驱动够新就能跑版本匹配问题少很多。conda 版会把 CUDA 运行时也装进环境好处是更正统坏处是下载体积大、有时候和系统驱动版本冲突。装完验证python -c import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available())三个输出都要看。torch.version.cuda显示的是框架编译时用的 CUDA 版本torch.cuda.is_available()返回 True 才说明显卡能被识别。如果这个返回 False先检查驱动nvidia-smi能不能正常输出再看这个环境里的 torch 是不是 CPU 版本包名里带cpu的就是。跑一个实测小例子确认算力真的能用import torch a torch.randn(1000, 1000).cuda() b torch.randn(1000, 1000).cuda() c a b print(c.device, c.shape)能打印出cuda:0就说明整条链路通了。这个测试比is_available()更有说服力因为它真的把数据搬到显存里算了。4.3 PyCharm 安装、中文界面与解释器绑定PyCharm 有两个版本社区版免费专业版收费但有 30 天试用学生和教师可以申请免费的教育授权。深度学习开发用社区版基本够用远程调试、数据库工具这些专业版功能日常用不上。下载 tar.gz 包解压tar -xzf pycharm-community-2024.3.tar.gz sudo mv pycharm-community-2024.3 /opt/然后进/opt/pycharm-community-2024.3/bin跑./pycharm.sh启动。第一次启动会问要不要创建桌面快捷方式选是。如果没有这个选项可以手动建一个.desktop文件放到~/.local/share/applications/里面有 Name、Exec、Icon 三个关键字段指向实际路径就行。界面中文是通过插件实现的。打开 Settings进 Plugins在 Marketplace 里搜 Chinese装官方那个简体中文语言包重启生效。注意这个插件只翻译界面不翻译报错信息所以看日志的时候还是得认英文。我个人习惯是不装中文包因为搜资料的时候英文关键词命中率更高界面上的英文术语和网上文档对得上。解释器绑定是使用 PyCharm 最关键的一步。进 Settings找到 Project 下的 Python Interpreter点右上角齿轮选 Add Interpreter然后选 Conda Environment指定你之前建的那个环境的路径一般是~/anaconda3/envs/dl/bin/python。绑定之后PyCharm 底部的终端会自动激活这个环境运行配置也会用这个解释器。这里有个常见困惑为什么 PyCharm 里import torch报红但终端里能跑八成是解释器没选对PyCharm 用的是系统 Python 而不是你的 conda 环境。还有一种情况是索引没建完右下角会显示进度条等它跑完红线就消失了。如果等完了还是红的右键项目目录选 Mark Directory as Sources Root 试试。4.4 在 PyCharm 里装包和管理项目环境装包有两个入口。一是 Settings 里的 Python Interpreter 界面点加号搜索包名点安装图形化操作适合装单个包。二是用底部 Terminalpip install pandas这样装适合批量装或者需要指定版本的时候。我一般用第二种因为能看清 pip 的输出报错信息完整。但要注意 Terminal 的工作目录和环境。PyCharm 的终端默认会自动激活当前项目配置的解释器环境你which python确认一下路径是不是你期望的那个。如果发现是系统 Python检查一下 Settings 里的终端配置或者手动conda activate。关于 PyCharm 里装 pandas 这类包我踩过的坑是在网络不稳的情况下 pip 装大包会中断然后留下一个半成品再次安装时报already satisfied但实际不能用。遇到这种情况加--force-reinstall重装或者先pip uninstall再装。还有一种情况是包的版本和 numpy 不兼容pandas 2.x 需要 numpy 1.23 以上装的时候会自动处理但如果环境里已经有旧 numpy 且被别的包装着就会冲突这个时候看 pip 的报错信息里提示的版本要求手动指定版本装。项目环境管理的习惯建议是每个项目一个 conda 环境用conda env export environment.yml记录依赖代码提交的时候把 yml 一起提交。这样换机器或者重装系统之后conda env create -f environment.yml就能重建比重装一遍省事得多。不过 yml 里会包含很多系统相关的信息跨平台恢复的时候可以先手动精简一下只保留主要包。5. 踩坑清单我实际遇到过的问题与解法环境配置这件事文档上写的都是顺利路径真正花时间的是各种报错。这一节我把这些年遇到过的典型问题和排查思路整理出来都是实际操作中反复出现的不是从手册上抄的。先说一个心法出问题的时候先判断是哪一层的问题。是驱动层nvidia-smi报错、工具链层nvcc找不到、库层找不到 libcudnn、还是 Python 层import 失败分层定位能大幅缩短排查时间不然你会在无关的地方浪费很多时间。5.1 下载与解压类报错最经典的一个报错是gzip: stdin: invalid compressed>lsmod | grep nvidia dkms statuslsmod没输出说明模块没加载dkms status能看到驱动的编译状态。如果显示 installed 但 lsmod 是空的sudo modprobe nvidia手动加载试试报错信息会告诉你具体原因。内核更新导致模块失效的情况重装一次驱动包就能解决。另一个高频问题是 CUDA 版本和显卡不匹配。RTX 4060 Ti 用 CUDA 11.6 会出现找不到设备的错误因为 11.6 编译时还没有 sm_89 这个目标。判断方法是去 NVIDIA 官网查显卡的计算能力再对照 CUDA 的版本支持表。这个对照关系记住几个关键的就行11.8 是支持 40 系的最低版本12.x 系列都没问题。还有一种情况是程序运行时提示CUDA driver version is insufficient for CUDA runtime version这意味着你装的 CUDA 运行时版本高于驱动支持的版本。解决办法要么升级驱动要么降级 CUDA。查驱动支持的最高版本直接看nvidia-smi的输出那个数字就是天花板。5.3 依赖与编译类报错在 Windows 上编译 Python 扩展包经常遇到 Microsoft Visual C 14.0 is required 这个提示意思是缺少 C 编译工具。Linux 下等价的问题是缺 gcc 或者缺 Python 开发头文件报错通常是 Python.h: No such file or directory 或者 command gcc failed。解决办法sudo apt install build-essential python3-dev注意python3-dev要对应你当前用的 Python 版本。如果你在 conda 环境里用 Python 3.11而系统装的是 3.10 的 dev 包编译的时候还是找不到头文件。这种情况用 conda 装python3.11的时候一般会带上头文件或者用conda install -c conda-forge gxx_linux-64在环境里装一套编译器。编译 CUDA 扩展的时候还常遇到 unsupported gpu architecture 这类提示原因是TORCH_CUDA_ARCH_LIST环境变量没设对或者用了当前 CUDA 不支持的架构代号。比如给 4060 Ti 编译的时候设置成export TORCH_CUDA_ARCH_LIST8.9就好。5.4 桌面与日常使用类问题装完 NVIDIA 驱动之后如果出现登录界面循环、输入密码后又回到登录界面多半是驱动和显示管理器冲突。解决办法是切到文本模式CtrlAltF3把驱动卸载干净重装或者换用nomodeset参数启动一次进系统后再修。预防措施是装驱动前先打快照或者备份重要数据。虚拟机里的问题是另一类。VirtualBox 增强功能装不上、共享文件夹挂载失败、分辨率不对这些前面 2.3 节提过核心是内核头文件要匹配。另外虚拟机里跑 Mint 如果开了 3D 加速有时候会导致界面卡顿或者花屏关掉 3D 加速改用软件渲染会稳定一些代价是动画不流畅。日常使用方面Mint 的中文输入法需要单独装sudo apt install fcitx5 fcitx5-chinese-addons之后在输入法配置里加拼音然后重新登录。字体方面默认字体对中文的支持还行但如果你经常看代码注释里的中文可以装个更舒服的等宽中文字体比如 Noto Sans Mono CJK在终端的字体设置里改一下就行。这些都是锦上添花的事装完环境和 IDE 之后有空再弄。最后补一个关于 conda 环境迁移的经验。很多人想直接把整个 conda 环境目录拷贝到另一台机器通常是可以用的前提是 Python 版本、CUDA 驱动版本大致一致而且路径相同。如果路径不同很多包的脚本里写死了绝对路径会找不到。我的做法是导出 yml 重建多花二十分钟下载但省掉了后面各种奇怪的路径错误。真要在多台机器上同步环境考虑把环境目录放在共享存储上或者用容器把这套环境整体打包这是另一个话题了。我个人在实际操作中的体会是这套环境的搭建难点从来不在某一步命令怎么写而在于版本之间的耦合关系。驱动、CUDA、cuDNN、框架、Python 版本五个变量任意两个不对上都会出问题。所以我的习惯是先把版本矩阵确定下来再动手写在纸上或者记在笔记里装的时候严格按这个矩阵来中途不改主意。这样一次装通的概率高很多也方便以后重装的时候直接复用这套配置。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻