ubuntu18.04 + 2080ti + cuda10 + tensorflow を整える
CPPXのXです。
適当にちょちょいとtensorflowを入れてもGPUを認識しなかったのでまとめておきます。
cuda10を入れて、tensorflowをビルドしていきます。
現在(2019年5月18日)もう既にpipでちょちょいと入るようになっていました。
pip install tensorflow-gpu --user
自分でビルドしたい方は下へどうぞ
ubuntu18.04とpythonは入っているものとして進めていきます。
ちなみに、2080tiでなくともこの方法で入れらました。
1080tiでやった時はnouveauというのを無効にしなきゃならなかったです。
では目次です。
参考にした記事
cuda10のインストールは以下の記事を参考にしています。
tensorflowのビルドは以下の記事を参考にしています。
環境
driver install
driverを入れます。
nvidia-smiが正常に動いているなら次の項目に進んでください。
NVIDIAドライバダウンロード
ここから対応する.runファイルを落としてきます。
自分の場合はこれでした。
wget "http://jp.download.nvidia.com/XFree86/Linux-x86_64/410.93/NVIDIA-Linux-x86_64-410.93.run"
権限を与えて実行します。
chmod +x NVIDIA-Linux-x86_64-410.93.run sudo ./NVIDIA-Linux-x86_64-410.93.run
何か出てくると思いますが、基本的にエンター押してたら大丈夫だと思います。
動作確認します。
nvidia-smi
ちゃんと出てくれば成功です。
cuda install
cudaを入れます。
CUDA Toolkit 10.1 Update 1 Download | NVIDIA Developer
上記から対応するパッケージを落としてきます。
linux -> x86_64 -> Ubuntu -> 18.04 -> deb[local]
と選択していきました。
wgetで落とすとこうです。.debが消えていたのでつけています。
wget "https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64" mv cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64 cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
あとはその下に書いてある通りぽちぽちと打っていきます。
<version>のところは補完すると出てきます。
補完で出てこなければlsで/varを見るといいです。
sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub sudo apt update sudo apt install cuda-10-0
バージョン指定をしないでcudaをインストールすると、10.1が入ってきたため追記しました(2019 4/26)
/usr/localにcudaがいたら成功しています。
cudnn install
cudnnも入れます。
https://developer.nvidia.com/rdp/cudnn-download
ここから対応したバージョンを落としてきます。
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0
これの
cuDNN Library for Linux
これを落としてきました。
ファイルの名前はこうでした。cudnn-10.0-linux-x64-v7.4.2.24.tgz
解凍します。
tar -zxf cudnn-10.0-linux-x64-v7.4.2.24.tgz
中身をコピーしていきます。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp -R cuda/lib64/* /usr/local/cuda/lib64/ sudo ldconfig
普通にコピーするとsymlinkが実体化するので、-Rをつけてsymlinkのままコピーしています。
bazel install
bazelを入れます。
公式を参照しつつ、必要なパッケージを入れます。
Installing using binary installer の参照しています。
sudo apt install pkg-config zip g++ zlib1g-dev unzip
bazelを落としてきます。releasesです。
適当に最新(2019/1/29時点)を落としました。
wget "https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-installer-linux-x86_64.sh" chmod +x bazel-0.21.0-installer-linux-x86_64.sh ./bazel-0.21.0-installer-linux-x86_64.sh --user
.bashrcにexport PATH="$PATH:$HOME/bin"
を追記します。
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc exec $SHELL
zshとか使ってる人は適宜そっちの設定ファイルに書いてください。
動作確認します。
bazel version
いい感じに動けば成功です。
tensorflow install
公式を参照しつつ、必要なライブラリを入れます。
pip install pip six numpy wheel mock pip install keras_applications==1.0.6 --no-deps --user pip install keras_preprocessing==1.0.5 --no-deps --user
tensorflowをcloneします。
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git tag
でreleaseを確認します。
v1.13.0-rc0が最新だったのでそれを入れます。
git checkout r1.13
./configure
Do you wish to build TensorFlow with CUDA support? [y/N]:
を y で叩く以外デフォルトで大丈夫でした。
ビルドします。
公式を見ながらやってると、間違えてCPU-onlyの方で叩きがちなので間違えないようにしてください。
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
........ かなり時間がかかります。
終わったらパッケージを作成してインストールします。
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-1.13.0rc0-cp36-cp36m-linux_x86_64.whl
入ったか確認します。
pip freeze | grep tensor
tensorflow==1.13.0rc0
いいですね。
GPUが認識されているかも確認しておきます。
今いるtensorflowのディレクトリから出ておきます。
出ないとtensorflowをimportした際にbuild_infoがどうたらのエラーが出てきます。
pythonにて以下を実行します。
from tensorflow.python.client import device_lib device_lib.list_local_devices()
いい感じに認識されていました。
おわり
1080tiでも同様の手順でcuda10 + tensorflow1.13が動きました。
今回は.bashrcに以下を書かずに進めていたのですが、書いておくといいかもしれません。
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"