ホーム > コラム > WindowsでKerasを用いたDeep Learning開発環境を整備する

WindowsでKerasを用いたDeep Learning開発環境を整備する

グループ 社会とLCA研究グループ
メンバー 本田 智則

はじめに

なぜWindows環境でAI開発を行うのか?

このコラムではWindows環境でDeep Learningを行うための環境構築の方法を説明させていただきます。
近年研究現場ではAI、特にDeep Learningの活用が盛んに行われるようになってきました。私自身も研究ではHEMS(Home Energy Management Syste)のデータを解析する際にAIを用いた解析を試みています。
Deep Learning開発環境としてはOSとしてUbuntuが稼働しているPCを用いるのが一般的です。
AI自体を本格的に活用する場合であれば、Ubuntuが稼働する専用マシンを購入して使用することもできますが、将来の研究への活用などを踏まえて少し試すために新たに専用マシンを購入し、慣れない設定を行うことはAI活用の阻害要因となります。また、昔とは違い最近では研究者や大学院生であってもLinux系OSの操作に慣れていない方も増えてきており、不慣れなOSで不適切な設定を行うことでセキュリティ上のリスクを生じさせることも懸念されます。
AIはそのアルゴリズム自体の発展と併せて、社会の中で活用され、社会的に意義のある問題解決に資することが重要です。
開発環境のOSの種類は、研究遂行上は本質的な問題ではありません。しかし、AI活用が広く行われるようになればなるほど、この問題が大きなものとなっているように感じます。
そこで、多くの研究者や学生が一般に使用しているWindows 10マシン上でAI開発を行える環境構築の手順についてできるかぎり図を交えて、その通りにやれば動く、というレベルで書かせていただくことにしました。
このコラムでは、NVIDA製のCUDAコアを搭載したGPUを利用してTensorFlow+KerasによってDeep Learningを行うための環境構築展順を示します。
下で説明させていただく流れは、1つの例であり、実際にはコマンドを多用することやバッチファイルを作成することなどでより簡単に環境構築をすることができる方法もあります。

想定読者:本を読んだ後自分で動かしてみたい方

本コラムの想定読者は、Deep Learningなどの入門書を読み、実際に自分のPC上で環境を構築してプログラムを動かしたいという方を想定しています。
そのため、Deep LearningのアルゴリズムやAIの仕組みなどについての説明は行いません。また、GPUを利用することの必要性などもあまり深く追求しません。

環境の準備

CUDAを利用可能なGPUが搭載されたPC

Deep Learningを実行する場合、一般にGPUによって計算を行います。CPUのみでも開発は可能ですが、速度が遅く現実的な開発を行うことは困難です。手元で確認した限りで単純なサンプルで速度が約20倍異なりました。
GPUを搭載したマシンであれば1分で終わる計算をCPUだけで行うと20分以上かかります。1回限りの動作であれば20分程度は問題になりませんが、実際のAI開発ではハイパーパラメーターチューニングしながら何度も計算を繰り返します。また、1分で終わるような軽量な計算は希でGPUを使って1時間、1日単位で計算をすることもしばしばあります。
GPUを使った演算であれば週末2日で結果が得られる計算であっても、CPUだけで計算を行おうとすると計算に1ヶ月以上かかってしまうことになります。
GPUは決して安いものではありませんが、AI開発を行うためには必須のものと考えるべきです。

必要なPCの準備

このコラムではWindows10(最新パッチ適用済)でKeras+TensorFlow開発環境を構築することを目的としています。
PCは最新パッチの適用されたWindows10を用います。
PCはNVIDA製のCUDAコア搭載GPUが搭載されているPCを想定します。CUDAコア搭載GPUには1万円程度のものから100万円以上するものまで価格も種類も多くありますが、3万円前後で購入できるNVIDIA Geforce 1060が搭載されたグラフィックカードでも試験的な利用には十分です。これから購入を予定しており、研究などでの活用を考えている場合には10万円前後のGeforce 1080Tiが良いかと思います(2018年8月時点)。

開発環境

Deep Learningの開発にはPythonを用います。PythonにはPython2系と3系がありますが、ここではPython3系を用います。Deep Learningのサンプルを動かす際などにはPython2系のコードも多くあるので本格的にプログラムを書くようになった場合はPythonのバージョンを切り替えて使うことが多いかと思います。
Pythonプログラム開発環境は多くありますが、ここではWindows10上で安定して動作し、かつ学生などが手軽に試すことを目的に日本語環境でWindowsとの親和性が高い操作が可能なVisual Studio Community 2017を用います。Visual Studio Community 2017は学術研究を目的とした利用については無償で利用可能です。企業で利用する場合は有償のProfessional版が必要になりますのでご注意ください。詳しくはライセンス規約をご確認ください。

