open-rdc / IsaacLabInvestigation

0 stars 0 forks source link

IssacLabの実行環境の起動方法 #3

Open yasuohayashibara opened 3 months ago

yasuohayashibara commented 3 months ago

IssacLabの実行環境の起動方法

以下にしたがってdockerの環境を用意する. https://isaac-sim.github.io/IsaacLab/source/deployment/docker.html#

dockerのフォルダで

コンテナ開始 ./container.sh start

コンテナに入る ./container.sh enter base

aiba0921 commented 2 months ago

Dockerのインストールから学習の実行までの手順

※実行までに発生したエラーなど追記予定 公式のドキュメントに準拠

実行環境

Dockerのインストール

  1. ドキュメントにあるURLからDockerのウェブサイトに移動しUbuntuを選択
  2. Docker desktopのインストール方法が記載されているがUbuntuは対応していないためapt形式でインストールすると記載されたページに移動
  3. Install using the repository aptの手順に従いDocker Engineをインストールする
    • ドキュメントではこの後Docker composeをインストールするとあるがDocker Engineと同時にインストールされている
  4. ドキュメントから Dockerのインストール後の手順のページに移動しdocker run等のコマンドを使用する際にsudoを入れずに実行できるようにする

NVIDIA Container Toolkitのインストール

  1. apt形式でインストールする手順で進める
  1. Running a Sample Workloadのページを参考に以下を入力
    
    docker run --rm --gpus all nvidia/cuda:12.2.0-runtime-ubuntu20.04 nvidia-smi
Container Toolkitが正常にインストールされていれば`nvidia-smi`を入力した時と同様の出力が帰ってくる。cudaとubuntuのバージョンは各々の環境に合わせる。

- 発生したエラーとその対処
先程のコマンドを入力した際に以下のようなエラーが出ることがある
1.

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy' nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.

原因はContainer Toolkitをインストールした際に自動的にDockerがインストールされてしまいDockerが2つ存在するような状態になってしまうことらしい。対処法としては以下を入力しDockerを一旦削除してからもう一度Dockerを入れ直すことで解決した

sudo apt remove docker* sudo apt remove docker docker-engine docker.io containerd runc docker-desktop docker-compose-plugin sudo snap remove docker sudo apt clean autoclean && sudo apt autoremove --yes


2.

Failed to initialize NVML: Unknown Error

[こちら](https://stackoverflow.com/questions/72932940/failed-to-initialize-nvml-unknown-error-in-docker-after-few-hours)のページを参考に以下を入力

sudo vim /etc/nvidia-container-runtime/config.toml

config.toml内の`no-cgroups = true`となっている部分を`no-cgroups = false`に変更し、以下を入力してnvidia-smiと同様の出力がされるか確認する

sudo systemctl restart docker docker run --rm --gpus all nvidia/cuda:12.2.0-runtime-ubuntu20.04 nvidia-smi

## NGC CLI をインストール

- [こちら](https://org.ngc.nvidia.com/setup/installers/cli)のページからインストールする
- この手順を踏まないと`ngc config set`を入力してもそんなもの存在しないというエラーが出る

## Docker上でIsaac Simを使用できるようにする

1. [8.3. Generating NGC API Keys](https://docs.nvidia.com/ngc/gpu-cloud/ngc-user-guide/index.html#generating-api-key)に従いAPI Keyを生成した後に以下コマンドを実行

ngc config set docker login nvcr.io Username: $oauthtoken Password:


- 発生したエラーと対処方法
`docker login nvcr.io`でログインしようとした際に

Error saving credentials: error storing credentials - err: exit status 1, out: error storing credentials - err: exit status 1, out:pass not initialized: exit status 1: Error: password store is empty. Try "pass init".``

というエラーが出た場合は

service docker stop rm ~/.docker/config.json service docker start

を入力すると再度ユーザー名とパスワードが求められ、ログインできるようになる
2.[ こちら](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/isaac-sim)のページの手順に従い Docker上でIsaac Simを使用できるようにする

## Isaac Labの実行

1.
 `https://github.com/isaac-sim/IsaacLab.git`
を実行しIsaac Labのリポジトリをpullする

2. Isaac Labのディレクトリ内に移動し以下を実行しコンテナを開始し中に入る

./docker/container.sh start ./docker/container.sh enter base


## サンプルの実行
例:H1の歩行の学習

1. 学習の開始

./isaaclab.sh -p source/standalone/workflows/rsl_rl/train.py --task Isaac-Velocity-Flat-H1-v0 --headless

2.学習済みモデルの確認 

./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py --task Isaac-Velocity-Flat-H1-v0 --num_envs 32 --load_run 2024-07-09_16-38-08 --checkpoint model_999.pt


- 「2024-07-09_16-38-08」の部分は学習を開始した時間によって異なる