最近Unity関連の勉強をしているのですが、Unityを勉強する大きな理由の1つが「強化学習」
もちろんゲームを制作して発表してみたい、という欲求もありますが、
それよりもAIの強化学習というものが面白そうだと感じております。
というわけで、今おそらく一番ナレッジが存在するML-Agentを導入しようとした次第です。
というわけで、MacBook Air(m2)に対してML-Agentを導入しようとしたのですが
これが思いっきり沼りました
導入だけで5時間ぐらいかかってしまったので、どこかの誰かが同じように詰まったときに助けになれるようにメモとして手順を残しておきます。
事前準備
Macbook Air (m2)に対して、以下をインストールしておきます。
- miniforge3
- anaconda
- Unity
それぞれの導入手順は省きますが、私は以下を参考にしました。
導入環境
Macbook Air m2:
Darwin [マシン名].local 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:06:26 PST 2022; root:xnu-8792.61.2~4/RELEASE_ARM64_T8112 arm64
Unity
2022.2.1f1
導入手順
Pythonの環境の構築
ml-agentによる強化学習を行うには、UnityだけではなくPythonというプログラミング言語のツールを使用します。
というわけで、まずはPythonの環境を整えるところから。
仮想環境設定
Pythonの仮想環境を構築します。
仮想環境を構築して、その中で作業をすることで、
もしPythonの環境構築に失敗したときや、まっさらな環境で設定をやり直したい
となった場合に簡単に再設定することができます。
仮想環境の構築方法は色々あるのですが、今回はanacondaを使用します。
また、ml-agentのPythonの実行はGUIではなく、CLIで行います。
※よく映画とかでハッカーが使っている、文字しか使わないやつです。
なので、まずはmacの標準CLIツールであるterminalを起動します。
[Command] + [Spaceキー]でアプリ検索できるので、
そこで「terminal」と検索しましょう。
ターミナルが起動したら、仮想環境構築。
以下を入力して実行します。
% conda create -n ml-agent-test python=3.8
今回は「ml-agent-test」という名前で、Pythonのバージョンが3.8の環境を構築。
ml-agentで使用するPythonは3.8が推奨されているようなので、それに倣いました。
3.9とかで構築している人もいるようですが、私の環境の場合だとうまくいかなかったので、
おとなしく3.8で構築します。
PHPしかり、Pythonしかり、最新バージョンが必ずしも良いとは限らないのが難しいところですね
仮想環境を作ったら、その仮想環境を利用するようにします。
% conda activate ml-agent-test
このコマンドを実行すると、先ほど作成した仮想環境を利用できるモードに遷移します。
コマンドラインの名前部分に
(ml-agent-test)
と表示されていれば成功です。
また、ちゃんとPythonのバージョンが合っているかも確認しておきます。
% python --version Python 3.8.16
こんな感じで、Python 3.8.16 と表示されていれば仮想環境の準備はOKです。
うまくいかない場合
- Pythonのパスが通っているか、Anacondaがインストールされているかなどを再確認する
必要なパッケージのインストール
ml-agentを使用するにはいくつかのPythonライブラリが必要になります。
ので、それを揃えていきます。
% conda install numpy % conda install Pytorch=1.8.0 % conda install h5py % conda install grpcio
とりあえずこの4つをインストールします。
PackagesNotFoundError: The following packages are not available from current channels:とエラーが出る場合
ハマりポイントその1。
% conda install Pytorch=1.8.0
これを実行した際に、上のようなエラーメッセージが出力されてなぜかインストールできませんでした。
これは、おそらく標準のリポジトリでは対応していないバージョンのためだと思われます。
以下のコマンドにて解決。
% conda install -c conda-forge Pytorch=1.8.0
-c オプションでリポジトリを指定してあげるとインストールすることができるようになりました。
ml-agentsのインストール
さて、ようやくml-agentのインストールです。
まずはml-agentsをダウンロードするところから。
ブラウザ経由でダウンロードしてもいいですが、今回はこのままCLIでダウンロード。
まずはインストール用のフォルダを作成します。
% mkdir ml-agents % cd ml-agents
インストール用のフォルダの場所はどこでもいいですが、今回はカレントディレクトリの下に「ml-agents」というものを作りました。
作成したディレクトリに移動して、ml-agentをダウンロードします。
今回はrelease-20(2023/1/18時点で最新)を導入したいと思います。
% wget https://github.com/Unity-Technologies/ml-agents/archive/refs/tags/release_20.zip
wgetがない場合はブラウザでダウンロードするか、wgetをインストールします。
zipで固められているので、unzipで解凍。
% unzip release_20.zip
するとml-agents-release_20というディレクトリが生成されます。
% ls
ml-agents-release_20
解凍されてできたディレクトリに移動し、pipコマンドでml-agentをインストールします。
% cd ml-agents-release_20
% python -m pip install mlagents==0.30.0
こんな感じのメッセージが出てくればOKです
Successfully installed MarkupSafe-2.1.2 Pillow-9.4.0 absl-py-1.4.0 attrs-22.2.0 cachetools-5.2.1 cattrs-1.5.0 charset-normalizer-3.0.1 cloudpickle-2.2.0 filelock-3.9.0 google-auth-2.16.0 google-auth-oauthlib-0.4.6 gym-0.26.2 gym-notices-0.0.8 idna-3.4 importlib-metadata-6.0.0 markdown-3.4.1 mlagents-0.30.0 mlagents-envs-0.30.0 numpy-1.21.2 oauthlib-3.2.2 pettingzoo-1.15.0 protobuf-3.20.3 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyyaml-6.0 requests-2.28.2 requests-oauthlib-1.3.1 rsa-4.9 tensorboard-2.11.2 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 urllib3-1.26.14 werkzeug-2.2.2 zipp-3.11.0
ERROR: Could not find a version that satisfies the requirement torch<1.9.0,>=1.6.0 (from mlagents) (from versions: 1.9.0, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1)というエラーが出る場合
色々な手順を試していくうちで、何回もぶち当たったのがこちらのエラー
ERROR: Could not find a version that satisfies the requirement torch<1.9.0,>=1.6.0 (from mlagents) (from versions: 1.9.0, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1)
ERROR: No matching distribution found for torch<1.9.0,>=1.6.0
こちらのエラーの原因はよくわかっていないのですが、
Pytorchのバージョンが新しすぎる可能性があります。
色々試したところ、condaでインストールしたときの現在の最新バージョンは1.12.1で、それで
python -m pip install mlagents==0.30.0
を実行したら上のようなエラーが出ていました。
おそらくですが、Pytorchのバージョンは1.8.0を利用するのが安パイのようです。
他にもPythonのバージョンとの関連もあるようなので、一旦成功した組み合わせとして手順化してみました。
Unityへのインポート
Python側のセットアップが終わったら、今度はUnityにml-agentをインポートします。
まずはml-agentを動かす用のプロジェクトを作成。
今回はプロジェクト名は「ml-agent-test」とします。
保存場所は各々任意の場所でOKです。
プロジェクトを作成すると以下のような見慣れた画面が出てきます。
ここからml-agentをインポートします。
[Windows] -> [Package Manager]を開きます。
Package Managerを開くと以下のようなウィンドウが開きます。
ここからml-agentをインポートします。
まずは左上の「+」をクリック。(下図赤矢印)
以下のような表示がでてくるので、「Add package from disk」をクリック
するとファイルを選択する画面が出てくるので、
先ほどダウンロードして解凍した「ml-agents-release_20」のディレクトリに移動して
[com.unity.ml-agents] -> [package.json]
を選択して「Open」をクリックします。
正常にインポートされれば、Package Managerの画面に以下の赤枠が表示されます。
これで導入は完了です。
まとめ
今回、こちらのサイトを参考にさせていただきました。
というのも、実はML-Agentの勉強用に本を購入したのですが、そこに書かれているインストール手順がうまくいかなかったんですよね・・・
というのも、この本の説明はMac専用の解説本ではなく、Windowsにも対応しているのでどうしてもインストール部分に関しては情報が薄くなってしまいますし
MacはMacでIntelチップとM1,M2チップで挙動が変わったりと、結構ややこしい感じなんですよね。
なので、本の不備というよりはML-Agentsのアップデートの速さに書籍などが対応しきれていない、というのが実情でしょうね。
今回はセットアップだけで5時間ほどかかってしまいましたが、この記事が自分のように沼った人の目に届き、助けになれば幸いです。
コメント