新しいのを環境構築した手順のメモです。
バージョン上がる度に簡単になってきていてありがたいです。
環境
CPU: Intel core-i9 9920X
GPU: Nvidia TitanRTX
入れるもの
Ubuntu 18.04
CUDA 10.0
cuDNN 7.6.2 for CUDA10
tensorflow-gpu==2.0.0
Anaconda 2019.10 for Linux
scipy
pandas
matplotlib
seaborn
scikit-learn
xgboost
lightgbm
catboost
optuna
boruta ほか
本記事の内容
UbuntuのインストールからスタートしてCUDA使ってTensorflowが動くところまで機械学習環境を構築します
CUDAとtensorflowのバージョンについて
今回使うGPUはTuringアーキテクチャのTitanRTXでComputing Capabilityが7.5、対応するCUDAは10.0以降です
https://en.wikipedia.org/wiki/CUDA
PyPIに置いてあるビルド済みtensorflow-gpuは特定のバージョンのCUDA用にビルドされたもので、対応しているCUDAは以下のリンク先で確認できます
https://www.tensorflow.org/install/source
例えばUbuntu用にビルドされてPyPIに置いてあるtensorflow-gpu==1.13.1はCUDA10.0でしか使えません(自分でビルドすれば別のバージョンのCUDAでも使えます)。2019年11月現在リストにはtensorflow-gpu 2.0.0が載っていませんが、こちらもCUDA10.0用にビルドされています。
従ってtensorflowをビルドせずに使おうと思ったらTitanRTXではCUDA10.0 + tensorflow-gpu==1.13.1または2.0.0の組み合わせが使用可能です。
1. Ubuntu18.04をインストールする
ubuntu18.04LTSのisoイメージを取ってきます
https://www.ubuntulinux.jp/download
今回はライブUSBをrufusを使って作成しました
https://rufus.ie/
できました
2. ファイアーウォールを有効にする
ネットに繋ぐ前にファイアウォールを有効にしておきます。
入り側ポートをすべて閉じておいて必要があったら開けると良いでしょう。
$ sudo ufw default deny
$ sudo ufw enable
statusを確認しておきます。
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
外からのアクセスは一律拒否するようにしました。sshとか使うときは個別にallowしましょう。
3. Ubuntuを更新する
最初に更新をかけておきましょう
sudo apt-get update
sudo apt-get upgrade
4. nvidia driverとCUDAをインストールする
tensorflow gpuサポートページのコードをそのまま使います
https://www.tensorflow.org/install/gpu
# Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
# Install NVIDIA driver
sudo apt-get install --no-install-recommends nvidia-driver-418
ここまで来たら一度再起動します
sudo reboot
再起動したらnvidia driverが使えるようになっている筈です
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN RTX Off | 00000000:68:00.0 On | N/A |
| 0% 27C P8 18W / 280W | 326MiB / 24217MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1300 G /usr/lib/xorg/Xorg 139MiB |
| 0 1490 G /usr/bin/gnome-shell 182MiB |
+-----------------------------------------------------------------------------+
ちゃんと入ってますね。続きをやっていきましょう。
# Install development and runtime libraries (~4GB)
sudo apt-get install --no-install-recommends \
cuda-10-0 \
libcudnn7=7.6.2.24-1+cuda10.0 \
libcudnn7-dev=7.6.2.24-1+cuda10.0
# Install TensorRT. Requires that libcudnn7 is installed above.
sudo apt-get install -y --no-install-recommends libnvinfer5=5.1.5-1+cuda10.0 \
libnvinfer-dev=5.1.5-1+cuda10.0
最後にPATHを通して完成です。適当なエディタで~/.bashrcを開いてPATHの指定を追記します。
gedit ~/.bashrc
## CUDA and cuDNN paths
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
terminalを一度閉じて再度開くとPATHが通っています
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
無事インストールできたようです
5. Anacondaでpython環境をインストール
公式サイトからlinux用python3系64bit版インストーラーをダウンロードします。
https://www.anaconda.com/distribution/
インストールしていきます。
$ cd ファイルを置いたフォルダパス
$ sh Anaconda3-2019.10-Linux-x86_64.sh
インストールが完了したらpython環境を作ります。tensorflowはpython3.7に非対応なのでpython 3.6指定にしています。環境名はtfにしてみます。
$ conda create -n tf python=3.6
環境をactivateします
$ conda activate tf
pipでtensorflowをインストールします
$ pip install tensorflow-gpu
pythonを立ち上げてtensorflowがCUDAとGPUを認識できるか確認します
$ python
>>> import tensorflow as tf
>>> tf.config.experimental.list_physical_devices('GPU') >= 1
True
TrueならOK、Falseなら上手くいってません。上手くいっていない場合はここまでの手順でエラーが出てインストールに失敗しているか、~/.bashrcに書いたPATHが通っていないか、tensorflow/CUDA/cuDNNのバージョンの組み合わせて正しくないかのどれかだと思います。
6. 機械学習系パッケージ+αをインストールする
最後によく使うパッケージを入れて完成です
(base) $ conda activate tf
(tf) $ pip install optuna tensorflow_addons numpy pandas xlrd xlwt openpyxl sklearn scipy catboost xgboost lightgbm matplotlib seaborn boruta pydot3 graphviz ipywidgets jupyter tqdm pyarrow psutil
ついでによく使うのもいれておきます
(tf) $ pip install pillow opencv-python OpenEXR
できました
やったね