初めに
O’Reilly Japanの「Pythonではじめるオープンエンドな進化的アルゴリズム」を研究室で読み進めていましたが、本書で提示されている手順ではMacbook Pro(M5)に環境構築ができませんでした。試行錯誤して本書で想定されている環境が構築できたため、こちらに書き残しておきます。
問題が発生した環境
機種 : MacBook Pro(M5)
OS : macOS Tahoe 26.4
Anaconda : 26.1.1
PythonとAnacondaのインストール方法
本書で割愛されているこれらのインストール方法ですが、それぞれ公式サイトからGUIでインストールを行いました。一応参考にしたサイトを記載するので、適宜参照してください。
環境構築ができない原因
本書の環境構築では、Evolution Gymというプラットフォームを用いているのですが、このEvolution GymがApple Siliconに対応していないために問題が発生しています。
本書のサポートページにて、「プラットフォームによってはエラーが出ることがあります。その際は、こちらのリポジトリに追加の修正を加えたコードを準備しましたので、こちらをお使いください。」との記載がありますが、こちらでも解決できなかったため、おそらくApple Silicon対応ではないかと思われます。
これらに加えて、過去の記事でTerminalをRossetaモードで実行することで解決を図っているものがありますが、今回はenvironment.ymlをApple siliconに対応させる方向で環境構築をしていきます。
手順1
ひとまず本書の指示通り、Evolution Gymからファイル一式をダウンロードします。
brew install cmake glfw
git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git
cd evogym
このあと、ファイル一式の中にあるenvironment.ymlというファイルで仮想環境を作成するのですが、現状の環境設定ではApple Siliconに適していないためエラーが発生します。そのためエディタでevogym/environment.ymlを開き、以下のコードに書き換えます。
name: evogym
channels:
- conda-forge #conda-forgeチャンネルを優先
- defaults
dependencies:
- python=3.8.11 #Apple Siliconに対応する最低バージョン
- openssl #通信の暗号化ライブラリ
- numpy==1.21.5 #conda-forge経由に変更
- h5py==3.6.0 #conda-forge経由に変更
- libffi=3.3 #Apple Siliconの動作に必要なため追加
- pip
- pip:
- glfw==2.5.0
- gpy==1.10.0
- git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370
- gym==0.22.0
- imageio==2.14.1
- matplotlib==3.5.1
- git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904
- opencv-python==4.5.5.64
- pillow==9.0.0
- pybind11==2.9.0
- pygifsicle==1.0.5
- pyopengl==3.1.5
- pyopengl-accelerate==3.1.5
- torch==1.10.2
- ttkbootstrap==1.5.1
- typing==3.7.4.3
変更点
- PythonをApple Siliconに対応している最低バージョンに変更
- Apple Siliconにおいて稀に通信関連のエラーが発生したため、通信の暗号化ライブラリを追加
- pipインストールではエラーが出るため、
h5pyやnumpyなどをpip経由ではなく、conda-forgeからインストールするように変更 - Apple Siliconで
pandas等を動かすために必要なため、libffiをconda-forgeからあらかじめインストール
手順2
全て変更し終わったら、本書の指示通り以下を実行し仮想環境を作成します。
conda env create -f environment.yml
conda activate evogym
こちらでエラーが発生しなければ、ひとまずApple Silicon向けのEvolution Gymの環境構築は完了です。
いくつかのエラーのようなものがでる可能性がありますが、新しいバージョンがあるというお知らせや、今回は使用しないライブラリとの競合の警告など直接動作に関係するものではないため、無視で大丈夫です。
手順3
環境構築が完了したため、次は本書のサンプルプログラムをダウンロードし、依存パッケージをインストールします。
git clone https://github.com/oreilly-japan/OpenEndedCodebook.git
cd OpenEndedCodebook
pip install -r requirements.txt
pip install --no-deps -r requirements-extra.txt
動作確認
上記のものが全て終わったら、Chapter2のサンプルプログラムを実行して動作確認をします。
cd experiments/Chapter2
python run_circuit_neat.py -p 50
エラーが起こらず本書に書かれている通りの動作になれば、Macbook Pro(M5)をはじめとするApple Siliconでの環境構築は完了です。ひとまずChapeter2までの動作確認をしているため、またChapeter3以降の動作で問題があれば追記したいと思います。
何か間違っている点などありましたら、お手数をおかけいたしますがお知らせいただけますと幸いです。
参考
- 「Pythonではじめるオープンエンドな進化的アルゴリズム」
- GitHub - oreilly-japan/OpenEndedCodebook
- Pythonではじめるオープンエンドな進化的アルゴリズム - 発散型の機械学習による多様な解の探索
そのほか、GeminiなどLLMを使って問題解決を行なっています。