今回はUnityで機械学習の補助をするコンポーネントML-Agentsのインストールと機械学習の管理をするAnacondaのインストールをしてみます。
UnityのML-Agentsは実際に機械学習をする機能ではなく機械学習を行うのはPythonスクリプトで、その管理を行うのがAnacondaになるようです。
Unityで機械学習をする為の環境作りが結構大変だったのでそれに特化した記事にしました。
実際にUnityで機械学習をさせるのは別の記事で出来たらと思います。(-_-)
今回の記事はUnity2020.1.9f1にて動作確認をしております。
Unityで機械学習をする為の条件
Unityで機械学習をさせる為のML-Agentsを使う為には以下の条件があります。
Unityは2019.4以降のバージョン
Pythonは3.6.1以降のバージョン
が必要になります。
Pythonはこの後ダウンロードするのでいいですが、Unityのバージョンは気を付けてください。
ML-Agentsコンポーネントのインストール
まずはUnityのML-Agentsコンポーネントをインストールします。
UnityメニューのWindowからPackage Managerを選択します。
ML-Agentsを選択し、Installボタンを押してインストールします。
今回の場合はPythonとML-Agentsとのバージョンを合わせる為にML-Agentsのプレビュー版である1.5.0をインストールします(上の画像では1.0.5に赤い四角がありますが1.5.0をインストールします)。
プレビュー版なのでPackage Managerの初期設定では表示されていません。
そこでUnityメニューのEdit→Project Settingsを選択し、Package ManagerのEnable Preview Packageにチェックを入れます。
こうすることでPackage Managerにプレビュー版のコンポーネントも表示されるようになります。
これでML-Agentsコンポーネントのインストールが出来ました。
Anacondaのダウンロードとインストール
Anacondaのサイトに移動し自身の環境に該当するものをダウンロードします。
わたくしの場合はWindowsの64bit版のPython3.8をダウンロードし、インストールしました。
インストールの設定はデフォルトの状態のままにしました。
インストールが完了したらWindowsのスタートメニューからAnaconda Promptを選択します。
コマンドプロンプトでのコマンド
コンソールのコマンドについていくつか見ていきます。
1 2 3 | dir |
は現在のフォルダ内のフォルダとファイルの一覧を表示します。
1 2 3 | cd フォルダまでの階層 |
で階層を指定してそのフォルダに移動出来ます。
例えば現在C:\Users\kamekumechanフォルダにいるとしたらそのkamekumechanフォルダ内にDesktopフォルダがあり、その中にabcフォルダがあるとすればAnacondaのプロンプトで以下のように入力するとDesktopフォルダのabcフォルダに移動出来ます。
1 2 3 | C:\Users\kamekumechan > cd Desktop/abc |
その他の階層の移動方法としては
以下のように..で前の階層に移動出来ます。
1 2 3 | cd .. |
以下のように.だと現在のフォルダ(カレントフォルダ)を表します。
1 2 3 | cd . |
以下のようにすると指定したML-Agents環境がアクティブになります。
以下の場合はmlagentsという名前で作ったML-Agents環境
1 2 3 | conda activate mlagents |
以下のようにすると現在アクティブなML-Agents環境が非アクティブになります。
1 2 3 | conda deactivate |
以下のように入力するとコンソール画面を閉じます。
1 2 3 | exit |
以下のように入力するとAnacondaにインストールされたパッケージとそのバージョンを確認する事が出来ます。
1 2 3 | conda list |
他にもコマンドプロンプト自体のコマンドやAnacondaのコマンドもあります。
Pythonの環境作成
最初にAnacondaのバージョンをアップデートします。
コンソールに以下のように入力しEnterキーを押します。
1 2 3 | conda update -n base -c defaults conda |
次にAnaconda Promptのコンソール画面で以下のように入力し、pythonの環境を作成します。
1 2 3 | conda create -n mlagents python=3.8 |
わたくしの場合はmlagentsという名前のフォルダ内に環境を作成し、pythonが3.8なのでそこの番号は自分の環境に合わせて変更します。
コンソールに以下のように表示されたらyキーを押してEnterを押し、パッケージをインストールします。
しばらくすると以下のように環境作りとパッケージのインストールが完了した旨が表示され、次に環境をアクティブにするコマンドと非アクティブにするコマンドが表示されます。
環境をアクティブにしたいので以下のようにコマンドを入力します。
1 2 3 | conda activate mlagents |
コンソール内のコマンドをそのままマウスで選択してCtrl+CキーでコピーしCtrl+Vキーで貼り付けると間違いがありません。
環境がアクティブになると以下のようにコンソールに表示されるようになります。
アクティブにした環境を非アクティブにしたい場合は以下のコマンドを実行すると現在アクティブである環境が非アクティブになります(他の環境がアクティブであればその環境がアクティブになります)。
1 2 3 | conda deactivate |
この後、オンライン上からML-Agents環境パッケージのインストールを行う方法でやってみます。
最新のリリースバージョンをGitHubからダウンロードして、そこからインストールする方法もあります。
それは後で紹介します。
Python環境にPythonパッケージをインストールする
次にpython環境にPythonパッケージをインストールします。
コンソールで以下のように入力します。しばらく時間がかかります。
1 2 3 | pip install mlagents |
ここでエラーが出る可能性があります。
例えば以下のような感じです。
2020年10月以降だとパッケージの依存関係のチェックが変わるらしくエラーが出るらしいので、
–use-feature=2020-resolverというコマンドオプションを付けてパッケージの依存関係をチェックしてくださいという感じです。
詳しい所は以下のサイト等を参考にしてみてください。
先ほどのエラーの中で
tensorflow 2.3.1
mlagents-envs 0.20.0
のパッケージで使用しているnumpyのバージョンが対応しているバージョンでない為にエラーが出ています。
tensorflow2.3.1に対応するnumpyのバージョンは1.16.0以上で1.19.0未満であること
mlagents-envs0.20.0に対応するnumpyのバージョンは1.14.1以上で1.19.0未満であること
となっているのでnumpyのバージョンを1.18.0に変更することにします。
そこでnumpyのバージョンを変更して依存関係のエラーを解消します。
(注)これらのバージョンの数値は変わってくる可能性があります。
コンソールに以下のように入力しEnterキーを押してnumpyの1.18.0のものをインストールします。
==の左右にスペースを入れるとエラーになります。
1 2 3 | pip install numpy==1.18.0 |
これでとりあえずML-Agentsのパッケージのインストールが出来ました。
出るエラー内容や依存関係のエラーは変わってくるのでエラーに応じた対応が必要になってきます。(^_^;)
トレーニング用の設定ファイルのダウンロード
機械学習のトレーニング用の設定ファイルを以下からダウンロードします。
今回はとりあえず動かす時に必要なので動くものをダウンロードして使うだけです。
まずはBranchをrelease_8_branchに変更し、configフォルダ→ppoフォルダを選択します。
3DBall.yamlファイルの中身をコピーし、自身のパソコン内にtrainer_config.yamlファイルを作成し、中身を貼り付けます。
わたくしの場合はGitHubの使い方がわからないのでコピー&ペーストになっています。(^_^;)
設定ファイルの中身の設定については以下に詳細が載っています。
1から設定ファイルを作成するのは大変なので元からあるものを変えて使うと良さそうです。
最新リリース版のツールキットをダウンロードし環境を作成する方法
ここまではオンライン上のパッケージをインストールしてやりましたが、サンプルを含むリリース版をダウンロードし、ダウンロードしたオフラインのパッケージをインストールする方法もあります。
現在の最新リリース版は8なので以下のリンク先の一番下にあるSource Code(zip)を押し、Zipファイルをダウンロードしてデスクトップ等に展開します。
またこちらのページにパッケージの互換性も表示されています。
デスクトップにファイルを展開すると、
C:\Users\ユーザー名\Desktop\ml-agents-release_8
というフォルダ階層になるので、コンソールでcdを使ってml-agentsフォルダまで移動します。
1 2 3 | cd C:\Users\ユーザー名\Desktop\ml-agents-release_8\ml-agents-release_8\ml-agents |
フォルダを移動したら以下のコマンドを打ちます。
1 2 3 | pip install -e ./ |
これで現在のフォルダにあるml-agentsパッケージをインストール出来ます。
次にcdで階層を移動します。
1 2 3 | cd C:\Users\ユーザー名\Desktop\ml-agents-release_8\ml-agents-release_8\ml-agents-envs |
で一つ上の階層のml-agents-envsフォルダに移動し、同じように以下のコマンドを打ちます。
1 2 3 | pip install -e ./ |
これでml-agents-env関連のパッケージもインストールされます。
わたくしの場合はオンライン上からパッケージをインストールし、それぞれのパッケージの依存関係のエラーを解消し動作するようにしましたが、こちらの方が互換性がある状態のものをインストール出来るのでいいかもしれません。
ここら辺は以下を参照してください。
Unityでの学習を開始する方法
Unityでの学習を開始する方法を見ていきます。
トレーニングの開始
Anacondaコンソールで以下のように入力してEnterキーを押し、トレーニングを開始します。
trainer_config.yamlファイルを作成したフォルダまでコンソールで階層を移動し以下のように入力します。
1 2 3 | mlagents-learn ./trainer_config.yaml --run-id testId |
わたくしの場合はデスクトップにtrainer_config.yamlファイルを作成したのでcdコマンドを使ってDesktopフォルダまで移動し上記のコマンドを入力します。
–run-idはこの学習のIDを指定するもので上記の場合はtestIdという名前にしています。
試しにコマンドを打ってみます。
idはUnity-LearnのHummingbirdsで使ったhb_01というidを設定しています。
また–forceというコマンドオプションは以前同じidを使っていた場合に強制で上書きするというオプションです。
途中から再開する場合は–resumeオプションを指定します。
上の画像のようにUnityのロゴが表示され、Unity Editorのプレイボタンを押すと学習が開始されます。
mlagents-learnコマンドを打った後に
File: ファイル名 エラー内容
というようなエラーが発生する場合は打ったコマンドを間違えていたり、Unityエディター内のプレイボタンを押すのが遅いや、使っているYAMLファイルの中身の書き間違えだったり、構成がうまくいっていない可能性があります。
個人的にはやはりYAMLファイル(今回の場合はtrainer_configという名前のYAMLファイル)の中身が間違っていてエラーが発生したのでそこを気を付けるといいかもしれません。
ここまででUnityで機械学習をする為の環境作りは出来ました。
ですが、UnityのML-Agentsコンポーネントを使った設定や機械学習をさせるゲームオブジェクトの作成やスクリプトの作成はまだしていません。
いきなり自分でスクリプトを作るのも大変なので、次回はダウンロードしたサンプルを使って機械学習をしてみることにします。