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.前提条件やら依存関係をインストール
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
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リポジトリをチェックアウトする必要があります。
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 に接続しておきます。
Enter the image
Start the Docker image
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
GFootballが起動します。
サウンドカードが設定されていないとALSAのエラー表示が出ますが、気にしない。
初期画面(興味深い対戦になっています^^クラシコ?)
しばらくすると、スタートします
Container ID を取得しておく
Container IDを控えておくと、後々再ビルドせずにContainerを再起動できます。
別ターミナルを開いて
起動する場合
Container IDは外部(host)ファイルをContainer 内のフォルダーにコピーしたりする場合にも使えます。
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(強化学習アルゴリズム)を試してみる
To run on academy_pass_and_shoot_with_keeper scenario
academy_pass_and_shoot_with_keeperシナリオで実行するには
In order to train with nice replays being saved
いいリプレイを保存してトレーニングするために
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
Start the Docker image
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
Leave a Reply