eGPUによる環境構築報告がなかったので、需要は小さいだろうがポエムとして残しておく。数多のログインループとdependency hellを乗り越えて。むしゃくしゃしたから書いた。
ハードウェア
-
機種: HP Spectre x360 13-ac000
-
外付けGPU: akitio node pro
前提環境
- 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 query
でintel
と返ってきたら、
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
で解決した。