Unity
TensorFlow
ML-Agents

ml-agents 0.8.0 で自分のプロジェクトで機械学習させる (Windows)(Tensorflow-GPU導入編)


前段

Macでのml-agents導入はこちらを参照してほしい。

今回はWindows用、それもtensorflow-gpu を使ってやりたい。基本的に以下の本家のページの通りだが

https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Installation-Windows.md

ハマリポイントがいくつかあったので、それには注意を促したい、というのがこの記事の趣旨だ。

あと1年後は100%忘れる自信がある私自身のためのものでもある。


環境設定


1、 ml-agents をダウンロード

  https://github.com/Unity-Technologies/ml-agents/tags/0.8.0

  をダウンロードして、適当なところに配置


2、 anaconda をインストール

  ターミナルで「conda」と打って反応があれば既にインストール済み


3、 仮想環境を作る

conda info -e

 で[ml-agents]があれば良い。なければ↓でつくる。

conda create -n ml-agents python=3.6

 で仮想環境を作る(なんか聞かれたら「y」と入力)

conda activate ml-agents

 で仮想環境切り替え。


4、 CUDA toolkit のインストール

  Unity ML-agentsドキュメントによると、CUDA toolkitのバージョンは「9.0.176」限定であるらしいので、それをダウンロードする。ダウンロードサイト直リンク


5、cuDNN library のインストール



  • NVIDIAサイトでcuDNNのサイトに行って、ダウンロードの手続きをする。ディベロッパー登録やらアンケートやらをやる必要がある。(こちらもCUDA toolkit 同様、バージョンが限定されているので要注意。「7.0.5」らしい。ダウンロードサイト直リンク )

  • ダウンロードしたzipを展開すると「bin」「include」「lib」フォルダができるので、それをCUDA toolkitのインストール先であるC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0に配置する。


6、環境変数の設定

  CUDA_HOME という環境変数を新規に作り、

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

  を設定する。

  次に、Path 環境変数に、以下の二つを追加する。

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

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64

(Unity ML-agentsドキュメントには「関連するパスを置き換えろ」と書いてあるが、CUDA toolkit インストール時に書き加えられたパスを消してはいけないので注意が必要)

以下の感じにパスが張っていればOK。

スクリーンショット_2019-05-02_00_34_12.png


7、tensorflow-gpu のインストール

 3で作った仮想環境で

pip install tensorflow-gpu==1.7.1

とやって tensorflow-gpu を仮想環境にインストール。

確認のために、

python

とやって、pythonを起動後、

import tensorflow as tf

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

で、tensorflow-gpu が起動するのを試してみる。

Found device 0 with properties ...

とかなんとか出れば成功。出てなければ、tensorflow-gpu がインストールできていない可能性がある。


8、ML-Agents が使うライブラリをインストール

  ★★★ここで注意★★★

  このままML-Agents の使うライブラリをインストールしようとすると、せっかくいれたtensorflow-gpu に 通常のCPUを使う tensorflow が上書きインストールされてしまう。

なので、ml-agents/setup.py を以下のように編集する必要がある。


setup.py

      :

packages=['mlagents.trainers'], # Required
zip_safe=False,

install_requires=[
'mlagents_envs==0.8.0',
# 'tensorflow>=1.7,<1.8', # ←ここをコメントをしておく
'Pillow>=4.2.1',
'matplotlib',
'numpy>=1.13.3,<=1.14.5',
'jupyter',
:


そして、改めて以下を実行して ml-agents のライブラリをインストールする。

cd ml-agents-envs

pip install -e .
cd ..
cd ml-agents
pip install -e .
cd ..

確認のために

mlagents-learn

とやってみてちゃんとUnityロゴのアスキーアートが出ていれば成功。

スクリーンショット_2019-05-02_00_56_21.png

念の為、先ほどのPythonを動かしてみて

import tensorflow as tf

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

で、tensorflow-gpu が正常に動いていることを確認する。(たまにCPUに切り替わってたりするので要注意)