1. Home
  2. Webデザイン
  3. python
  4. WindowsにKerasとTensorFlow(GPU)をインストールして機械学習の環境を作ろう!

WindowsにKerasとTensorFlow(GPU)をインストールして機械学習の環境を作ろう!

TensorFlow_keras_GPU_000.png

ここ最近は機械学習にはまっていて、前々から気になっていたTensorFlowを試してみたいと思い、実際にWindowsにインストールしてみたので、その導入手順を紹介したいと思います。手順自体は比較的簡単だと思ったのですが、実際にやってみるといくつか引っかかったので、その点なども含め記録として残しておきたいと思います。

まず、TensorFlow(テンソルフロー)について簡単に説明しておくと、ディープラーニングが行える機械学習ライブラリです。Googleが開発しオープンソースで公開しているもので、実際にGoogleの中でも使われている実績のあるライブラリであり、そのため数多くの開発者がこのTensorFlowを利用しています。

WindowsにKerasとTensorFlow(GPU)をインストール!

TensorFlow_keras_GPU_050.png

WindowsにKeras+TensorFlow(GPU)の環境構築に必要なのは以下の3つです。今回はインストールまでの手順からコマンドの詳細まで記述したので、プログラミングの知識がなくてもインストールできるのではないかと思います。機械学習やディープラーニングに興味のある人はぜひ試してみることをおすすめします。

必要なもの

CUDA Toolkit

TensorFlow_keras_GPU_060.png

NVIDIAのサイトのCUDA Toolkit Archiveから過去のCUDA Toolkit 9.0をダウンロードしてインストールします。

CUDA Toolkit Archive

私がTensorFlowを入れた6月24日当時ではpipで入るTensorFlowのバージョンが1.8でCUDA9.2が対応しておらず、CUDA Toolkit 9.0とcuDNN v7.1.4 for CUDA 9.0でインストールしました。今後TensorFlowの最新バージョンの対応状況が変わった場合は、動作する最新のバージョンのCUDA Toolkitをインストールすることを調べてからインストールすることをおすすめします。

cuDNN

TensorFlow_keras_GPU_030.png

CUDA Toolkitと対応するcuDNNをダウンロードしてきます。今回の場合はcuDNN v7.1.4 for CUDA 9.0です。cuDNNはNVIFIA DEVELOPERの登録後にダウンロード可能です。

Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0 https://developer.nvidia.com/cudnn TensorFlow_keras_GPU_031.png

ダウンロードしたcuDNNを回答してcudaフォルダ内のbinフォルダの中にあるcudnn64_7.dllをコピーします。

TensorFlow_keras_GPU_032.png

コピーしたcudnn64_7を以下のフォルダ内にコピーします。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin

Anaconda(Python)

TensorFlow_keras_GPU_001.png

Anacondaの公式サイトからPython 3.6 versionのAnacondaをダウンロードします。

Download Anaconda Distribution TensorFlow_keras_GPU_002.png

ダウンロードしたAnaconda3-5.2.0-Windows-x86_x64.exeを起動します。

TensorFlow_keras_GPU_003.png

「Next」を押します。

TensorFlow_keras_GPU_004.png

「I Agree」を押します。

TensorFlow_keras_GPU_005.png

「Just Me」を選択して「Next」を押します。

TensorFlow_keras_GPU_006.png

インストール先を選択して「Next」をクリックします。

TensorFlow_keras_GPU_007.png

「Add Anaxoda to my PATH envlronment variable」と「Register Anaconda as my default Python 3.6」にチェックを入れて「Install」を押します。

TensorFlow_keras_GPU_008.png

インストールが終わるまでしばらく待ちます。

TensorFlow_keras_GPU_009.png

これでインストールは終了です。「Next」を押します。

TensorFlow_keras_GPU_010.png

「Microsoft VSCode」をインストールするか聞かれるので、もしインストールしてない人は入れておくと開発が楽になります。VSCodeについてはレビュー記事を書いているので、気になる方はそちらをご覧ください。

無料で使える軽量なコードエディタのVisual Studio Code(VS Code)を使ってみよう! TensorFlow_keras_GPU_011.png

「Finish」を押してAnacondaのインストールは完了です。

TensorFlow_keras_GPU_012.png

Anaconda Navigatorを起動するとこのように表示されます「OK」を押します。

TensorFlow_keras_GPU_013.png

Anaconda Navigatorの画面です。

Anaconda Prompt

TensorFlow_keras_GPU_020.png

WindowsメニューからAnaconda Promptを起動します。pythonと打つとpython 3.6.5がインストールされていることが確認できます。ここからpythonの環境を作っていきます。

TensorFlow_keras_GPU_021.png

Anacondaでは仮想環境を作ることができるのpython3.6でenvironmentを作ります。以下のコマンドを打ちます。

conda create -n py36 python=3.6 TensorFlow_keras_GPU_022.png

以下のコマンドを打ってenvironmentを確認します。

conda info -e

先ほど作成したpy36が追加されていることを確認します。*がついているのが今現在アクティブになっている環境になります。

TensorFlow_keras_GPU_023.png

py36をアクティブにするために以下のコマンドを打ちます。

activate py36

すると(base)C:\Users\admin>となっていたものが(py36)C:\Users\admin>とpy36がアクティブに変わります。

TensorFlow_keras_GPU_024.png

続いてtensorflow-gpu(GPU版)をインストールするコマンドを打ちます。

pip install tensorflow-gpu

GPU版ではなくCPU版をインストールしたい場合は以下のようにします

pip install tensorflow TensorFlow_keras_GPU_025.png

続いてJupyterをインストールします。jupyterがあるとブラウザ上でpythonのコードを書いて簡単に実行できます。

pip install jupyter

jupyter

TensorFlow_keras_GPU_035.png

Windowsメニューからjupyter Notebookを起動します。右側の「New」から仮想環境のpy36を選択します。

TensorFlow_keras_GPU_026.png

jupyterで仮想環境が表示されない場合は以下のコマンドで確認してください。

jupyter kernelspec list

これでpy36が表示されなければ仮想環境を追加するコマンドを打ちます。

ipython kernel install --user --name=py36 --display-name=py36

もう一度jupyter kernelspec listを表示してpy36が表示されていればOKです。

TensorFlow_keras_GPU_043.png

GPUをTensorFlowで認識できているかjupyterでテストしてみます。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

これでdevice_type:"GPU"の表記があればGPUがTensorFlowで認識されています。

TensorFlow_keras_GPU_027.png

TensorFlowでGPUが認識されない場合は、tensorflow_self_check.pyを実行してみると原因が解るかもしれません。正しくインストールされていればTensorFlow successfully installed.The installed version of TensorFlow includes GPU support.と表示されます。

TensorFlow on Windows self-check(tensorflow_self_check.py) - GitHub TensorFlow_keras_GPU_040.png

MNIST動作確認用コード(TensorFlow)のページにアクセスしてコードをコピーして実行してみましょう。

MNIST動作確認用コード(TensorFlow) TensorFlow_keras_GPU_041.png

このように進んでいけば成功です。

TensorFlow_keras_GPU_042.png

最後にaccuracy(正解率)が表示されれば実行完了です。

TensorFlow_keras_GPU_045.png

TensorFlowの分析中はGPUが上がっていることが確認できます。特にGPUのメモリがギリギリまで使用されるようです。

TensorFlow_keras_GPU_028.png

これでTensorFlowが入ったので最後にkerasを入れましょう。

pip install keras

これでkerasも入り、kerasからTensorFlowを実行する環境が構築できました。あとはコードを書いてディープラーニングを実行すればいいだけです。

TensorFlowのインストールに失敗してしまう場合の対応策

Install Error

TensorFlowのインストールで一番引っかかったのは、最初の時点でTensorFlowのインストールに失敗しており、その後何度アンインストールしてインストールしても前回ビルドしたキャッシュからインストールが行われて毎度失敗してしまうという現象に陥ってしまったことです。こういう場合は--no-cache-dirをつけて、pipでキャッシュを無効にしてライブラリを再インストールする必要があります。

pip --no-cache-dir install -I TensorFlow

TensorFlowのインストールに失敗してしまう場合はぜひ一度キャッシュを無効にしてみることをおすすめします。

今回の個人的感想&まとめ

今回は久しぶりに開発者向けの記事です。私は最近機械学習で色々と試しているので、その中の一つとしてKerasとTensorFlowを使ってみたわけですが、手順さえわかってしまえば比較的環境構築は簡単だと思います。このブログではあんまりこういう記事は書かないのですが、今回は色々試して解決に時間がかかってしまったので、同じように解決できない人がいた際の助けになればと思い記事に残しました。

今回は導入手順自体は簡単でしたがTensorFlowのインストールのキャッシュとCUDAとcnnvの部分で引っかかりました。TensorFlow自体はインストールが簡単ですぐにCPUでサンプルが動くところまでは行けたのですが、TensorFlowをGPUで動作させるのにはかなり手間がかかりました。なぜGPUで動かないのかというのを色々と調べると、どうやら最新のCUDAバージョン9.2だとTensorFlow1.8が動かないという記述を見かけたので、CUDAバージョン9に下げることが必要でした。それに加えてTensolFlow-GPUのインストールが失敗していることに気がつくのに時間がかかってしまったのがでかかったです。

それにしても予想外のところで導入に時間がかかってしまいましたが、導入自体は非常に簡単で驚きました。Windowsだと少し手間がかかる部分もあるかもしれませんが、MacやLinuxならコマンドでちょちょいとTensorFlowの環境を導入できるんですから楽ですよね。しかも今回はGPU版を導入しましたのでかなり高速に分析を行うことが可能です。私のグラボはGeForce GTX970と少し古いのですがそれでも、6コアのCPUで動かしたCPU版と比較しても10倍近くも高速ですね。グラボを導入している人はGPU版で高速に処理できるのでおすすめです。ちなみに私の動かしたPCの環境の詳細について気になる方は以下の記事を御覧ください。

久しぶりに新しい自作PCを組みました!

昔はディープラーニングと言えば、高性能なマシンと高度な知識がなければ到底無理な代物でしたが、今はこういったライブラリが多数出ているので、敷居がだいぶ下がっていますよね。Keras+TensorFlowでニューラルネットワークの構築がこんなに簡単にできてしまうのは驚きです。しかもGPUに対応しているライブラリならCPU処理に比べて何十倍も速度が出ますし、そういった意味でも個人で開発して遊べるレベルまでなったのは非常に良い事だと思います。

TensorFlowによるディープラーニングに興味のある人はぜひ導入してみてはいかがでしょう?

パソコンやスマホなどのガジェットに興味があり、大学で情報工学の勉強してシステムエンジニアに。ブログ歴は15年以上。ITの専門的な知識はそこそこあり、国家資格の情報処理技術者試験のスキルレベル4「情報セキュリティスペシャリスト」や「ネットワークスペシャリスト」などを取得。

Related article

COMMENT TO THIS ENTRY