- 投稿日:2019-08-11T01:46:47+09:00
NVIDIA Quadroでtensorflow-gpu環境構築
はじめに
Quadro(P3200)を搭載したパソコンがあり、tensorflow-gpuの環境を構築しようとして調べたところ、あまり前例がなかったので、動作報告と備忘録を兼ねて方法を残しておきます。
この手順で入れ立てUbuntuからできると思います。
後から気づいたのですが、CondaやDockerを使った方が良いようなので、これから環境構築する方はご注意ください。
先にすること
まずは必要なパッケージのバージョンを確認します。今回はCUDA, libcudnn, tensorflow-gpuの3つで、tensorflowの公式にバージョン関係が表にされている。私がみた時点での状態は以下となっており、最上段のバージョンの各パッケージをインストールすることにした。
CUDAのインストール
"CUDA install"と調べて一番上に出てくる公式ページを開くと
CUDA10.1
がインストールされてしまうので、注意が必要である。こちらからドライバをダウンロードしてきてインストールする。コマンドラインからインストールしても良いのだが、
open
をクリックしてUbuntu Software
を選択するとワンクリックでインストールすることができる。(ださいけど)私の場合は
CUDA10.1
を先にインストールしてしまったため、本記事下部に記載した方法でダウングレードしたらうまくいった。libcudnnのインストール
"cudnn download"と調べて公式ページに入って"Archived cuDNN Releases"をクリックすることで、前のバージョンの一覧を確認・ダウンロードすることができるので、先ほど確認したcudnn7.4の中から、
for CUDA10.0
と続いているものをダウンロード・インストールする。Archiveが表示されているページがこちらコマンドラインからインストールしても良いのだが、
open
をクリックしてUbuntu Software
を選択するとワンクリックでインストールすることができる。(ださいけど)tensorflow-gpuのインストール
install_tensorflow-gpu$ sudo pip3 install tensoflow-gpu各種チェック方法
CUDAチェック
NVIDADRIVERとCUDAのバージョンが確認できるので便利である。
check_cuda_1$ nvidia-smi
こちらに記載されていた。
check_cuda.pyimport torch print(torch.cuda.is_available())GPUの識別チェック
こちらに記載されていた。
check_gpu_detect.pyimport torch torch.cuda.get_device_name(0)tensorflowが使用できるCPU,GPUチェック
こちらに記載されていた。
check_tensorflow_cpugpu_status.pyfrom tensorflow.python.client import device_lib device_lib.list_local_devices()この結果に、
device_type: "GPU"
というワードが存在していれば、無事使える。
"device: XLA_GPU device"
というワードも出力されるのだが、こちらしかないGPUは動作しない(?)ようだ。GPU動作チェック
確実に動作する画像処理機械学習プログラムを準備して実行する。その時、
system monitor
を開いてCPUの使用率を確認したら、
- GPU:OK -> CPU:8~12%
- GPU:NG -> CPU:88~95%
となっており、GPUが動作していないとCPUが重くなる。
きちんとGPUが処理しているかを確かめたい場合は、新しくターミナルを開いて以下のスクリプトを走らせながらtensorflowプログラムを実行すると良いだろう。
gpu_status.shwhile : do clear nvidia-smi sleep 1 doneプログラムの実行前後では、確認した範囲では
- 前:GPU-Util -> 0~5%
- 後:GPU-Util -> 66~88%
となっていた。
CUDAダウングレード
以下はこちらの引用である。
hot_to_downgrade_cuda$ apt-get --purge remove "*cublas*" "cuda*" $ reboot $ 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 install cuda-10-0 $ reboot実際に私の場合これを実行することでGPUが動くようになったので、この方法で解決するのだろうが、自分の環境で
nvidia-smi
をするとCUDA Version: 10.1
と出力されるので、謎である。参考、URL
- https://www.tensorflow.org/install/source#linux
- 対応バージョン表の確認
- https://dmitry.ai/t/topic/33
- CUDAのダウングレード方法
- https://qiita.com/peaceiris/items/21fb40964c875b91439f
- pytorch,tensorflowを用いてGPUのチェック方法
- https://developer.nvidia.com/cuda-10.0-download-archive
- CUDAインストーラのダウンロード
- https://developer.nvidia.com/rdp/cudnn-archive
- cuDNNインストーラのダウンロード
- 投稿日:2019-08-11T01:03:40+09:00
Anaconda環境で、Jupyter NotebookのModuleNotFoundErrorに出鼻を挫かれた
何が起こっていたのか
Environmentsから使いたい仮想環境(Python)を選び
Anaconda NavigatorのhomeからJupyterをLaunch。
Jupyterのnew→Python3でファイルを作って
import tensorflow as tf
を実行すると
ModuleNotFoundErrorが発生。最終解決
仮想環境にjupyterをインストールしていなかったので
仮想環境のターミナルを立ち上げ
conda install jupyter
を実行、仮想環境にjupyterをインストール。エラー時は、rootのjupyterを立ち上げていたので、tensorflowを読み込めなかった。
ウルトラハイパー超しょうもなさすぎボンボンボン凡ミス。エラーに行くまで
そうだ、機械学習をしよう。
唐突に湧き上がる欲求を満たすべく
anacondaでtensorflow用の仮想環境を立ち上げた。仮想環境のターミナルを開いた後
conda create -n tensorflow_gpuenv tensorflow-gpu
conda activate tensorflow_gpuenv
を実行。仮想環境のターミナルから、
import tensorflow as tf
が動くことを確認。仮想環境でJupyterのインストールをしないまま
Anaconda NavigatorのhomeからJupyterをLaunch。「ターミナルでは動くのに、なぜjupyterでは動かないのか?」
謎の凡ミスから始まる謎修正・謎エラーへ・・・(2時間も気付くのにかかりました)
機械に学習させる前に僕が学習するべきですね。