记在Ubuntu 22.04 LTS上部署PyTorch深度学习环境

最近的工作需要使用深度学习技术,也就免不了使用GPU,然而目前我实验室的机器上使用的是Windows 11的操作系统,用来进行实验确不符合我一个常年不用Windows系统的人的习惯😓,于是我买来一块移动硬盘并在这之上部署了基于Ubuntu 22.04 LTS的PyTorch的深度学习环境。起初我以为会一切顺利,可万万没想到重装一时爽,配环境火葬场…本文谨记录在这中踩的坑。

关于移动硬盘外挂操作系统

就目前来说,我的建议是:不要这么做,至少不要使用机械硬盘。

我手上这块是WD Element的机械移动硬盘,简单测试了一下顺序读写速度,分别为:5.7GB/S和128MB/S。看着还不错,可一旦到了随机读写任务上速度与延迟就一言难尽了。直观的感受就是一个字——,但是主要体现在读盘冷启动的时候(毕竟实验室机器的配置还是不错的)。

关于NVIDIA驱动问题

说句实话,我之前从未在Linux上配置过深度学习环境,用的往往是配置好了的现成品,这一次我多多少少理解为什么大家都在说Linux上的NVIDIA驱动很难用了…事实上为了处理驱动问题,我从下午13时一直干到了下午17时(其实主要受磁盘IO速度与实验室网络环境影响)。

在安装Ubuntu系统的时候,安装程序有询问是否要安装附加驱动(Additional Drivers),我自然是勾选了确定。进入系统,在miniconda虚环境下安装PyTorch,始终无法安装对应GPU版本(CUDA)。检查发现自动安装的驱动并不是最新的(应该是510版本),本能地以为升级驱动就可以了,没想到这只是噩梦的开始。

事实上,安装驱动的方法并不只有一种,至少我找到的方法就有三种:

  • 从NVIDIA官网下载。
  • 使用ubuntu-drivers autoinstall安装。
  • 使用系统应用Additional Drivers安装。(事实证明,这是最好的方法)

试试安装从NVIDIA官网下载的驱动

其实早在安装系统前,我已经提前在NVIDIA官网下好了对应的驱动程序,但是执行后发现至少有两个问题:

  1. 安装驱动程序需要停止一切占用GPU的进程,其中就包含Ubuntu自带的桌面环境GNOME。这一点可以通过使用Nouveau驱动解决。
  2. 驱动安装程序提示建议使用Ubuntu发行版渠道下载驱动,因官网驱动并不是最兼容最优化版本。

那就用ubuntu-drivers autoinstall安装驱动吧

按理来说,从这里安装应该是稳妥的,但是不知道是否是因为bug的原因,安装的驱动一直报错。最后无奈只能使用apt purge清除掉所有的相关软件包了。

最后还是使用系统应用Additional Drivers安装驱动吧

最开始其实我也是从这里安装的驱动,然而受到了一篇教程的蛊惑,最后放弃了这一步。回过头来才发觉,当初就应该使用这一方法。当然这之中也遇到了一个问题,那就是开源驱动(open kernel)驱动的问题——一开始我使用的是525版本的开源驱动,事实上这也是上一步中ubuntu-drivers推荐我安装的。然而在两次清洁安装后,显示的错误是一致的,均是无法找到设备。随后我开始怀疑是不是开源驱动的问题,遂安装525版本的非开源版本,问题解决。

驱动问题解决了,使用conda install,成功一键部署PyTorch的GPU版本。

关于XRDP远程桌面

由于实验室网络登录方式是Web Portal,所以有一个图形化界面还是更加方便一些。在按照教程配置好后,连接的结果却是黑屏和闪退。按照我搜索到的资料,大多数的资料指向向/etc/xrdp/startwm.sh中添加以下字段:

1
2
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

实际上,完全配置XRDP还需要向xsessionrc中添加桌面程序(比如Ubuntu自带的GNOME)。而我最后的解决方案还是通过查看XRDP的错误日志,安装dbus-lauch这一缺失的软件包解决的。


总结:

  1. 不要使用移动硬盘安装操作系统,至少不要使用机械硬盘。
  2. 尽量参考外文官网资料,因其往往更新更详尽。
  3. 检查程序日志而不是搜索症状。
使用 Hugo 构建
主题 StackJimmy 设计