
コンテナに、強化学習のフレームワークを設置する手順を示します。
関連
- ◯
 - 強化学習&ニューラルネットで<歩かせる>:Unity (ML-Agents (Walker))
 - ◯
 - コンテナを導入する:Docker
 
検証
- ◯
 - ホスト
 - ・
 - OS:macOS 11, Windows 10
 - ・
 - アプリ:Unity 2021.2.8f1
 - ・
 - ライブラリ:ML-Agents 18 (com.unity.ml-agents (C#) 2.1.0)
 - ・
 - コンテナ:Docker 20.10 (Docker Desktop)
 
- ◯
 - コンテナ
 - ・
 - OS:Ubuntu 20.04 (Docker Hub)
 - ・
 - インタプリタ:Python3.8
 - ・
 - ライブラリ:ML-Agents 18 (ml-agents (Python) 0.27)
 
前提:実行と監視の分離
ここではコンテナを、強化学習の<実行>用と<監視>用の、2コ用意していますーーこれは、(とくにサーバ上では)アルゴリズムやハイパーパラメタごとに、一度に複数の学習をさせる可能性があるためです(1コのコンテナ上で複数のプロセスを実行してもいいのですが、コンテナごとに分けて実行する方が、内部状態を個別に計測できるという利点もあるので)。[※1]
- ※1
 - そもそもコンテナを使うのは、どのOSでも(サーバでもパソコンでも)同じように設置できる、という利点があるからです。じっさい、検証した環境はOSもプロセッサも異なりますが(パソコンは手元のmacOS (M1)、サーバはクラウド上のUbuntu (x86_64) )、細かい違い(フォルダの位置など)を除けば、どれもほぼ同じ手順になります。
 
学習させる場合
強化学習のフレームワークのパッケージをダウンロードします:[※1]
$ cd ${DIR_ML_AGENTS}
$ git clone --depth=1 --branch release_18 https://github.com/Unity-Technologies/ml-agents.git
コンテナの初期設定ファイルは、たとえば、次のようなものを使います(実行用も計測用も同じです):
FROM ubuntu:20.04 RUN apt -y update RUN apt -y upgrade RUN apt -y install python3.8 RUN ln -s /usr/bin/python3.8 /usr/bin/python RUN apt -y install pip
コンテナを設置します:
$ docker build -t ubuntu:vir113 ${DIR_DOCKER_FILE}/ # 設置:フレームワーク用
$ docker build -t ubuntu:vir114 ${DIR_DOCKER_FILE}/ # 設置:モニタ用
$ docker commit vir113 ubuntu:vir113 # 設置:フレームワーク用(フレームワークを設置したあと、コミットする場合)
コンテナを起動します:
$ docker run -it --rm -p 5004:5004 --mount type=bind,src=${DIR_ML_AGENTS}/ml-agents,dst=/opt/ml-agents --name vir113 ubuntu:vir113 # 利用:フレームワーク用
$ docker run -it --rm -p 6006:6006 --mount type=bind,src=${DIR_ML_AGENTS}/ml-agents,dst=/opt/ml-agents --name vir114 ubuntu:vir114 # 利用:モニタ用
コンテナ上で、強化学習のフレームワークを設置します:
$ cd /opt/ml-agents $ pip install -e ./ml-agents-envs $ pip install -e ./ml-agents
監視用のコンテナでは、「tensorboard 」を次のように起動します(引数「--bind_all」を指定することで、コンテナ上のポートと通信できるようになります):
$ cd /opt/ml-agents $ tensorboard --bind_all --logdir results
Unity 側では、プロジェクトに次を指定します。ここには(サンプルをふくむ)強化学習用のライブラリ一式が設置されていて、すぐに使える状態になっています:[※2]
- ・
 - ${DIR_ML_AGENTS}/ml-agents/Project
 
監視画面にアクセスするには、ウェブブラウザ(Chrome限定)で、次のアドレスを指定します:
- ・
 - http://localhost:6006/
 
- ※1
 - 開発者ではなく、ただ利用者としてパッケージを使う場合は、コミットも最新のものしか必要ありません(--depth 1 )。ダウンロードに時間がかかる場合は、このような指定も有効です。
 
- ※2
 - この環境でキャラクタにアニメーションをさせたい場合(VRM 関連のパッケージを追加する場合なども)は、次のパッケージを追加しておく必要があります:
 
- ・
 - com.unity.modules.animation
 
再生だけする場合
学習後に、他のプロジェクトに、訓練したキャラクタと最低限の環境を追加したい場合は、Unity 側で次のパッケージを取得します:[※1][※2]
- ・
 - com.unity.ml-agents
 
ただしここにサンプルはふくまれないので、必要なら、上記の「学習させる場合」で設置したプロジェクトから適宜コピーします。
- ※1
 - このケースでは、(Pythonの環境は使わないので)コンテナなども不要です(必要なのは、Unity 標準の3D向けのプロジェクトだけです)。
 
- ※2
 - たとえば、すでに用意しているVR向けのプロジェクトで、学習を終えたキャラクタを動かしたい場合、など。
 
