20190811のTensorFlowに関する記事は2件です。

NVIDIA Quadroでtensorflow-gpu環境構築

はじめに

Quadro(P3200)を搭載したパソコンがあり、tensorflow-gpuの環境を構築しようとして調べたところ、あまり前例がなかったので、動作報告と備忘録を兼ねて方法を残しておきます。

この手順で入れ立てUbuntuからできると思います。

後から気づいたのですが、CondaやDockerを使った方が良いようなので、これから環境構築する方はご注意ください。

先にすること

まずは必要なパッケージのバージョンを確認します。今回はCUDA, libcudnn, tensorflow-gpuの3つで、tensorflowの公式にバージョン関係が表にされている。私がみた時点での状態は以下となっており、最上段のバージョンの各パッケージをインストールすることにした。

スクリーンショット 2019-08-10 4.28.03.png

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.py
import torch
print(torch.cuda.is_available())

GPUの識別チェック

こちらに記載されていた。

check_gpu_detect.py
import torch
torch.cuda.get_device_name(0)

tensorflowが使用できるCPU,GPUチェック

こちらに記載されていた。

check_tensorflow_cpugpu_status.py
from 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.sh
while :
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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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時間も気付くのにかかりました)
機械に学習させる前に僕が学習するべきですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む