WindowsでOpenSpiel (DeedMindの強化学習ライブラリ)を動かす方法 (WSL: Ubuntu18.04.5 LTS)

はじめに

今回はWindowsでOpenSpiel (DeedMindの強化学習ライブラリ) を動かそうとしたところ,つまってしまったので,その環境構築手順と解決策をまとめます.

環境

Windows 10

WSL: Ubuntu18.04.5LTS

conda 4.8.3 (Miniconda)

OpenSpiel

OpenSpielはDeepMindが提供している(深層)強化学習ライブラリです.

DeepMindGoogle傘下の人工知能開発企業で,開発したプログラムの中でも,人間のプロ囲碁棋に勝利したAlphaGoがよく知られています.

OpenSpielには様々な強化学習アルゴリズムが実装されており,とても参考になります.

今回はこのOpenSpielの環境構築の方法を紹介します.

github.com

Windows Subsystem for Linux(WSL)

プログラムにはWindows上では動作しないものがあります. そのときに,活躍するのがWindows Subsystem for Linux (WSL) です. WSLは簡単にいうと,Windows上でLinuxを動かすことのできる便利なツールです.

WSLのインストールについて以下の記事がおすすめです. この記事ではUbuntu 20.04 LTSを選択していますが,この記事で用いているのはUbuntu 18.04 LTSなので注意してください (通常のインストール・使用にはなんの問題もありません).

逆にこの時点でWSLをインストールしていない方は,Ubuntu 20.04 LTSをインストールすることをおすすめします.(Ubuntu 20.04 LTSのほうがOpenSpielのインストールが簡単です.)

WSL 2 のインストール,Ubuntu 20.04, 18.04 のインストールと利用

Anaconda (Miniconda)

Pythonに限らず多くのプログラムはライブラリのバージョンへ依存しています. そのため,自分の元のPython環境 (usr/bin/python) に直接ライブラリをインストールすると,あるプログラムは動くけど,あるプログラム動かないなどの問題が発生することがあります.

そこで用いられるのが仮想環境です. 環境ごとにインストールするライブラリやそのバージョンを指定することで,上記の問題を解決することができます. Pythonの仮想環境では,conda, virtualenv, venvなどが挙げられますが,今回はAnaconda (Miniconda) を用いた仮想環境の構築を紹介します. 1 (仮想環境は特になんでも大丈夫です)

環境構築は以下の記事を参考にしています.

Ubuntu 18.04上でminicondaを使う

minicondaのインストール方法

# minicondaのインストールに用いるシェルファイルをダウンロード
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# インストールを実行
$ bash Miniconda3-latest-Linux-x86_64.sh
# パスを通す (勝手に通っているときもある気がする)
$ ~/miniconda3/bin/conda init bash
$ source ~/.bashrc
# パスが通っているか確認
$ which conda

OpenSpielのインストール方法

基本的には公式がインストール方法を紹介してくれているので,それに従ってインストールを行います.

https://github.com/deepmind/open_spiel/blob/master/docs/install.md

Ubuntuに必要なパッケージをインストール

./install.sh

仮想環境の構築

公式ではvirtualenvを使用していますが,今回は先ほどインストールしたcondaを用いて仮想環境を構築します.

# 環境の作成 環境名(OpenSpielの部分)はなんでも大丈夫です.pythonは3.7以上を使用しましょう
$ conda create -n OpenSpiel python=3.7
# 仮想環境を有効にする
$ conda activate OpenSpiel

pipのアップグレード

公式通り

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# Install pip deps as your user. Do not use the system's pip.
$ python3 get-pip.py
$ pip3 install --upgrade pip
$ pip3 install --upgrade setuptools testresources

pythonライブラリのインストール

$ pip3 install -r requirements.txt

はまったところ (Ubuntu 18.04 LTS)

OpenSpileはpythonだけでなくC++(C?) を用いたライブラリなので,そのコンパイルをする必要があります. しかし,コマンドを実行するとコンパイルエラーが発生しうまくビルドすることができませんでした.(Ubuntu 20.04 LTSではこの問題は発生しませんでした.)

$ ./open_spiel/scripts/build_and_run_tests.sh

エラー内容

error: explicit specialization of 'value' in class scope
  int value() const {
      
~中略~

Makefile:94: recipe for target 'all' failed
make: *** [all] Error 2

これを調べてみるとコンパイラのバージョンが古いことが問題だったようなので,アップデートを行います. 以下のissueで似たようなことが起こっていたので,それを参考にしています.

https://github.com/deepmind/open_spiel/issues/321

コンパイラのインストールと変更

$ apt-get install clang-10
# clang++ をclang-10に置き換える
$ sudo ln -s -f $(which clang-10) /usr/bin/clang++

再びコマンドを実行すると無事ビルドが成功しました.(テストがなぜが1つ通りませんが問題なく動作します)

$ ./open_spiel/scripts/build_and_run_tests.sh

python pathを通す

最後にプロジェクトのパスを通して終了です.

.bashrcに以下を追記します.

# /<path_to_open_spiel>はopen_spielのディレクトリパス
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>/build/python

WSLを再起動するとOpenSpielが使用できるようになります. 適当な例を動かしてみましょう. この時,仮想環境の起動を忘れないように注意してください.

最後に

今回はDeepMind社の強化学習ライブラリOpenSpielのWindowsにおける環境構築について紹介しました. 環境構築には私もよく苦労するので,少しでも皆さんの助けになればと思います.


  1. これは経験則ですが,condaの仮想環境でパッケージをインストールするときはpipコマンドを用いることを強くおすすめします.condaコマンドでインストールすると環境が汚くなる場合があります.特にpip, condaコマンドは混ぜるな危険です.condaをどうしても使用しなければいけない場合でも,その時はcondaコマンドだけを使うようにしましょう.