Mac上でベイズ最適化できる環境を作る
実験の条件検討において、複数のパラメータを最適化する必要があるとき、一つ一つのパラメータを個別に最適化していくと、膨大な時間と労力がかかります。こうした課題に対して、複数のパラメータを一気に最適化する手法としてベイズ最適化が便利です。ベイズ最適化が手軽にできるPythonモジュールとして便利なのがGPyOptです。ただ、GPyOptは開発が停止しており、最新のPythonでは動きません (numpyの新しいバージョンに対応していない)。以前にMac上でAnacondaを使う環境構築を紹介しましたが、情報が古くなってきたので、今回はAnacondaを使用せず、Mac上に複数のPythonの実行環境を構築し、GPyOptを利用できる環境を整える方法を紹介します。
あらかじめ入れておくもの
Homebrew, iTerm2 (通常のターミナルでも可)をあらかじめインストールしておきます。
Mac (Apple Silicon) で化学をする環境を作ろう! 早くて安いと評判のApple Silicon搭載Macにて、便利なパッケージ管理システムであるHomebrewを使って化学をする環境を構築する手法を紹介したいと思います。[…]
pyenv, pyenv-virtualenvのインストール
まず、iTerm2 (あるいはターミナル) から Homebrew を使って pyenv とpyenv-virtualenv をインストールします。
$ brew update
$ brew upgrade
$ brew install pyenv pyenv-virtualenv
~/.zshrcの中にに下記を追加します。一番下あたりがよいと思います。bashを使っている人は .bashrc に書きます。
# pyenv
PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init - zsh)"
# eval "$(pyenv init -)" # bashを使っている人は、上の行を削除してこちらの # を削除
eval "$(pyenv virtualenv-init -)"
# brew doctor 対策
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.pyenv\/shims:/} brew"
.zshrc を保存したら、iterm2 (あるいはターミナル)にて、.zshrc (あるいは .bashrc)の設定を読み込みます。
$ source .zshrc
$ source .bashrc # bashの人はこちら
pyenv を用いた python のインストール
次に pyenv でインストールできる python を探します。iterm2 (あるいはターミナル)で下記コマンドを入力します。
$ pyenv install --list
インストール可能なpythonのバージョン一覧がでてきます。このなかから、3.8.13をインストールします。
$ pyenv install 3.8.13
仮想環境の構築
python 3.8.13 をインストールできたら、仮想環境を作成します。ここでは py3.8 という仮想環境を作るとします。
※Pythonは作業ごとに最適となる環境 (モジュールの種類やバージョンなど)が異なるので、作業によって仮想環境を構築してつかいわけて作業するのが主流です。
下記コマンドで仮想環境 py3.8 が作成されます。
$ pyenv virtualenv 3.8.13 py3.8
次にpythonの切り替えを行います。python作業フォルダ(ここではpy-testとします)のみ、仮想環境 py3.8 に切り替わるように設定します。まず、テストフォルダ py-test を作成し、そのフォルダのpythonが何かを確認します。
$ mkdir ~/Documents/py-test #作業フォルダpy-testの作成
$ cd ~/Documents/py-test #py-testフォルダに移動
$ pyenv versions
この段階では、system の(Macに元々入ってる) python が適用されています。そこで、下記コマンドでは python を切り替えます。
$ pyenv local py3.8 #py-testフォルダのみ、py3.8に切り替わる
$ pyenv versions
python が切り替わるとコマンドプロンプトの前に (py3.8) と表示されます。また、pyenv versions と入力すると、py3.8の前に*がついています。これでこのフォルダでのpythonが仮想環境py3.8に切り替わっていることが確認できます。次から特に設定しなくても、このフォルダでのpython環境は自動的にpy3.8になります。
pyenv の挙動がおかしいときは下記コマンドを入力して、pyenv を rehash してからもう一度作業してみて下さい。
$ pyenv rehash #pyenvの挙動がおかしいときに入力
各種モジュールのインストール
python の各モジュールは pip コマンドでインストールします。
$ pip install scipy numpy pandas jupyter jupyterlab
matplotlib をインストールします。
$ pip install matplotlib
scikit-learn をインストールします。
$ pip install scikit-learn
GPyとGpyOptをインストールします。
$ pip install gpy gpyopt
numpyをダウングレードします。
$ pip install "numpy<1.24"
その他要るものをインストールします。この辺は臨機応変です。これにて設定終了です。
Python を使う
Jupyter Lab の起動
Python の作業は Jupyter Lab の上で行います。Jupyter Lab を起動する時は作業フォルダで jupyter lab と入力すると起動します。
$ cd Documents/py-test
$ jupyter lab
別のフォルダで新たに作業をするとき
別のフォルダで新たに仮想環境py3.8で作業を始めたいときは、作業したいフォルダにcdコマンドで移動して、pyenvでpythonを切り替えて、jupyter labを起動します。例えば、ドキュメントフォルダにあるpy-mlというフォルダでpython 3.8を使いたいときは、下記のようにします。
$ cd ~/Documents/py-ml
$ pyenv local py3.8 #←これは一度やればOKです。次回からフォルダpy-mlでは自動的に仮想環境py3.8が適用されます。
$ jupyter lab