GPUなWindows PCでCNTKとTensorFlowとVisual Studio 2017とを共存させる方法 (2017年12月版) #cogbot #cntk

注意)本稿は、2017年12月時点の情報です。2018年4月以降は、こちら の記事を参照してください。

 


本稿は、Cogbot Advent Calendar 2017 に参加しています。

今回は、NVIDIA の GPUを積んだ Windows PC で、CNTKTensorFlowVisual Studio 2017 とを共存される方法を紹介します。
いくつかハマりポイントがあって、今回は全身で次々と落とし穴に落ちてしまったので、皆さんも同じようなケガをしないように手順を共有します。

もっとスマートな方法があるかもしれませんが、私は以下の方法で共存に成功しました。


全体の流れは以下の通り。

  1. Visual studio 2017 (15.5.0) のインストール
  2. Anaconda 3 (4.4.0) のインストール
  3. Visual C++ 2015 Build Tools のインストール
  4. CUDA 8.0 のインストール
  5. cuDNN 6.0 のインストール
  6. CNTK 2.3.1 のインストール
  7. TensorFlow 1.4 のインストール

以上の手順です。


■ 手順 1. Visual Studio 2017 (15.5.0) のインストール

私には必須なので、なにはともあれ Visual Studio 2017 をインストール。ディープライニング以前に Visual Studio。

たまたまこの記事を書こうと考えた頃に出てきたのが 15.5.0 というバージョン。この子が CNTK にとってはなかなか難敵でした。
15.4.x との違いは Anaconda 3 のインストールパス。

Python ワークロードを選択すると、自動的に Anaconda 3 をインストールしてくれるのはうれしいんですが、15.5.0 にアップデートしたところで突然インストール済みの CNTK が動作しなくなりました。

答えを先に書くと、15.5.0 インストール(アップデート)の際には、個別のコンポーネントで明示的に “Anaconda3 64-bit (5.0.0)” を対象から外すことをおすすめします。代わりに Visual Studio のインストール後に、Anaconda 3 を別途インストールするのがいいです。(後述)

vs155_installer

15.4.x だと “C:\Program Files\Anaconda3 にインストールされていたのが、

anaconda_prev_vs

15.5.0 だと “C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64” なんて深いパスにインストールされます。

anaconda_vs155

パスが深すぎて(長すぎて)、ショートカットのリンク先に収まりきらず、 Anaconda Prompt の起動時に警告を吐く始末。
anaconda_prop

旧 Anaconda フォルダーをきれいに削除してくれたことで、CNTK も一緒に消されちゃったということでした。(これに気づくのに時間がかかった・・・)


■ 手順 2. Anaconda 3 (4.4.0) のインストール

続いて Anaconda 3 をインストールします。
今のところ 5.0.x はやめておくことをおすすめします。これを書いている時点では 5.0.1 が最新ですが、私はハマりました。
4.4.0
がいい感じ。ちなみに Python は 3.6.1 がインストールされます。
(訂正)Anaconda3 の 5.0.x ではインストール後に明示的に環境変数の設定をすると動作するようです。私は当面 4.4.0 で行きます。

原因はわからないのですが、5.0.x を使うと私の手元では import matplotlib でエラーが発生してしまいました。pip install してもダメ。CNTK 以前にダメな感じでした。ということで、今回は 5.0.x を断念。

なお インストーラーで “Add Anaconda to my PATH environment variable” (環境変数に追加)が 4.4.0 では非推奨で、デフォルトでは選択されていない状態です。
私はチェックを外したままでインストールしましたが、CNTK も Tensorflow も今のところ問題なく動作しています。
4.3.x ではここがチェックされていたはずですが、変わったようです。

anaconda3_440_installer


■ 手順 3. Visual C++ 2015 Build Tools のインストール

次に Visual C++ 2015 Build Tools をインストール。

実は本当に必要なのか分からないのですが、ネット上では「CUDA 8.0 をインストールするには Visual Studio (C++ 2015) のインストールが必要」という情報がたくさんヒットします。
(補足)フレームワークのデバッグ時には必要になるとのこと。当面そういったことにはならないのでいいのですが、ともかくインストールしました。

ひとまずインストールすることにしますが、どう考えても Visual Studio 2017 ユーザーとしては 2015 を並行インストールは邪魔。要はコンパイラーだけあればいいんでしょ、IDE は不要だよねということで、コンパイラーやヘッダーファイル、ライブラリのみで構成された Visual C++ 2015 Build Tools を入れてみました。

Tensorflow は VC++ 2015 Build Tools で問題なく動作しています。CNTK ではそもそもこれは不要。


■ 手順 4. CUDA 8.0 のインストール

次は CUDA 8.0 をインストールします。
CNTK も TensorFlow もやってみたい欲張りな私は、ここで CUDA をインストール。
バージョンが気になるので、CNTK よりも先に CUDA をインストールすることにしました。

※CNTK だけあればよく、TensorFlow は不要という人は CUDA を明示的にインストールする必要はありません。CNTK を pip インストールすると、CUDA と cuDNN の DLL が一緒にコピーされます。

