LoginSignup
6
3

More than 3 years have passed since last update.

突然,壊れたUbuntu.... Ubuntuよ,永遠なれ

Last updated at Posted at 2019-12-18

これは,NISE (南山大学 青山研究室) Advent Calendar 2019の18日目の記事です.

今年は,本番環境でやらかしちゃった人 Advent Calendar 2019がめっちゃ盛り上がっていますね!

今回はそれに近いお話です.
ココでのお話は限りなくノンフィクションに近い,フィクションになりますので,予めご注意ください.

当時の状況

当時と言ってもそんなに昔というわけではなく,つい一ヶ月前に起こったできたてホヤホヤの事件です.現在のNISEには,学部生25人(1人豪州に留学中),院生8人(うち3人社会人)という構成で,学部生と院生それぞれに研究室を与えられています.

そのそれぞれの部屋にはGPUを積んだPCが設置されており,問題はそのUbuntuで起きました.

何気なしに...

そのPCのスペックを記載しておきます.

基本構成
PC名 MASTERPIECEシリーズ
OS Windows 10 Home 64ビット,Ubuntu18.04のデュアルブート
CPU Intel Core i7
グラフィックス Geforce 1080ti
メモリ 64GB
SSD 512GB
HDD 1TB

こんな感じです.

学部生のメンバーから,kerasをGPUを使って動かしたいと言われて,環境構築を今年の夏くらいにやってから,その後はノータッチでした.なので,内部のソフトウェアアップデートも行われておらず,各種ソフトウェアがかなり古いものになっていたと思います.

ある日,学部生のメンバーから,PythonのUpdateをしてほしいと言われて,pyenvをUbuntuに入れようとしました.

$ apt install  git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

各種ライブラリのインストールが必要だったためにaptを使って,installを試みました.ここまではよかったのですが,そこで,

214 個のパッケージがアップデート可能です。
34 個のアップデートはセキュリティアップデートです。
:
*** システムの再起動が必要です ***

みたいなメッセージが出てきているのに気づきました.
いや,ちゃんとUpdateくらいこまめにしておけよなんて,思ったのが間違いでした...

$ apt update
$ apt upgrade 
$ apt dist-upgrade

を実行し,その後に再起動をかけました

画面比がおかしいぞ

再起動後,いつもの紫(?)の画面からUbuntuを選択し,Ubuntuを起動させようとしました.そしたら,まさかのログインループ...

でも,これは16.04から18.04にUpgradeをしたときからちょくちょく起きてて,

こちらの記事を参考にリカバリーモードからwaylandを無効にすることで,解決してきました.
ここでも,またかぐらいの気持ちで,リカバリーした記憶があります.

実際,無効にした後にログインすることができ,いつもの画面を拝見することになるのですが....

「あれ?アイコンでかくね??」

つい言葉でちゃいました.
いつもだったら,ディスプレイに合わせた画面比で表示されるはずなのに,16:9のいつもよりでかでかとした画面比となってしまいました.

ここで,後輩から,ディスプレイを2枚にしたいと要望があり,HDMIとディスプレイポートでそれぞれのモニターにつなげることに.
HDMIの方は画面比がおかしいものの表示されましたが,ディスプレイポートの方は読み取ってくれさえしてくれませんでした.

まあ,とりあえず,使えるからいいやとここで諦めるのも1つでしたが,目の前にバグが有るのに解決しないのはエンジニアとしてどうなのかと思い直し,PCと向き合うことにしました.

NVIDIAの闇

nvidia-smi がまだ動いているのを確認したところ...

Failed to initialize NVML: Driver/library version mismatch

が表示されるようになりました
あれれ〜

再起動したら,治るかなーなんて思って再起動したら最後,もう,私達の前にログイン画面が現れることはありませんでした

あ.やばし

心の焦りが大きく大きく広がってきます.

幸い,リカバリーモードに変更することは可能でしたので,そちらからログインしました.

nvidia-driverをubuntu18.04にインストールする

とか
Ubuntu 18.04にNVIDIAドライバを入れようとしてハマった

とかめちゃめちゃ調べまくって頑張りましたが,リカバリーモードからですらログインすることもできなくなり,真っ黒な画面と私の頭の中は同じ状態に陥りました.

ですが,内部に保存していた研究用のコードなどはちゃんとGithubのプライベートリポジトリで管理していたり,Google Driveに画像のスクショや構築されたモデルやなんかもバックアップしてあったことを思い出し,

Ubuntu18.04を入れ直すことにしました.

Ubuntu18.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のversionによってインストールするversionが異なってくるので,注意が必要です.

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

そして,ChainerCupyをインストールします.
ここで注意する必要があるのが,CupyCudaのversionに依存するので,それにあったversionを利用することが必須です.また,Chainerを先に入れずに,Cupyをインストールしないと,Chainerのインストール時にコケます.

pip search cupy
pip install cupy

pip install chainer

裏技

さて,これでうまくいく!なんてなかなか世の中そんなに甘くはありませんw

実は,これには裏技がありまして,

conda install keras-gpu

でGPU周りのソフトウェアを一気にダウンロードすることができるという裏技があります.
こちらのほうが,めちゃくちゃ簡単なので,深層学習フレームワークにこだわりがない人はこちらをおすすめします.

まとめ

今回は,apt update apt upgradeによって,nvidia-driverのバージョンが複数インストールされた状態になってしまい,それに気づくことが遅くなってしまったからこそ,Ubuntuを入れ直す,という最終手段を使って解決したお話です.

教訓としましては,

  • 迂闊にUpdateしない
  • 常にバックアップしておく
  • 調べた対処法をコピペして使わない

です.

特に3つ目はこの環境構築の界隈だと同じような現象かと思っていたら,全く違うところでしたみたいなことが往々にして起こっているので,かなり注意が必要となります.

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

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

次回

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

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3