Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Isaac Lab での強化学習用のタスクシーンを設計したい。 #2

Open
HirakiWataru-721 opened this issue Nov 28, 2024 · 6 comments

Comments

@HirakiWataru-721
Copy link

こんにちは。
Isaac Lab でToroboのモデルを導入して、オリジナルのタスクシーン(例えば、Toroboとキューブを配置した空間)を設計し、強化学習させてポリシー(例えば、Toroboにキューブを持ち上げてもらうなど)を獲得させたいのですが、タスクシーンの設計に行き詰まっています。現在のToroboの設定は以下の添付画像のようになっております。
Screenshot from 2024-11-28 14-40-47
Screenshot from 2024-11-28 14-41-04
もしよろしければ、Isaac Lab でToroboを訓練させるための詳細な設定を教えてくださると幸いです。
よろしくお願いいたします。

@mamoruoka
Copy link
Collaborator

mamoruoka commented Dec 6, 2024

@HirakiWataru-721
返信遅くなり申し訳ございません(通知が来ず気づきませんでした)。
週明けに回答させていただきます。

@mamoruoka
Copy link
Collaborator

mamoruoka commented Dec 9, 2024

@HirakiWataru-721
添付されているToroboの設定に一見悪いところは見当たらなかったのですが、具体的にどのように行き詰まっていますか?
想定されるのは

  • 学習を実行するとエラーが出る
  • エラーは出ないが、シーンが意図したとおりに構成されない
  • 学習は最後まで実行できるが、学習が成功しない

などがあると考えています。

また、もしよろしければ実装されているファイルをアップロードしていただけると、こちらとしても検証がしやすいと思います。

@mamoruoka
Copy link
Collaborator

@HirakiWataru-721
Toroboでの強化学習はまだ実装していないのですが、最近公開したtorobo_isaac_labに下半身モデルの設定方法(exts/torobo_isaac_lab/torobo_isaac_lab/assets/leg_v1.py)が書いてあるので、参考にしていただけると幸いです。

@HirakiWataru-721
Copy link
Author

@mamoruoka
ご返信ありがとうございます。現在、Isaac LabでEurekaと呼ばれる報酬関数をLLMに生成させ、強化学習を行う手法をToroboで行いたいと考え、実験を進めております。

タスクの内容としては、Toroboとキューブを空間に配置し、Toroboがキューブを拾い上げるといったものを想定しているのですが、Isaac Labで強化学習を実施したことがなく、環境設定が正しいのか間違っているのか今ひとつわからないまま、手探りで進めております...

現時点での環境設定は添付しているtorobo_pickup_envというファイルの通りで、Eurekaのtrain.pyは実行できているのですが、学習が成功していないようです...その実行した際のログは同じく添付したeureka_log_12_2(冒頭にOpenAIのAPIキーが映ってしまっているためその部分のみ削除しております。)の通りになります。
強化学習のための環境設定について何かご教示いただけませんでしょうか。よろしくお願いいたします。

torobo_pickup_env.txt
eureka_log_12_2.txt

@mamoruoka
Copy link
Collaborator

@HirakiWataru-721

File "/home/k_iwamoto/anaconda3/envs/isaaclab/lib/python3.10/site-packages/rl_games/common/a2c_common.py", line 249, in init
assert(self.batch_size % self.minibatch_size == 0)

こちらのエラーですが、だいたいはbatch_sizeが小さすぎることによって起こるエラーです。
batch_size = num_envs * horizon_lengthで計算され、minibatch_sizeはだいたい8192や16384などの値かと思います。
こちらの環境では
学習時は num_envs = 8192, horizon_length = 16, minibatch_size = 16384
推論時は num_envs = 4, horizon_length = 16384, minibatch_size = 16384
で行っているので参考にしてみてください。
horizon_lengthとminibatch_sizeはPPOのconfigファイル内に存在し、minibatch_sizeはいじる必要はないと思います。
学習時にGPUのメモリエラーで落ちるときはnum_envsを半分、horizon_lengthを2倍にするということを繰り返して調整してください。

@HirakiWataru-721
Copy link
Author

@mamoruoka
ご返信ありがとうございます。
コメントしていただいた内容をもとに、ひとまず提示していただいた学習時の環境設定からスタートして、その後適宜調整を加えていきたいと思います。

2024-12-02 05:30:52 [3,486ms] [Warning] [omni.physx.plugin] PhysicsUSD: CreateJoint - found a joint with disjointed body transforms, the simulation will most likely snap objects together: /World/envs/env_0/Robot/root_joint

こちらの警告文に関してはいかがでしょうか?ご意見いただけますと幸いです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants