🚀

正月休みに 'Genesis' を試してみた(その1)

に公開

正月休みに "Genesis" を試してみた(その1)

2024年12月、Carnegie Mellon University (CMU) の研究チームが
ロボットシミュレーションOSS「Genesis」をリリースし、年の暮れにSNSが盛り上がっていました。
ロボット等の強化学習のための高速な環境構築を得意とする次世代の物理エンジンとして注目されています。
今回は、このGenesisをWSL2環境で試した際の経験や、環境構築で直面した課題について共有します。

Genesisとは?

Genesisは、物理エンジンを活用した高度なシミュレーションを可能にするオープンソースソフトウェアです。特に、柔軟構造物や計算負荷の高い物理現象を効率的に解析できる点が大きな特徴です。

プロジェクトの詳細については以下のリンクを参考にしてください:

また、日本語のREADMEが用意されており、日本語話者もアクセスしやすい設計になっています。この背景には、日本人技術者や研究者の貢献があります。
例えば、日本の技術者であるnpakaさんが初心者向けの記事を公開しており、国内の開発者コミュニティの拡大にも寄与しています。

さらに、日本人の博士課程学生もCMUの研究チームに所属しており、国際的なプロジェクトにおける日本人の存在感が高まっていることを実感しました。
このような背景から、Genesisのエコシステムに貢献することで、日本国内での利用や応用が進むことが期待されます。

環境構築と試用

WSL2 上で Docker 環境で利用できるのか、に関心があり、正月休みを機に早速使ってみました。
WSL2 で利用できることや、Docker が標準で整備されていること、試用自体は多くの人が記事にしていることから、
ZENNで取り上げる話題にするのは、二番、三番煎じどころか出涸らしではありますが、
導入で少し手間取ったので、起きた問題を共有したいと思います。

結論: Docker Desktop などの環境を最新にしてから導入すること
普段、仕事で Docker Desktop を利用しないのですが、実家に帰省して試すため、
Hobby Use のPCに Docker Desktop を入れて wsl2 の環境構築をしていたところで手間取りました。

WSL2環境上でDockerを利用してGenesisを実行する際に、以下の課題が発生しました。

問題1: Rendering の OSS のコンパイルがメモリ不足でできない

年末に docker に LuisaGroup が提供する Rendering の機能をdocker build する構成が追加されたのですが、
wsl2 と docker desktop のデフォルトの設定が 8GB + 2GB (shared) で設定されており、
メモリ不足でコンパイルエラーが起きました。
メモリが足りなくてディスク書込みでメモリの代わりにしようとしているせいで、PCが非常に重くなって困りました。
.wslconfig を設定し、メモリ 11GB (shared 0GB)でコンパイルが通ることを確認しました。

ただし、後述する Docker Desktop 4.18 でしか生じてない問題じゃないかと思います。

問題2: libcuda.so が参照できない

無事、docker build できたのですが、libcuda.so が参照できないという不具合にあたり、その復旧に2日要しました。
結論からいえば、過去にインストールしたDocker Desktop が 4.18 と古かったことが問題でした。
簡単に経緯を示します。

  1. docker から libcuda.so が参照できなかった
  2. nvidia-smi が参照できる状況で、nvcc が参照できなかった。
    リンクの貼りなおし等を試したが、そもそも 過去に docker build したものでnvcc のリンク貼り直しをしたことがなく、原因はここではなかった。
  3. windows の GPU driver を最近更新したのが原因とみられる不具合報告があり、
    NVIDIA Container Toolkit(aptでいれた 14.0以下)を最新版に更新したが解決しなかった。
    新しい wsl2 のアップデートで、libcudaなどは docker desktopがリンクを管理する構成になっていたので、ココも原因ではなかった。
    NVIDIA Driver 555.85 with WSL2 returns error 500 "named symbol not found" when running CUDA apps inside container #520
  4. NVIDIA Container Toolkitの古さが問題ということで,docker desktop が 4.18 を更新することにした。
    ただし、4.18は自動 update がつく前で、インストーラをローカルに落として update が必要だった。これで問題が解決したが、以下のような不具合対応が必要であった。
  5. docker-desktop-dataが消失した。Dドライブにデータを保存してた依存関係が移行されなかった模様。

解決方法:
最終的に4.37を一からインストールしなおすと、非常にスムーズに動作しました。

実行結果と感想

残念ながら、現時点ではGenesisの解析をまだ成功させるには至っていません。
描画系回りの不具合を確認中です。

しかし、公式のリソースや論文を読む限り、以下の点に大きな期待を寄せています:

  • 柔軟構造物の高速シミュレーションにおける高いポテンシャル。
  • ロボット工学やシミュレーション技術のエコシステムへの貢献可能性。

今後、環境をより安定させた上で、Genesisの実行に再挑戦する予定です。結果が得られ次第、さらなる記事で共有したいと考えています。


この記事が、Genesisを試してみたい方々の参考になれば幸いです。質問やフィードバックがあれば、ぜひコメントをお寄せください。

Discussion