Visual Studio 2017のインストール

プログラムの統合開発環境は多数ありますが、ここではVisual Studio Community 2017を使います。
マイクロソフトのサイトからVisual Studio Community 2017をダウンロードします。リンクをクリックし、下の図のCommunity2017をクリックしてダウンロードしてください。

ダウンロードしたファイルをダブルクリックすると、下の様な画面が出てきますので「続行」をクリックします。


しばらく待つと下の図のようなVisual Studioのインストーラーが立ち上がります。

インストーラー上に表示されている「Python開発」にチェックを入れます。

画面右側に下の図のような「インストールの詳細」が表示されます。「Anaconda3 64ビット」にもチェックを入れてください。Anacondaが既にインストールされている場合はチェックを入れる必要はありません。

選択が終わったら画面右下の「インストール」をクリックしてインストールを開始します。
インストールが完了すると下のようにサインイン画面が表示されます。マイクロソフトアカウントを持っていない場合はアカウントを作成してからサインインしてください。

サインインするとVisual Studioが立ち上がります。
試しに、ファイル→プロジェクト→新規作成を選択し、新しいプロジェクト画面で「Pythonアプリケーション」を選択し、OKをクリックしてください。


ファイル上にPythonのコードを書いて「アタッチ」をクリックしてみます。以下ではx=1,y=2として、x+yの結果を画面に表示させます。

下のようにコマンドプロンプトが立ち上がり実行結果が表示されます。

これでPythonの開発がWindows上で行えるようになりました。
ここからAI開発に必要なツールをインストールしていきます。
一旦Visual Studioを終了させます。

NVIDIA GPUドライバーのインストール

NVIDIAのサイトからご自身が使用しているGPUの最新ドライバーをインストールします。
ダウンロードしたドライバーをダウブルクリックし、下のドライバーインストール画面を立ち上げます。


次に「カスタム(詳細)」インストールを選択します。

次に進み「クリーンインストールの実行」を選びます。もしもGPUでオリジナル設定をしている場合、設定が全て規定値に戻ってしまうので注意してください。
このクリーンインストールオプションは念のために行うもので必須ではありません。これまでに複数の環境構築をしてきた経験から、一部GPUカードのメーカーオリジナルドライバーがインストールされた環境ではこのオプションを選択しないとこれ以降の設定がうまく行かない事例がありました。

次に進み、これ以降は全てデフォルトでドライバーのインストールまで完了させます。

CUDAツールキットのインストール(重要)

CUDAツールキットをダウンロードします。CUDAツールキットはこちらのリンクからダウンロードできます。
CUDAツールキットには複数のバージョンがありますが、ここでは2018年8月現在最新のCUDA Toolkit 9.2をダウンロードしてインストールします。
Windows→x86_64→10→exe(network) の順に選択していきます。


ダウンロードが完了したらexeファイルをダブルクリックしてインストーラを起動します・
使用許諾契約書の内容を確認し、次に進みここでは「高速(推奨)」のまま次に進みます。

インストールが開始してしばらくしてから、下の確認画面が出てきた場合は「インストール」を選択します。

インストール完了までいくつかの確認が出てくることがありますが、全て「次へ」で進みます。

上記画面で「閉じる」を押してCUDAツールキットのインストールを完了させます。

cuDNNのインストール

続いてNVIDAが公開するDeep Learning用のライブラリであるcuDNNをインストールします。
cuDNNをダウンロードするにはこちらのページから登録を行う必要があります。アカウントを持っていない場合は「Join now」からアカウントを作成してログインしてください。

cuDNNはこちらのページからダウンロードできます。
規約に同意して「Download cuDNN v7.2.1 (August 7, 2018), for CUDA 9.2」→「cuDNN v7.2.1 Library for Windows 10」を選択します。


cuDNNのダウンロードが終了したら、圧縮ファイルを開き、cudaフォルダ内の内容を確認します。

bin,include,libの3つのフォルダがありますので、これを先ほどのCUDAツールキットをインストールしたフォルダーにコピーします。
CUDAツールキットはデフォルトでは
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2
にインストールされています。管理者権限を求められるので「続行」を選択します。


以上でcuDNNのインストールが完了しました。

環境変数の設定

Windows上で以下の3つのフォルダに対してパスを通します。
• C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin
• C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64
• C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Scripts

パスを通すには、Windowsスタートメニューから「環境変数の編集」を選択します。

環境変数の編集画面で「Path」を選択肢「編集」をクリックします。

