突然之间,Ubuntu坏了…… Ubuntu啊,愿你永恒存在
这是南山大学青山研究室(NISE) Advent Calendar 2019中的第18天的文章。
今年,有些人在正式环境中搞砸了,看起来2019年的Advent日历真是非常热闹啊!
這次的故事與此相近。在這裡的故事幾乎就像非虛構,請事先注意。
当时的情况
当时虽然说不上是很久以前,只是一个月前发生的新鲜事。目前的NISE由25名本科生、8名研究生(其中3人是进入社会的人)组成,每个本科生和研究生都被分配到一个研究室。
每个房间都配置着装有GPU的电脑,问题出在那些安装了Ubuntu系统的电脑上。
毫无察觉…
我会标明那台电脑的配置。
电脑名称 MASTERPIECE 系列 OSWindows 10 Home 64 位、Ubuntu 18.04 双启动 CPUIntel Core i7 显卡 Geforce 1080ti 内存 64GBSSD512GBHDD1TB
这样的感觉。
我从学院的成员那里听说他们想要在GPU上运行keras,大约是在今年夏天进行环境配置后,之后就没有再进行过任何操作了。因此,我认为内部的软件更新也没有进行,各种软件版本都变得相当陈旧。
有一天,学部的成员向我提出了一个请求,希望我更新Python,并在Ubuntu上安装pyenv。
$ apt install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
我遇到了各种库的安装问题,所以尝试使用apt来安装。虽然一切进展顺利,但在这一步遇到了问题。
214 个软件包可供更新。3
4 个更新为安全更新。
34 个更新是安全更新。
:
*** 系统需要重新启动 ***
我发现有这样的信息出现。
哎呀,我错了,我本以为应该经常更新一下的…
$ apt update
$ apt upgrade
$ apt dist-upgrade
执行了该操作,然后重新启动了。
画面的宽高比有问题。
再次启动后,选择了通常的紫色画面上的Ubuntu,并尝试启动它。然而,出乎意料地陷入了登录循环…
然而,自从从16.04升级到18.04以来,这个问题时常出现。
-
- Ubuntu 18.04 LTS 无法启动,禁用 Wayland 后可能会启动!
参考本文,我通过在恢复模式下禁用Wayland来解决了这个问题。
我还记得在这里,我有过一次恢复的感觉。
实际上,一旦被禁用后可以登录,就会看到常见的屏幕….
“嗯?图标变大了吗?”
我不小心说错了话。
通常情况下,应该按照显示器适配的屏幕比例显示,但这次却变成了比平时更大更宽的16:9画面比例。
在这里,我接到了后辈的要求,要将显示器扩展到两台,并分别用HDMI和显示端口连接到每个显示器上。
HDMI的那台显示器虽然显示出来了,但画面比例有些问题,然而,显示端口的那台显示器却完全没有反应。
嗯,总之,虽然我本可以在这里放弃并说“算了,反正也能用”,但面对眼前的bug解决不了,作为一个工程师,我还是决定重新考虑一下,开始和电脑对峙。
英伟达的黑暗
确认到 nvidia-smi 仍在运行…
Failed to initialize NVML: Driver/library version mismatch
出现了。
如果我重新启动的话,会不会好起来呢-我这么想着重新启动,结果最后,我们再也没有看到登录界面出现在我们面前。
有點危險。
心思的焦虑正在不断蔓延增长。
很幸运地,我成功切换到了恢复模式并从那里登录。
将NVIDIA驱动程序安装到Ubuntu 18.04上。
在尝试在Ubuntu 18.04上安装NVIDIA驱动时遇到了困难。
虽然我努力地进行了乱翻找,甚至从恢复模式开始,但我无法登录,屏幕一片漆黑,我的脑海也变得一片混乱。
不过,我记起来了,我之前把研究所需的代码之类的东西妥善地保存在了Github的私人仓库,并且还备份了一些图片截图、构建好的模型之类的东西在Google Drive上。
我决定重新安装Ubuntu18.04。
将Ubuntu 18.04的ISO重新刻录到USB闪存盘,并插入连接
在整理文件的时候,我重新安装了Ubuntu。
很庆幸之前创建的磁盘映像还保留着。
深度学习环境搭建的困难之处。
好的,现在开始是问题了。
在我们的研究室里,我们推荐使用Chainer作为深度学习框架。
在使用Chainer进行深度学习的GPU环境下,需要安装Cupy模块。
这个模块相当麻烦。
首先,我们要安装作为基础的Cuda。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.105-1_amd64.deb
apt update
apt upgrade
apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
apt install ./cuda-repo-ubuntu1804_10.1.105-1_amd64.deb
apt update
apt install cuda cuda-drivers
然后,我们设置环境变量PATH。
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
下一步是安装Cudnn。这需要根据之前安装的cuda版本来选择合适的安装版本,所以要注意。
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libcudnn7_7.5.0.56-1+cuda10.1_amd64.deb
apt install ./libcudnn7_7.5.0.56-1+cuda10.1_amd64.deb
apt update
apt-get install libcudnn7
然后,安装Chainer和Cupy。
需要注意的是,Cupy依赖于Cuda的版本,所以必须使用相应的版本。另外,在安装Chainer之前必须先安装Cupy,否则在安装Chainer时会出错。
pip search cupy
pip install cupy
pip install chainer
秘籍
好了,这下应该能顺利进行!不过现实世界可没有这么容易啦~
这里还有一个秘技
conda install keras-gpu
您可以通过以下方式一次性下载所有与 GPU 相关的软件
这要简单得多,所以如果你对深度学习框架不挑剔,这是个不错的选择。
总结
这一次,我将谈谈 apt update apt upgrade 如何导致多个版本的 nvidia-driver 被安装,以及我是如何通过重装 Ubuntu 这一最后手段来解决这个问题的,因为当时已经来不及注意到这个问题了。
经验教训。
-
- 请勿绕过更新。
-
- 随时备份
- 复制和粘贴从研究中复制和粘贴的应对策略,却不加以使用。
特别是第三点,在这个环境建设领域里以为会是类似的现象,结果却完全不同,这种情况经常发生,所以需要非常谨慎。
有了这些,我就不想再做环境建设艺术家了(一厢情愿)。
如果您正在构建深度学习的开发环境,请务必小心!.