突然之间,Ubuntu坏了…… Ubuntu啊,愿你永恒存在

这是南山大学青山研究室(NISE) Advent Calendar 2019中的第18天的文章。

今年,有些人在正式环境中搞砸了,看起来2019年的Advent日历真是非常热闹啊!

這次的故事與此相近。在這裡的故事幾乎就像非虛構,請事先注意。

当时的情况

当时虽然说不上是很久以前,只是一个月前发生的新鲜事。目前的NISE由25名本科生(其中一人在澳大利亚学习)、8名研究生(其中3人是社会人)组成,每个本科生和研究生都被分配到一个研究室。

每个房间都配置着装有GPU的电脑,问题出在那些安装了Ubuntu系统的电脑上。

毫無所覺地…

我会标明那台电脑的配置。

基本構成
PC名MASTERPIECEシリーズOSWindows 10 Home 64ビット,Ubuntu18.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 個のパッケージがアップデート可能です。
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を入れ直す,という最終手段を使って解決したお話です.

教訓としましては,

    • 迂闊にUpdateしない

 

    • 常にバックアップしておく

 

    調べた対処法をコピペして使わない

です.

特别是第三点,在这个环境建设领域里以为会是类似的现象,结果却完全不同,这种情况经常发生,所以需要非常谨慎。

これで,環境構築芸人をやめたいとおもいます(願望).

みなさんも,もし,深層学習の開発環境構築の際は,お気をつけてください.

次回

次回は,NISE (南山大学 青山研究室) Advent Calendar 2019に初登場の@chi-nosukeです.どんな面白いことを書いてくれるのかお楽しみに!!

广告
将在 10 秒后关闭
bannerAds