CUDA は 8.0 をインストールします。CUDA の最新は 9.0 ですが、TensorFlow 1.4 が CUDA 8.0 を要求するので 9.0 は入れちゃダメ、絶対。
私は CUDA Toolkit 8.0 (GA2) をインストールしました。


■ 手順 5. cuDNN 6.0 のインストール

CUDA に続いて、cuDNN 6.0 をインストール。
cuDNN をダウンロードするには無償のメンバー登録が必要です。

開発者登録できたら、cuDNN をダウンロードします。6.0 が正解です。5.1 ではありません。

cuDNN は単にファイルを ZIP で固めただけのものなので、展開後に CUDA フォルダー(デフォルトでは C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 のはず)にフォルダー構造を保ったままでコピーします。


■ 手順 6. CNTK 2.3.1 のインストール

いよいよ CNTK のインストールです。これを書こうとしたところで 2.3.1 というバージョンが出ました。これを入れてみます。

Anaconda Prompt を起動して、

pip install 

です。
wheel ファイルの URL は、こちらのページで。バージョンとフレーバー(CPU 版か、GPU 版か)を間違えないようにインストールしてください。
これを書いている時点では 2.3.1 が最新。

インストールできたら、念のため動作確認。
Anaconda Prompt で以下を入力。

python -c "import cntk; print(cntk.__version__)"

2.3.1 と返ってくれば、ひとまず OK。

ついでにサンプルやチュートリアルもダウンロードしておきましょう。

python -m cntk.sample_installer

■ 手順 7. TensorFlow 1.4 のインストール

TensorFlow のインストールについては、たくさん情報があるので問題ないでしょう。
一応注意点としては、TensorFlow 1.4 は Python は3.5 を使うので、今回のように Python 3.6 の CNTK と共存するには仮想環境を作ること。

conda create --name=tensorflow python=3.5

Anaconda、CUDA、 cuDNN のインストールを頑張ったので、ここではこれだけ。

環境ができたら、TensorFlow 用の環境をアクティブ化。

activate tensorflow

ここで TensorFlow を pip インストールします。

pip install --ignore-installed --upgrade tensorflow-gpu

インストールが完了したら、Python を起動して以下を実行するのがお約束
文字通り “Hello, World” ですね。

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Hello, TensorFlow! が返ってきたら成功。(メッセージの頭に ‘b’ が付いていますけどね)

ここでもこれからのために、サンプル、チュートリアルをダウンロード。

TensorFlow の仮想環境の中で、

git clone https://github.com/tensorflow/models.git

です。


■ 本当に GPU を使えているのか

CNTK, TensorFlow ともに本当に GPU を使えているのか確認してみます。

個人的に MNIST はお腹一杯になってきたので、ここではやりません。(実際には、やはり最初にやりましたが /笑)

CNTK では、先ほどダウンロードしたサンプルの “CNTK-Samples-2-3-1\Examples\Image\TransferLearning” フォルダーに移動して、初回だけ

python install_data_and_model.py

を実行。続いて、

python TransferLearning.py

します。

GPU きゅんきゅんしてます。

cntk_running

TensorFlow のほうは仮想環境に入ってから、やはり先ほどダウンロードしたサンプルの “models\tutorials\image\cifar10” に移動して、

python cifar10_train.py

を実行します。こちらも GPU きゅんきゅんしてます。

tf_running

CNTK、TensorFlow とも、無事 GPU を使ってくれてます。


■(参考)私の PC

念のため、最後に私の PCを書いておきます。
OS はもちろん Windows 10 です。

私のディープラーニング (& Mixed Reality) の勉強用マシンは、マウスコンピューターの NEXTGEAR-NOTE i4400 です。

GPU は  GTX 1050 Ti (4GB) を積んでます。1050 ではなく 1050 Ti なので、ちょっとだけ速いです。
14インチなのでちょっと頑張れば持ち運びができるわりには(ちなみに本体は 2.1kg)、まあいい具合の GPU を積んでいます。それでいて 17万円ほどで、なかなかのコスパです。


ここまで書いておいてなんですが、手間をかけずにディープラーニングをやろうと思ったら Azure の Data Science Virtual Machine (DSVM)を使うのがいいですね。
使い終わったらシャットダウンすること(+念のための自動シャットダウン設定)を忘れなければ、CNTK も TensorFlow もインストール済みの GPU マシンが5分ほどで手に入ります。

ローカル PC にしても DSVM にしても、GPU を使って楽しくディープラーニングしてください。
勉強を始めたばかりという人は、こちら を参考にお試し体験してみるのもいいです。

広告
カテゴリー: CNTK, Cogbot, 深層学習 タグ: , , , パーマリンク

GPUなWindows PCでCNTKとTensorFlowとVisual Studio 2017とを共存させる方法 (2017年12月版) #cogbot #cntk への2件のフィードバック

  1. ピンバック: Azure Machine Learning Workbench で CNTK を利用する | 技術との戯れ

  2. ピンバック: GPUなWindows PCでCNTKとTensorFlowとVisual Studio 2017とを共存させる方法 (2018年4月版) #cogbot #cntk | 技術との戯れ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

w

%s と連携中