「新規」をクリックしフォームに先ほどのCUDAツールキットがインストールされたフォルダ内の「bin」フォルダを登録します。
デフォルトでは「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin」②です。

続いてAnacondaにもパスを通します。Visual Studioをインストールする際にAnacondaをインストールした場合は
• C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64  ③
• C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Scripts  ④
を追加します。ご自身でAnacondaをインストールしてある場合は、Anacondaのインストールパスに変更してください。
全てのウィンドウをOKで閉じて環境変数の編集を終了します。
環境変数の設定が終わったら一旦Windowsからサインアウトして環境変数を適用させます。

Anaconda の設定

Anacondaの起動

Visual Studioインストール時に同時にインストールしたAnacondaを起動します。

Anaconda上への仮想環境の追加

Anaconda上に仮想環境を作成します。Anacondaを立ち上げて左側「Environment」を選択し、下に出てくる「Create」をクリックします

仮想環境の名称を入力し、Createをクリックすれば仮想環境ができます。

仮想環境の名前は任意に付けられますが、ここでは「deeplearning」としました。
これ以降は設定した仮想環境上で操作を行います。

Deeplearning フレームワークとその周辺パッケージのインストール

Visual Studio Tooles for AI のインストール

Visual Studioを起動し、ツールバー上の「ツール」→「拡張機能と更新プログラム」を選択します。

表示されたウィンドウで、左側の一覧から「Visual Studio Marketplace」を選択し、右上の検索ボックスに「Visual Studio Tools for AI」と入力して検索をします。中央にVisual Studio Tools for AIが表示冷ますのでこれをダウンロードします。

ダウンロード完了後は下のように元のウィンドウに戻りますので、このウィンドウを閉じてVisual Studio を終了させます。

下の画像のようにVSIXインストーラーが自動的に起動します。

途中で管理者権限を求められますのでそのまま実行してください。また、下のウィンドウが出てきた場合もライセンス条項に同意して変更をクリックして進めます。

下のウィンドウになれば、インストールは完了です。

 

コマンド操作

仮想環境からターミナルを起動

Anacondaを起動し、作成済みの仮想環境のターミナルを起動します。
Enviromentsから、先ほど作成した「deeplearning」という仮想環境を選択し、「▶」をクリックし「Open Teminal」をクリックします。


スタートメニューからコマンドプロンプトを選択し、右クリックで「管理者として実行」します。
下のように(deeplearning)という仮想環境名が記載されたコマンドプロンプトが起動します。

コマンドの実行

立ち上げたコマンドプロンプトに下の1~7のコマンドを順番に入れて、1行ずつ実行し下さい。

  1. conda install cython
  2. python -m pip install –upgrade pip
  3. conda install h5py==2.7.1
  4. conda install tensorflow-gpu==1.8.0
  5. conda install keras-gpu==2.1.6

途中で下のように「Proceed([y]/n)?」となって実行が一時停止するので、この場合は「y」と入力して実行を進めてください。


上記は環境構築の一例です。tensorflowなどのバージョンは書籍で示されていると思いますので、その書籍のバージョンに併せて適宜変更してください。インストールの順序は基本的に変更しないことをお勧めします。

Deep Learning環境構築を難しくしているもの

condaとpipの使い分け

ここで、コマンドに「conda install keras-gpu==2.1.6」とあります。一般の書籍などでは「pip install keras」のような記述を多くみかけます。
どちらの方法を使ってインストールしても問題はないのですが、慣れてくると好みや状況によって使い分ければよいのですが、やや乱暴ではありますが通常はcondaでインストールし、condaでインストールできない場合のみpipを使うという使い分けで問題ありません。

バージョン依存性

上記のコマンドで「conda install keras-gpu==2.1.6」というように==以下にそれぞれのパッケージのバージョンを指定しています。
Pythonのライブラリはパッケージ間の依存関係があり、A,Bという2つのパッケージがあるとき、パッケージBはパッケージAに依存するというケースが多くあります。
このときパッケージBはパッケージAのバージョン1.0では動くけれど、パッケージAのバージョン1.1を使ってしまうと動かないということがしばしば起こります。そのため、適切なバージョンをインストールすることが重要です。バージョンの選択は書籍などに示されている場合はそれを使い、それでもうまく行かない場合はエラーメッセージから判断します。慣れるまではつまづきやすい部分となります。

コマンドの実行順序

コマンドの実行順序も影響します。

condaを使うことでインストールするパッケージに必要なパッケージが自動的にインストールされるのですが、インストール順序が異なるとそれぞれのパッケージが使用している他のパッケージのバージョンが異なってしまい、不整合を起こしてしまうことがあります。
実際にエラーとなる例を示します。エラーが発生すると修正が複雑になるので、deeplearning_errorという実行環境とは別の仮想環境を作ります。仮想環境は後で削除してください。

