2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ML-Agents Release 17 環境構築 2021.5 -Windows】【強化学習でAIを避難させる】 #2 -Unity ML-Agents

Posted at

#0. はじめに
どうも、Yuulisです。2021年の4月下旬にML-AgentsのRelease 17が公開されたので、今回はそれを導入していきます。

ML-Agentsの公式ドキュメントも参考に。英語ですが。

前回の記事はこちら。

なお、この解説の前提条件は、
Unity 2020.3以上がインストールされていること
・Anacondaがインストールされており、環境変数にAnacondaのPathが追加されていること

とします。

#1. ML-Agents toolkitをダウンロード
Release 17のbranchからzipファイルをダウンロード。branchじゃないとダメっぽい。
スクリーンショット 2021-05-08 125539.png
好きなところに展開しておきます。

#2. Anacondaで仮想環境を構築
Anacondaを起動し、Python3.7を導入。必ず3.6か3.7を導入してください。

(base) C:\Users\Yuulis>conda create -n ML-Agents2 python=3.7.9 anaconda

ここでの仮想環境名は、ML-Agents2としました。

Solving environment: と出て読み込みがされていれば成功です。環境によっては、ここで結構時間がかかるかもしれません。

#3. mlagentsパッケージとPyTorchをインストール

まずは、ML-Agentsのパッケージをインストールします。
次のコマンドで先ほど作成した仮想環境をアクティブ化します。

(base) C:\Users\Yuulis>conda activate ML-Agents2

(ML-Agents2)と一番左に出ていればOKです。

続いて、先ほどダウンロードしたmlagentsのディレクトリに移動し、mlagentsのパッケージを2つインストール。

(mlagents2) C:\Users\Yuulis>cd (ml-agents-release_17_branchのPath)
(mlagents2) C:\Users\Yuulis>cd ml-agents-envs
(mlagents2) C:\Users\Yuulis>pip install -e .

(mlagents2) C:\Users\Yuulis>cd ..
(mlagents2) C:\Users\Yuulis>cd ml-agents
(mlagents2) C:\Users\Yuulis>pip install -e .

インストールが終わったら、pip freezeで確認しときましょう。

# Editable install with no version control (mlagents==0.26.0)
-e c:\users\Yuulis\ml-agents\ml-agents-release_17_branch\ml-agents
# Editable install with no version control (mlagents-envs==0.26.0)
-e c:\users\yuulis\ml-agents\ml-agents-release_17_branch\ml-agents-envs
torch==1.7.1+cu110

こうなればOK。

次に、以下のコマンドでPyTorchをインストール。インストール場所はブランチのディレクトリ上です。

(mlagents2) C:\Users\Yuulis>pip install torch==1.7.1 -f https://download.pytorch.org/whl/torch_stable.html

#4. Unityにmlagentsパッケージをインストール
今度は、Unityにmlagentsのパッケージを入れます。
Unityで新しいプロジェクトを作ります。今回はUnity 2020.3.6f1を使用。
スクリーンショット 2021-05-29 212853.png

プロジェクトが開いたら、上の「ウィンドウ」から「Package Maneger」を選択。
スクリーンショット 2021-05-08 142353.png
左上の+ボタンから、「Add package from disk...」を選択。
スクリーンショット 2021-05-08 142613.png
com.unity.ml-agents/package.jsonと、com.unity.ml-agents.extensions/package.jsonを選択して導入。
スクリーンショット 2021-05-08 142757.pngスクリーンショット 2021-05-08 143426.png
Package Manegerの操作は完了。

そして、「ファイル」から「ビルド設定」、「プレイヤー設定」を選択。
スクリーンショット 2021-05-08 143940.pngスクリーンショット 2021-05-08 144001.png
謎のインポートが出ますが、終わるまで待って、「API 互換性レベル」のところを、「.NET 4.x」に変更。
スクリーンショット 2021-05-08 144250.png

ここまでで、UnityでMl-Agentsが使えるようになりました。

#5. サンプルを学習させてみる
##5-1. 学習の準備
では、サンプルを学習させてみます。

