22
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu18.04にeGPUでDeep Learning環境を構築した(失敗談付き)

Last updated at Posted at 2019-03-30

eGPUによる環境構築報告がなかったので、需要は小さいだろうがポエムとして残しておく。数多のログインループとdependency hellを乗り越えて。むしゃくしゃしたから書いた。

ハードウェア

前提環境

  • Windows10とのdualboot
sudo apt update
sudo apt upgrade
cat /etc/lsb-release
#DISTRIB_ID=Ubuntu
#DISTRIB_RELEASE=18.04
#DISTRIB_CODENAME=bionic
#DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"

NVIDIA driverのインストール

ubuntu18.04だと自動でeGPUを認識してくれた。usb-c/thunderboltすごい。
以前、環境構築したときはdriver .runファイルを公式から落としてきたり、nouveauをblacklistしたが最近は必要ないようだ。

  • GPUを認識しているか確認。
lspci | grep -i nvidia
#07:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
#07:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
  • GPUに必要なdriverの確認
ubuntu-drivers devices
#== #/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:01.0/0000:05:00.0/0000:06:01.0/0000:07:00.0 ==
#modalias : pci:v000010DEd00001B06sv00001462sd00003607bc03sc00i00
#vendor   : NVIDIA Corporation
#model    : GP102 [GeForce GTX 1080 Ti]
#driver   : nvidia-driver-418 - third-party free recommended
#driver   : nvidia-driver-396 - third-party free
#driver   : nvidia-driver-410 - third-party free
#driver   : nvidia-driver-415 - third-party free
#driver   : nvidia-driver-390 - distro non-free
#driver   : xserver-xorg-video-nouveau - distro free builtin
  • ここでdriverを上手く指定してあげないとログインループに嵌まる
sudo apt install nvidia-driver-390 nvidia-settings
sudo init 6 #reboot

必要に応じて、sudo prime-select queryintelと返ってきたら、

sudo prime select nvidia
sudo init 6

上手くログインできたらnvidia-smiでGPU確認。

tensorflowのインストール

Anacondaからインストールする。
そうなのだ。最近はCUDAやcuDNNのインストールが不要となっていた。どうやら、パッケージがCUDAやcuDNNのバイナリを含んでいるようだ。だがこれはこれでconda installのとき一緒にどのversionかを気をつけないと痛い目にあった。
anacondaのインストールは済んでいるとする。

  • 壊れてもいいように仮想環境構築
conda create --name tf-gpu
source activate tf-gpu
  • 多少versionは落ちるが
conda install \
tensorflow-gpu==1.12 \                                                   
cudatoolkit==9.0 \                                                       
cudnn=7.1.2 \                                                            
h5py
conda install keras ## optional
  • jupyter notebookのkernel登録
conda install jupyter
conda install ipykernel
python -m ipykernel install --user --name tf-gpu --display-name "tf-gpu"
  • GPU実行確認
python -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()"

長々としたoutputにGPUとあったら使えている。

pytorchのインストール

  • 仮想環境とか
conda create -n pytorch python=3.6 numpy scipy
  • 公式サイトから必要な情報を入力するとインストール方法が分かる。今回は、CUDA9.0指定。
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
  • GPU実行確認
import torch 
print(torch.cuda.is_available())
>> True

torch.cuda.get_device_name(0)
>> 'GeForce GTX 1080 Ti'

失敗したこと

NVIDIA-driverのバージョン

推奨されているように sudo ubuntu-drivers autoinstallを実行してしまうと、もれなくnvidia-driver-418 - third-party free recommendedがインストールされてログインできなくなる。そんなときは慌てず騒がずgrubでsafe modeまたはログイン画面でAlt + F2を押してterminalに入る。sudo apt remove nvidia*で一度driverを消してあげればまたログインできるようになる。

ライブラリインストール

まず、nvidia-driver-390までインストールできた。前回と同じようにCUDAをインストールしようとしたところ、driver incompatabilityやらでまたログインループに嵌った。今度は、CUDA/cuDNNなしのインストール方法を模索した。公式tensorflowの指示通りにdockerを立ち上げたがdriver incompatibleと怒られた。(nvidia-driverをインストールしておくだけで実行できると書かれているにも関わらず。)今度はanacondaからinstallしようとした。conda install tensorflow-gpuで実行できるかと思われたが最新のCUDA10がインストールされ、driver incompatible。仮想環境を作っていたので、apt installよりは気楽である。最終的にdriverに一致するCUDAを特定し、そこから対応するtensorflowを探し、上記バージョン指定となった。

結語

これでもNVIDIA公式.runファイルとの格闘はなくなり簡単になったとは思う。GPU設定は根気が必要。

追記(2019/07/14)

ある時、アップデート後にthunderboltが認識されなくなった。
sudo apt install bolt で解決した。

22
17
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
22
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?