先ほどのコマンドのうち、keras,tensorflowのインストール順序を逆にして実行します。
conda install keras-gpu==2.1.6
conda install tensorflow-gpu==1.8.0
途中で大量のエラーが出力され、正常にインストールが行えなくなります。


ただしエラーでストップはしませんので、そのままインストールを進めることはできます。
しかし、実際にkerasを使ってプログラムをしても下のようにプログラムを動作させることができません。


このようなエラーが発生した原因は、keras-gpuをインストールする際に、GPUなしのtensowflowとtensorflow-gpuの2つのパッケージがインストールされていました。そして、それぞれのバージョンは1.1.10となっていました。しかし、後から「conda install tensorflow-gpu==1.8.0」を実行したことによって、tensowflow-gpuのみバージョンが1.8.0にしようとしたことでパッケージのバージョンに不整合が発生し多数のエラーが生じてしまいました。
このように実行順序を1つ間違えると環境構築に失敗してしまうのも環境構築を難しくしている一因と思います。
Pythonの操作に慣れていないうちは、パッケージの整合性でつまずくことが多いため、もしもPythonプログラムがパッケージのimport段階でストップしてしまうようなケースでは、パッケージのバージョンとインストールの順序を見直してみることで問題が解決することがあります。
Anacondaの仮想環境を構築しておくことで何度でもやり直しができるので、慣れるまでは仮想環境を作って試行錯誤していくことが必要です。
慣れるまでは書籍などを参考にされることが多いと思います。書籍に書かれた順番通りにインストールを行っていたかを見直してみると問題が解決することも多いです。

Visual Studio の設定

Visual Studio上で仮想環境の選択

Visual Studioを起動し、最初に作成したPythonプロジェクトを開きます。まだ作成していない場合は任意のPythonプロジェクトを作成してください。
プロジェクトを開いて右側のソリューションエクスプローラー上にある作成したプロジェクト、ここでは「PythonApplication1」を右クリックします。


右クリックで表示された「Python環境を追加/削除」を選択します。

先ほどAnacondaで作成した仮想環境が表示されますのでチェックを入れてOKをクリックします。


こうすることで、先ほどAnacondaで構築した仮想環境にインストールしたパッケージをVisual Studioのpythonから使用可能になりました。
以上でAI開発のための開発環境の構築が完了しました。

実際にサンプルを動作させる

MNISTを使った文字認識

MNISTとは下のように手書きで0-9までの数字が書かれた7万枚の画像とその画像がどの数字を表すかを示したテキストファイルのデータセットです。

Deep Learningを使って、手書き文字がどの数字であるかを分類するコードを実行します。
ここではGit上で公開されているMNISTのサンプルコードを実行します。
https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py


コード部分をコピーしてVisual Studioのpythonファイルに貼り付けます。


続いてツールバー上にある「アタッチ」をクリックするとコマンドプロンプトが立ち上がりプログラムの実行が開始します。


コマンドプロンプト上に表示される内容の意味などについては参考書籍をご確認ください。
初回実行時のみMNISTのファイルをダウンロードするためやや時間がかかります。学習が開始すると下のような画面が進んでいきます。


最終的に下の文字が表示されれば学習は完了です。

学習に用いなかった1万枚の画像で学習結果をテストし、その正解率が98.12%であったことを示してます。

おわりに

新しい環境構築をする

以上でWindows環境でAI開発を行う環境構築は完了しました。あとは書籍などのコードを手元のPCでプログラムして実行することが可能です。
上記で作成した環境はAI開発のための1つの例に過ぎません。kerasの2.1.6をインストーしましたが、GAN(Generative Adversarial Network)を行うための環境ではkeras2.1.2でないと動作しないなどということが頻発します。

市販されている書籍の多くでも章によって求められる環境が異なるということもあります。

Anacondaでは下の図の赤枠にあるCloneを使って仮想環境をコピーすることができます。試行錯誤が必要になった場合には、きちんと動作している仮想環境上で試行錯誤するのではなく、現在動いている仮想環境をコピーして、コピー先で試行錯誤を行って、うまく行く方法が見つかったらベースに反映させるという方法をお勧めします。

また、ある用途で用いるための仮想環境は独立して準備しておくことで適宜仮想環境を切り替えながらAI開発を行えます。

Ubuntu上での環境構築については多くの情報がありますが、Windows10上での環境構築についての情報は少なかったためコラムでご紹介させていただきました。