Evolution Gymで「仮想生物」を進化させる方法
Evolution Gymとは
人工生命関係のプログラムであるEvolution GymをLinuxで動かす方法を書きます。
人工生命が何かとか、Evolution Gymが何かは、以下の書籍やnoteを参照ください。
上記のnoteや、noteの記事中で紹介されているEvolution Gymのチュートリアルを読めば、動かし方は分かるのですが、例によって色々ハマったので動かし方をメモ代わりに書いておきます。
Linux機があるから、ちょっと試してみたい人。Evolution Gymに興味あって、なんとか動かしてみたいという人の参考になれば幸いです。
Evolution Gymの動かし方
環境はLinux機です。GPUは使っていません。PCのスペック詳細とセットアップに関して確認したい方は、以下記事参照ください。
ちなみに、環境はGoogle Colaboratory(Google Colab)とMacbook Air(Apple Silicon)も試しましたが、早々に諦めました。Windows(WSL2)なら、動くかもしれません。
セットアップ方法
仮想環境としてpyenvを使いました。以下記事参照ください。
pyenvインストールしたら、以下コマンドを実行して環境構築します。
$ pyenv virtualenv 3.8.12 evogym
$ pyenv global 3.8.12/envs/evogym
$ sudo apt update
$ sudo apt install -y xorg-dev libglu1-mesa-dev
$ cd && git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git
$ cd evogym
$ sed -e s/git:/https:/g requirements.txt > requirements_tmp.txt
$ cp requirements_tmp.txt requirements.txt
$ python3 -m pip install -r requirements.txt
$ python setup.py install
私の環境(NVIDIA RTX3060)では、CUDAのバージョンの関係でPyTorchがうまく動かなかったので、以下の通りpyTorchのCPU版をインストールしなおしました。必要に応じて、実行ください。
$ python3 -m pip uninstall torch torchvision torchaudio
$ python3 -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
動作確認
以下コマンドでテストできます。
$ cd ~/evogym/examples
$ python3 gym_test.py
以下のようにウィンドウが表示されて、仮想生命体が動き出したらOKです。
Evolution Gymの学習
動作確認したディレクトリと同じ場所で、以下コマンドを実行するとGAで学習します。
$ python3 run_ga.py --env-name "Walker-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 4 --num-steps 128 --num-mini-batch 4 --log-interval 100 --use-linear-lr-decay --entropy-coef 0.01 --eval-interval 50
上記パラメータは、冒頭で紹介したnoteの記事中のコマンドを使わさせていただいています。
学習が終わったら以下コマンドでアニメGIFファイルを作成します。
$ python3 make_gifs.py
実行が完了すると、以下のディレクトリにアニメGIFが格納されています。
saved_data/all_media/test_ga/
その他
ステージ変更等、色々できそうです。調査中ですので、また随時追記していきます。
まとめ
Evolution Gym、手軽に遺伝的アルゴリズムで謎の生命体(仮想生物)を作れて楽しいですね。
色々試してみたいと思います。
関連記事
Author And Source
この問題について(Evolution Gymで「仮想生物」を進化させる方法), 我々は、より多くの情報をここで見つけました https://zenn.dev/karaage0703/articles/8e2ee3eb49a96c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol