NVIDIA GPUが搭載されたWindows 10にTensorFlowとChainerをインストールしてDeep Learningの学習環境を構築してみる

※以下が最新の記事です。「Windows 10にNVIDIA GPUを使用したDeep Learning環境をインストール。（CUDA10、VS2017、TensorFlow、Keras、Chainerのインストール）」
https://qiita.com/kekekekenta/items/a46a899956b1c756ddce

---

こんにちは。今回はNVIDIAのGPUが搭載されたWindows 10にTensorFlow 1.0とChainerをインストールする手順を紹介します。

Deep Learning環境としてはUbuntuを利用したものが多くありますが、最近ではWindows 10でもこれらのフレームワークが動きます。NVIDIAのGPUが搭載されたゲーミングPCを持っていれば簡単に試すことができるようになっています。

# Visual Studio 2015のインストール
まずは、Visual Studio 2017のビルド環境を整えます。CUDAのコードをビルドするときに必要になります。GPUを使わない場合は必要ありません。

たぶんVisual Studio 2015のどのエディションでも大丈夫だとおもいますが、注意点としては、インストール時に、カスタムからプログラミング言語の選択で、「Visual C++ の Common Tools for Visual C++ 2015」を選択することです。（[こちらのページでインストールの流れがわかります](https://blogs.msdn.microsoft.com/vcblog/2015/07/24/setup-changes-in-visual-studio-2015-affecting-c-developers/)）

Visual Studio のダウンロードサイト
[https://www.visualstudio.com/downloads/](https://www.visualstudio.com/downloads/)

# NVIDIA CUDA と cuDNN のインストール
Visual Studio 2015をインストールしたら、次に NVIDIA の GPU でプログラムを実行させるためのツールキットをインストールします。Visual Studio 2015に対応しているCUDA 8.0をダウンロードしてから、インストールを実行してください。GPUを利用しない場合はCUDAと下記のcuDNNは必要ありません。

CUDA Toolkit 8.0
[https://developer.nvidia.com/cuda-downloads](https://developer.nvidia.com/cuda-downloads)

次に多くのDeep Learningフレームワークが利用しているDNNのライブラリをダウンロードします。ダウンロードしたらZipを展開して、CUDAのインストールフォルダにコピーします。あと。このライブラリのダウンロードには、ユーザの登録が必要になりますので、先に登録しておいてください。

The NVIDIA CUDA® Deep Neural Network library (cuDNN)
https://developer.nvidia.com/cudnn

# Pythonのインストール
TensorFlowやChainerを動かすためのプログラミング環境を整えていきます。機械学習をはじめとしたプログラミング言語としてはPythonが人気です。Python環境としてはAnacondaが有名で分析や機械学習を行うためのライブラリも問題なく利用できます。[Azure Machine LearningでもAnacondaが使われている](https://www.continuum.io/blog/company-blog/microsoft-chooses-anaconda-azure-machine-learning-service)ようです。

Anacondaは下記のサイトよりダウンロードします。利用しているOSに合わせて適切なパッケージをインストールしてください。次をクリックしていくような感じで、標準の設定で大丈夫です。あと、PATHもそのまま登録するようにしてください。

[https://www.continuum.io/downloads](https://www.continuum.io/downloads)

## Python環境のアップデート

スタートメニューからAnaconda Promptを実行して、簡単なアップデートを行います。

```powershell
pip install --upgrade pip
pip install --upgrade -I setuptools
```

# TensorFlow のインストール

TensorFlowのインストール方法は下記のURLに書かれています。最新のパッケージなどは下記URLを参考にしてください。

[https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md)

スタートメニューからAnaconda Promptを実行して、TensorFlowをインストールします。TensorFlowはGPUを使う場合と、CPUで事項する場合のパッケージが異なるので注意してください。

GPUを使う場合は下記のコマンドです。

```powershell
pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0-cp35-cp35m-win_amd64.whl
```

GPUを持っていない場合も念のため書いておきます。（上記コマンドを実行したら下記のコマンドは実行しないでください）

```powershell
pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl
```

あと、Pythonの環境を分けてインストールする場合は、上記コマンドを実行する前に、環境を変更してくださいね。

```powershell
conda create -n tensorflow python=3.5
activate tensorflow
```

これでTensorFlowが使える状態になりました。


# Chainerのインストール
次に、Chainerをインストールします。Chainerは高レベルの機能を持っていながら複雑なネットワークを作ることができるDeep Learningのフレームワークです。

スタートメニューからAnaconda Promptを実行。とやりたいところですが、スタートメニューの Visual Studio 2015 から Developer Command Prompt for VS2015 を実行します。コマンドプロンプトが起動されたら下記のコマンドでChainerをインストールします。

```powershell
pip install chainer --no-cache-dir
```

Chainerが動く環境になっているか確認してみる場合は、下記のコードをPythonで実行してみてください。[こちら](http://qiita.com/dsanno/items/a68d5aaae0a542c0f388)のページを参考にさせてもらいました。

```Python:cupy_test.py
import numpy as np
import chainer

xp = chainer.cuda.cupy

x = xp.asarray([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
y = chainer.cuda.elementwise(
'T x',
'T y',
'y = x + 1;',
'test',
)(x)

print(y)
```

# NVIDIA GPUの状態を知る
実際にDeep Learningの学習を始めるとGPUが熱くなりますが、下記のコマンドを使うことによりGPUの状態を知ることができます。

```powershell
cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi.exe
```

実行すると下記のようにGPUの状態を知ることができます。私の環境だとGPUが80度ぐらいになり、部屋の温度も4度ぐらい上がります。(^^;

ちなみに、部屋の温度は[AzureのOMSで管理](http://kentablog.cluscore.com/2016/12/raspberry-pi-iot-oms.html)してます。

```
Sat Feb 25 19:34:07 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 376.53                 Driver Version: 376.53                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti WDDM  | 0000:01:00.0     Off |                  N/A |
| 55%   79C    P2   226W / 250W |   5121MiB /  6144MiB |     99%      Default |
+-------------------------------+----------------------+----------------------+
```

# さいごに
Windowsでも十分にDeep Learningが使えるようになったので便利になりましたね。ただ、一部のPythonコードは、Linuxのコマンドを使っているものもありますので、Windowsでは動かないものもあります。その場合は、Windows 10のBashを使うなど試してください。一番いいのは、環境依存の無いピュアPythonなコードを書くことですが。。。

あと、画像を使う場合はOpenCVを使いますが、下記のコマンドでインストールすることができますので、インストールしておいたほうが良いでしょう。

```powershell
conda install -c https://conda.binstar.org/menpo opencv3
```

なお、現段階ではPython3.5の環境向けに提供されていることから、環境を変更してからインストールする必要があるかもしれません。「TensorFlowのインストール」でも紹介しましたが、下記のコマンドでPython3.5の環境に変更してからインストールすることができます。

```powershell
conda create -n tensorflow python=3.5
activate tensorflow
conda install -c https://conda.binstar.org/menpo opencv3
```

ではー。