【Python】深層強化学習が可能なPyBulletのインストール

【Python】深層強化学習が可能なPyBulletのインストール プログラミング

「Pythonで深層強化学習を試したい」
「PyBulletをWindowsで動かしたい」
「PyBulletのデモがエラーで動かない」

このような場合には、この記事が参考なるでしょう。

本記事の内容

  • PyBulletとは?
  • PyBulletのシステム要件
  • PyBulletのシステム要件(追加)
  • PyBulletのインストール
  • PyBulletの動作確認

それでは、上記に沿って解説していきます。

PyBulletとは?

PyBulletは、Bullet Physics SDKのPythonバインディングです。
Bulletとは、オープンソースの物理演算エンジンになります。

そして、Bullet Physics SDKはBulletの開発ツールキットということです。
Bullet Physics SDKは、ロボット工学、強化学習、VRで利用されています。

このBullet Physics SDKをPythonで操作するためには、PyBulletが必要になります。
つまり、PyBulletを使えば、Pythonで深層強化学習やロボットシミュレーションが実現できます。

PyBulletが、深層強化学習・ロボットシミュレーションの間口を広げていると言えますね。

以上、PyBulletの説明を行いました。
次は、PyBulletのシステム要件を確認します。

PyBulletのシステム要件

現時点(2021年8月)でのPyBulletの最新バージョンは、3.1.7となります。
この最新バージョンは、2021年5月8日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

また、サポート対象となるPythonのバージョンは以下。

  • Python 2.7
  • Python 3.4
  • Python 3.5
  • Python 3.6
  • Python 3.7
  • Python 3.8

これは、下記のPythonの公式開発サイクルとはかけ離れています。
もうPython 2.7は切り捨ててもいいと思いますけどね。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

ここまでが、公式に記載されているシステム要件です。

あと、PyBulletはC++のランタイムを必要とします。
Windowsの場合、PyBulletのインストールでエラーが出るのはこれが原因の可能性が高いです。

Microsoft Visual C++ のダウンロード
https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads

確かに、ここまでのシステム要件でPyBulletはインストールできます。

しかし、このシステム要件だけでは直ぐに行き詰ってしまいます。
以下は、公式に載っているインストール・動作確認のコマンドとなります。

pip3 install pybullet --upgrade --user 
python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may 
python3 -m pybullet_envs.examples.enjoy_TF_HumanoidFlagrunHarderBulletEnv_v1_2017jul 
python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt

上記に従って動作確認を行うと、エラーが出てしまいます。
そのため、以下で上記の動作確認がすべて行えるようにシステム要件を追加で説明します。

PyBulletのシステム要件(追加)

大きく分類すると、以下の3つが必要となります。

  • OpenAI Gym
  • TensorFlow
  • MPI

それぞれを下記で説明します。

OpenAI Gym

強化学習のために必要となります。
OpenAI Gymについては、次の記事で解説しています。

上記記事を参考にして、OpenAI Gymのインストールを行います。
インストールをしていないと、次のエラーが表示されます。

ModuleNotFoundError: No module named 'gym'

TensorFlow

「pybullet_envs.deep_mimic.testrl」が、TensorFlowを前提にしています。
このコードが、TensorFlow 1系でしか動きません。
TensorFlow 2系で試すと、次のエラーが出てきます。

ModuleNotFoundError: No module named 'tensorflow'

よって、TensorFlow 1系の最終となるTensorFlow 1.15をインストールします。
TensorFlow 1.15をインストールするためには、Python 3.7以前が必要です。

したがって、Python 3.7の環境を用意します。
そうしないと、動作確認を行うことができません。

TensorFlowのインストールは、以下の記事などを参考にしてください。

なお、検証では以下のPythonを利用しています。

>python -V 
Python 3.7.9

MPI

並列処理を行うために必要となります。
MPIについては、次の記事で説明しています。

上記の記事は、Windowsの場合です。
Linux(Ubuntu)の場合は、次の記事でまとめています。

MPIをインストールしておきます。
そして、mpi4pyもインストールします。
mpi4pyの詳細は、次の記事をご覧ください。

以上、PyBulletの追加のシステム要件を説明しました。
次は、PyBulletのインストールを行います。

PyBulletのインストール

まずは、現状のインストール済みパッケージを確認しておきます。
追加のシステム要件に関するライブラリはインストール済みです。

>pip list 
Package              Version 
-------------------- -------- 
absl-py              0.13.0 
astor                0.8.1 
cached-property      1.5.2 
cloudpickle          1.6.0 
gast                 0.2.2 
google-pasta         0.2.0 
grpcio               1.39.0 
gym                  0.19.0 
h5py                 3.3.0 
importlib-metadata   4.6.4 
Keras-Applications   1.0.8 
Keras-Preprocessing  1.1.2 
Markdown             3.3.4 
mpi4py               3.1.1 
numpy                1.21.2 
opt-einsum           3.3.0 
pip                  21.2.4 
protobuf             3.17.3 
setuptools           57.4.0 
six                  1.16.0 
tensorboard          1.15.0 
tensorflow-estimator 1.15.1 
tensorflow-gpu       1.15.0 
termcolor            1.1.0 
typing-extensions    3.10.0.0 
Werkzeug             2.0.1 
wheel                0.37.0 
wrapt                1.12.1 
zipp                 3.5.0

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、PyBulletのインストールです。
PyBulletのインストールは、以下のコマンドとなります。

pip install pybullet

インストールは、一瞬で終わります。
追加されたのは、次のパッケージのみです。

pybullet             3.1.7

以上、PyBulletのインストールについて説明しました。
最後は、PyBulletの動作確認を行います。

PyBulletの動作確認

動作確認には、以下のコマンドを実行しましょう。

python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt

実際には、以下のコマンドを実行。

python -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt

適切にPyBulletが動けば、次のように表示されます。

PyBulletによる強化学習の様子

コンソールには、次のような表示が行われます。

total_reward= 555.2943635546263 

バク転が上手く行けば、高報酬のようです。
失敗すれば、低報酬ということですね。

強化学習とは、こういうモノだと言えるような処理になります。

以上、PyBulletの動作確認の説明でした。

タイトルとURLをコピーしました