最近、Isaac gymというツールの存在を知って使用する機会が増えたが、使う人が少ないのか記事自体も少なくて結構困ったので、自分の経験を元にいろいろまとめてみる。
NVIDIAの強化学習用の物理シミュレーション環境である。 他のGym環境と違い、シミュレーションをGPUで実行し結果をCPUメモリにコピーすることなくGPUテンソルに保存することができる。また、これらの結果にアクセスするためのテンソルベースのAPIが提供されているため、強化学習の観測と報酬の計算をGPUでできる。これにより学習の高速化が図れる。 URDF・MJCFファイルをインポートすることができるため
https://developer.nvidia.com/isaac-gym からIsaac gymをダウンロードする。
Gymを設定すると依存関係であるnumpyやPyTorchなどのPythonパッケージが全て自動的にインストールされる。既存の環境を破壊しないためにも、新たに仮想環境を作成してインストールすることをおすすめする。以下を参考にするといい。
$ conda create -n rlgpu python==3.7
$ conda activate rlgpu
$ conda deactivate
isaacgym内のpythonディレクトリに移動し、依存関係のパッケージを以下のコマンドでインストール。仮想環境にインストールする場合は実行前に仮想環境のアクティベートを行う。
$ pip install -e .
このサイトからクローンする。次のコマンドを実行。
$ git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git
$ pip install -e .
このパッケージには、予め環境やPPOのアルゴリズム等が実装されている。 実装されている環境は、
である。 学習をする際は/IsaacGymEnvs/isaacgymenvs次のコマンドを実行。 hogehogeには上記の環境名を入力。
$ python3 train.py task=hogehoge
ヘッドレスで実行する場合は次のコマンドを実行する。 シミュレーションをGUI表示しないため、学習の実行速度を上げることができる。
$ python3 train.py task=hogehoge headless=True
学習中は/run/hogehoge/nnに定期的に学習モデルが保存される。途中で学習を停止させて、再度実行する場合は次のコマンドを実行する。hogehogeは環境名に置換。
$ python3 train.py task=hogehoge checkpoint=runs/hogehoge/nn/hogehoge.pth
学習済モデルの推論のみの実行は次のコマンドを実行。
$ python train.py task=hogehoge checkpoint=runs/hogehoge/nn/hogehoge.pth test=True
今回は環境の構築、サンプルの実行についてまとめた。 なんでか日本語の記事がググった感じゼロで触りづらさはあるかもしれないが、結構使いやすかったのでロボティクスx強化学習等の分野の方は是非使ってみてほしい。