Release 17のサンプルを動かすには、いくつか追加でパッケージをインストールしなければいけません。
Package Manegerを開き、Input System 1.1.0 -preview.3をインストール。
スクリーンショット 2021-05-29 213054.png
インストール完了後、こんな警告が出るので、いったん「YES」を選択。Unityが再起動します。
スクリーンショット 2021-05-11 182958.png
しかし、これだと旧バージョンのInput Systemが使えないので、「ビルド設定」から「プレイヤー設定」を開き、「使用中の入力処理」を「両方(both)」に変更。
スクリーンショット 2021-05-11 183441.png
また警告が出るので、「Apply」を選択。Unityが再起動します。

さらに、ローカルフォルダでML-Agents2_test\Packages\manifest.jsonを開き、"com.unity.nuget.newtonsoft-json": "2.0.0"の一行を追加します。
スクリーンショット 2021-05-11 184635.png
今度は、ダウンロードしたブランチのファイルから、.\Project\Assets\ML-AgentsのフォルダをUnityのAssetsフォルダにドラッグアンドドロップ。
好きなモデルのシーンを選択してください。今回は、3DBallを試してみます。
ここでエラーが出る場合は、Unity上でPushBlockWithInputというフォルダを削除してみてください。
スクリーンショット 2021-05-11 184916.png
「Play」ボタンを押すとこんな感じ。かわいい。
Videotogif.gif

##5-2. 学習させてみる
Anaconda3で次のコマンドを打ちます。

# 仮想環境の起動
(base) C:\Users\Yuulis>conda activate mlagents2

(mlagents2) C:\Users\Yuulis>cd (ml-agents-release_17_branchのPath)

そして、次のコマンドで学習を実行します。

(mlagents2) C:\Users\Yuulis\ML-Agents\ml-agents-release_17_branch>mlagents-learn .\config\ppo\3DBall.yaml --run-id=test3DBall

こんな感じのアスキーアートが出たらOK。



                        ▄▄▄▓▓▓▓
                   ╓▓▓▓▓▓▓█▓▓▓▓▓
              ,▄▄▄m▀▀▀'  ,▓▓▓▀▓▓▄                           ▓▓▓  ▓▓▌
            ▄▓▓▓▀'      ▄▓▓▀  ▓▓▓      ▄▄     ▄▄ ,▄▄ ▄▄▄▄   ,▄▄ ▄▓▓▌▄ ▄▄▄    ,▄▄
          ▄▓▓▓▀        ▄▓▓▀   ▐▓▓▌     ▓▓▌   ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌  ╒▓▓▌
        ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓      ▓▀      ▓▓▌   ▐▓▓ ▐▓▓    ▓▓▓ ▓▓▓  ▓▓▌   ▐▓▓▄ ▓▓▌
        ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄     ▓▓      ▓▓▌   ▐▓▓ ▐▓▓    ▓▓▓ ▓▓▓  ▓▓▌    ▐▓▓▐▓▓
          ^█▓▓▓        ▀▓▓▄   ▐▓▓▌     ▓▓▓▓▄▓▓▓▓ ▐▓▓    ▓▓▓ ▓▓▓  ▓▓▓▄    ▓▓▓▓`
            '▀▓▓▓▄      ^▓▓▓  ▓▓▓       └▀▀▀▀ ▀▀ ^▀▀    `▀▀ `▀▀   '▀▀    ▐▓▓▌
               ▀▀▀▀▓▄▄▄   ▓▓▓▓▓▓,                                      ▓▓▓▓▀
                   `▀█▓▓▓▓▓▓▓▓▓▌
                        ¬`▀▀▀█▓


 Version information:
  ml-agents: 0.26.0,
  ml-agents-envs: 0.26.0,
  Communicator API: 1.5.0,
  PyTorch: 1.7.1+cu110
[INFO] Listening on port 5004. Start training by pressing the Play button in the Unity Editor.

UnityのPlayボタンを押して、学習をスタート。高速で学習が進みます。
実行中のログはこんな感じ。

[INFO] 3DBall. Step: 12000. Time Elapsed: 37.150 s. Mean Reward: 1.158. Std of Reward: 0.748. Training.
[INFO] 3DBall. Step: 24000. Time Elapsed: 67.693 s. Mean Reward: 1.321. Std of Reward: 0.811. Training.
[INFO] 3DBall. Step: 36000. Time Elapsed: 104.730 s. Mean Reward: 1.813. Std of Reward: 1.146. Training.
[INFO] 3DBall. Step: 48000. Time Elapsed: 159.660 s. Mean Reward: 2.754. Std of Reward: 1.822. Training.
[INFO] 3DBall. Step: 60000. Time Elapsed: 187.318 s. Mean Reward: 4.802. Std of Reward: 4.031. Training.
[INFO] 3DBall. Step: 72000. Time Elapsed: 212.711 s. Mean Reward: 10.345. Std of Reward: 9.217. Training.
[INFO] 3DBall. Step: 84000. Time Elapsed: 237.549 s. Mean Reward: 27.109. Std of Reward: 26.229. Training.
[INFO] 3DBall. Step: 96000. Time Elapsed: 259.744 s. Mean Reward: 68.819. Std of Reward: 29.598. Training.
[INFO] 3DBall. Step: 108000. Time Elapsed: 281.904 s. Mean Reward: 78.619. Std of Reward: 35.049. Training.
[INFO] 3DBall. Step: 120000. Time Elapsed: 303.880 s. Mean Reward: 88.169. Std of Reward: 26.931. Training.
[INFO] 3DBall. Step: 132000. Time Elapsed: 328.001 s. Mean Reward: 94.977. Std of Reward: 17.400. Training.
[INFO] 3DBall. Step: 144000. Time Elapsed: 353.802 s. Mean Reward: 98.850. Std of Reward: 3.814. Training.
[INFO] 3DBall. Step: 156000. Time Elapsed: 380.172 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 168000. Time Elapsed: 410.259 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 180000. Time Elapsed: 437.282 s. Mean Reward: 95.615. Std of Reward: 15.189. Training.
[INFO] 3DBall. Step: 192000. Time Elapsed: 462.558 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 204000. Time Elapsed: 502.204 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 216000. Time Elapsed: 542.187 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 228000. Time Elapsed: 580.243 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 240000. Time Elapsed: 613.892 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 252000. Time Elapsed: 639.569 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 264000. Time Elapsed: 664.050 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 276000. Time Elapsed: 699.197 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 288000. Time Elapsed: 734.714 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 300000. Time Elapsed: 761.823 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 312000. Time Elapsed: 789.209 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 324000. Time Elapsed: 820.857 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 336000. Time Elapsed: 848.906 s. Mean Reward: 93.792. Std of Reward: 20.591. Training.
[INFO] 3DBall. Step: 348000. Time Elapsed: 872.485 s. Mean Reward: 98.331. Std of Reward: 5.782. Training.
[INFO] 3DBall. Step: 360000. Time Elapsed: 898.045 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 372000. Time Elapsed: 939.385 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 384000. Time Elapsed: 986.738 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 396000. Time Elapsed: 1043.034 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 408000. Time Elapsed: 1080.173 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 420000. Time Elapsed: 1112.859 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 432000. Time Elapsed: 1132.707 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 444000. Time Elapsed: 1163.200 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 456000. Time Elapsed: 1198.443 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 468000. Time Elapsed: 1229.967 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 480000. Time Elapsed: 1259.384 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.
[INFO] 3DBall. Step: 492000. Time Elapsed: 1287.441 s. Mean Reward: 100.000. Std of Reward: 0.000. Training.

3DBallでは50万stepで学習が終わります。
終わったら、ブランチのディレクトリの中に.\resluts\test3DBallRun\3DBall.onnxというファイルができていると思います。これをUnityのヒエラルキーウィンドウの以下のところにドラッグアンドドロップ。
スクリーンショット 2021-05-29 214220.png
名前を3DBall_testに変えときました。

##5-3. 学習結果をグラフでチェック
学習後、次のコマンドで学習結果をグラフで見ることができます。

(ML-Agents2) C:\Users\Yuulis\ML-Agents\ml-agents-release_17_branch>tensorboard --logdir results

こんな感じにlocalhostのリンクが出るので、コピペしてアクセス。

TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.5.0 at http://localhost:6006/ (Press CTRL+C to quit)

私の環境ではこんなグラフになりました。
スクリーンショット 2021-05-29 215646.png

以上で環境構築は完了です。

#6. 終わりに
今回は、ML-Agents Release 17の環境構築をしてみました。環境構築はエラーとの戦いといっても過言ではありません。エラーが出たらコピペしてググるか、Unity ML-Agentsの公式フォーラムで質問してみるのも一つの手です。Unity公式の方が教えてくれるはずです。

最後までお読みいただきありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?