0
1

初めに

そもそもIsaac Gymとは?

Isaac GymはNVIDIAが出してるロボット開発向けの強化学習シミュレーション環境になります

最近サポート対応外になってしまったのですが代わりに出たIsaac Labは参考文献が無さすぎる上にインストール時のトラブルシューティングがめちゃくちゃ多くて複雑なのでユーザーの参考文献が出回るまではIsaac Gymを使うことを勧めます

Isaac Gymのここがすごい

  1. GPUベースシミュレーション
    • 従来のCPUベースシミュレーション(MuJoCoなど)に比べてかなり高速化
  2. 高精度な物理エンジン
    • NVIDIA PhysXというUnreal EngineやUnityにも使われてる強力な物理エンジンを積んでます
  3. 並列処理
    • 複数のエージェント(ロボット)を同時に動かして学習させれます

54f5f2bb-345e-482b-a8b0-36f9a4b3b233.jpg

ANYmal Parkour: Learning Agile Navigation for Quadrupedal Robots, Robotic Systems Lab: legged Robotics at ETH Zurich より引用

環境構築

環境

OS Ubuntu 20.04 LTS
Python Version 3.7
GPU RTX4070 12GB VRAM
CUDA Version 12.1

インストール

Isaac Gymから圧縮ファイルをダウンロード:

Screenshot from 2024-06-14 15-53-35.png

圧縮ファイルを解凍:

tar xf IsaacGym_Preview_4_Package.tar.gz

Isaac Gymのインストール (conda環境もrlgpuって名前で作ってくれます):

cd isaacgym
./create_conda_env_rlgpu.sh 

インストールは以上になります(超シンプル)

サンプルで検証

まずは仮想環境を起動:

conda activate rlgpu

関節のアニメーションを再生するサンプル(joints_monkey.py)を実行:

cd python/examples
python3 joints_monkey.py

Screenshot from 2024-06-15 17-34-03.png

ついでに同じディレクトリ内にあるFrankaのサンプルも試してみました:

Screenshot from 2024-06-15 17-33-12.png

次は実際に学習させていきます

学習サンプルリポジトリをgit clone:

git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git

インストール:

cd IsaacGymEnvs
pip install -e .

倒立振子のサンプルを実行:

cd isaacgymenvs
python3 train.py task=Cartpole

Screenshot from 2024-06-15 17-36-19.png

初めはすぐに倒れますが、並列処理のおかげでめちゃくちゃ早く学習できてるのが分かりますね。

トラブルシューティング

libpythonのimportエラー

エラー文:

ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

解決策 - 対応するlibpythonライブラリ(今回の場合はlibpython3.7)をインストール

sudo apt install libpython3.7

libpython3.Xが見つからない場合:

E: Unable to locate package libpython3.7
E: Couldn't find any package by glob 'libpython3.7'

解決策 - deadsnakes PPAを追加:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

iJIT (intel Just-In-Time) コンパイラ関連の問題でPyTorchがimportできない

エラー文:

UserWarning: Future Hydra versions will no longer change working directory at job runtime by default.
See https://hydra.cc/docs/1.2/upgrades/1.1_to_1.2/changes_to_job_working_dir/ for more information.
...
from torch._C import *
ImportError: /home/user/miniforge3/envs/rlgpu/lib/python3.7/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent

Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.

解決策 - Intel MKL (math Kernal Library)をダウングレード:

pip install mkl==2024.0.0

TorchScriptのnvrtcに無効なGPUアーキテクチャが渡される

エラー文:

RuntimeError: The following operation failed in the TorchScript interpreter.
Traceback of TorchScript (most recent call last):
RuntimeError: nvrtc: error: invalid value for --gpu-architecture (-arch)

解決策 - デバイスに入ってるCUDAに対応したPyTorchバージョンに変更

nvidia-smi # CUDAバージョンの確認
pip install torch==1.13.1 # 自分の場合CUDA 12.1なのでtorch 1.8.1 -> 1.13.1にアップグレード

参考文献

https://www.youtube.com/watch?v=PjWvf90l4cg
https://valinux.hatenablog.com/entry/20231122
https://github.com/pytorch/pytorch/issues/123097?source=post_page-----8ebf4b86e6f7--------------------------------#issuecomment-2095228569

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1