KaggleでGoogle Research Football with Manchester City F.C.で使われているGoogle Research Football Environment(GRF)のDockerバージョンをセットアップしてみます。
当初はJetson Nano(Jetpack)にプレセットされているDockerを使ってみるつもりでしたが、調べてみたらGRFはx86_64(amd64)のアーキテクチャーしかサポートしていなかったので却下。
DockerのマルチCPUアーキテクチャを使えばDocker Desktop for WindowsでUbuntu/arm64のイメージを作ることができるかもしれません、やったことないけど….。
Docker Desktop for WindowsをインストールするとVirtualBoxと共存させるのは厄介です。
Windows の VirtualBox と Hyper-V についてをご参照ください
他にMacOSもサポートされていますが、管理人はMacを持っていない。
で結局、Windows 10 (64Bit) + VirtualBox + Ubuntu 18.04 LTS にセットアップすることにしました。
(Ubuntu を USBメモリーからブートするようにすればメモリをもう少しかせげるかも、ただ、18.04LTSでやってみましたが最終インストーラーがクラッシュしたので諦めました。Docker Desktop for Windows + Ubuntu 18.04 LTS の環境でもやってみます)
Ububtu上のGoogle Football (gfootball)はこんな感じです。
管理人の古いPC(Intel Core i3-2100 3.1GHz RAM 4GB)ではカクカクしています。これ以上のスペックが必要です(最新のPCなら問題なし?)。できればNVIDIAのGPUが積んであれば申し分なしですが、無くても(一応)動きます。それにDockerをrunさせるとサウンドカードも要求されますが、無くても問題ありません。
まともな環境なら、こんな感じ。
1:Windows 10 (64Bit)にVirtualBoxをインストールしておきます。
Oracleのサイトからダウンロードしてセットアップしておきましょう。最新版はVer 6ですが、試してみたのは少し古い5.2版でした。たぶんどっちでもいいと思います。
注:
ただし、Hyper-Vと共存させようとするとやっかいです。
Windows の VirtualBox と Hyper-V についてをご参照ください
2:VirtualBoxにUbuntu 18.04 LTSをセットアップします。
GFootball環境をセットアップする場合、仮想ディスクのサイズは10GB以上(15GBくらい)を確保しておいてください。
このページをご参照ください。
3:Ubuntu 18.04 LTSにDockerをセットアップ
このページをご参照ください(16.04の環境でやってますが、手順は同じです)。
4:Ubuntu 18.04 LTSにTensorFlowをインストールしておきます。
1.前提条件やら依存関係をインストール
1 |
sudo apt-get update |
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
1 2 3 |
sudo apt-get install python3-pip sudo pip3 install -U pip testresources setuptools==49.6.0 |
sudo pip3 install -U numpy==1.16.1 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
2.TensorFlowをインストール
NVIDIAからお借りします。最新は2ですが、Dockerで使っているのは1.5.*のようなので以下のようにします。
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 'tensorflow<2'
5:Dockerを使ってUbuntu 18.04 LTS にGoogle Research Football Environment をセットアップ
google-research / football を参照
In order to build Docker image you have to checkout GFootball git repository first:
Dockerイメージをビルドするには、最初にGFootball gitリポジトリをチェックアウトする必要があります。
1 |
git clone https://github.com/google-research/football.git |
1 |
cd football |
CPU version
近頃のDockerはNVIDIA GPU が使えるようですが、管理人のPCにはそんなGPUは積んでないのでCPU版を使ってみます。
以下の実行にはびっくりするくらい時間がかかります、ゆっくり構えてください(とりあえず、sudo で実行します)。
Tensorflow without GPU-training support version
sudo docker build --build-arg DOCKER_BASE=ubuntu:18.04 --build-arg DEVICE=cpu . -t gfootball
もしGPUをお持ちならここ参照
DockerをRunさせる前にX Window Server に接続しておきます。
1 |
sudo xhost +si:localuser:root |
Enter the image
Start the Docker image
1 |
sudo docker run -e DISPLAY=$DISPLAY -it -v /tmp/.X11-unix:/tmp/.X11-unix:rw gfootball bash |
Inside the Docker image you can interact with the environment the same way as in case of local installation. For example, to play the game yourself you can run:
Dockerイメージ内では、ローカルインストールの場合と同じ方法で(Googleの)環境と対話できます。 たとえば、自分でゲームをプレイするには、次のコマンドを実行できます。
Run environment
1 |
python3 -m gfootball.play_game --action_set=full |
GFootballが起動します。
サウンドカードが設定されていないとALSAのエラー表示が出ますが、気にしない。
初期画面(興味深い対戦になっています^^クラシコ?)
しばらくすると、スタートします
Container ID を取得しておく
Container IDを控えておくと、後々再ビルドせずにContainerを再起動できます。
別ターミナルを開いて
1 |
sudo docker container ls |
起動する場合
1 |
sudo xhost +si:localuser:root |
1 |
sudo docker start -i CONTAINER_ID |
Container IDは外部(host)ファイルをContainer 内のフォルダーにコピーしたりする場合にも使えます。
1 |
sudo docker cp XXX CONTAINER_ID:/YYY |
Training agents to play GRF(GRFをプレイするためエージェントをトレーニング)
Run training(トレーニングを実行)
以下の2つをインストールしておきます。
●Sonnet: sudo pip3 install dm-sonnet==1.*
●OpenAI Baselines: sudo pip3 install git+https://github.com/openai/baselines.git@master
To run example PPO experiment on academy_empty_goal scenario
academy_empty_goalシナリオでサンプルのPPO(強化学習アルゴリズム)を試してみる
1 |
python3 -m gfootball.examples.run_ppo2 --level=academy_empty_goal_close |
To run on academy_pass_and_shoot_with_keeper scenario
academy_pass_and_shoot_with_keeperシナリオで実行するには
1 |
python3 -m gfootball.examples.run_ppo2 --level=academy_pass_and_shoot_with_keeper |
In order to train with nice replays being saved
いいリプレイを保存してトレーニングするために
1 |
python3 -m gfootball.examples.run_ppo2 --dump_full_episodes=True --render=True |
In order to reproduce PPO results from the paper, please refer to:
論文からPPOの結果を再現するには、以下を参照してください。
●gfootball/examples/repro_checkpoint_easy.sh
●gfootball/examples/repro_scoring_easy.sh
管理人のプアなPCではトレーニングがいつ終わるのか想像もつかないので、新しいPCを導入するまでは中断….。
ん?トレーニングはColabでやればいいのかな?
Playing the game
とりあえずゲームをしてみましょう。
Google Research Football の環境でゲームをしてみる
Appendix
新しい強化学習環境
Introducing Google Research Football: A Novel Reinforcement Learning Environment
Appendix2
GPU Version
Tensorflow with GPU-training support version
1 |
docker build --build-arg DOCKER_BASE=tensorflow/tensorflow:1.15.2-gpu-py3 --build-arg DEVICE=gpu . -t gfootball |
Start the Docker image
1 |
docker run --gpus all -e DISPLAY=$DISPLAY -it -v /tmp/.X11-unix:/tmp/.X11-unix:rw gfootball bash |
If you get errors related to --gpus all
flag, you can replace it with --device /dev/dri/[X]
adding this flag for every file in the /dev/dri/
directory. It makes sure that GPU is visibile inside the Docker image. You can also drop it altogether (environment will try to perform software rendering).
Run environment
1 |
python3 -m gfootball.play_game --action_set=full |
Leave a Reply