Open yasuohayashibara opened 5 months ago
※実行までに発生したエラーなど追記予定 公式のドキュメントに準拠
docker run
等のコマンドを使用する際にsudo
を入れずに実行できるようにする
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」の部分は学習を開始した時間によって異なる
主な流れはhttps://github.com/open-rdc/IsaacLabInvestigation/issues/3#issuecomment-2242303771 と同じである. server係と利用者が行う範囲を分けて説明する.
harukiogawa@harukiogawa-XPS-8960:~$ docker login nvcr.io
Username: $oauthtoken
Password:
WARNING! Your password will be stored unencrypted in /home/harukiogawa/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores
Login Succeeded
4. Pull the Isaac Sim container
docker pull nvcr.io/nvidia/isaac-sim:4.2.0
5. Run the Isaac Sim container with an interactive Bash session:
harukiogawa@harukiogawa-XPS-8960:~$ docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \ -e "PRIVACY_CONSENT=Y" \ -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \ -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \ -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \ -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \ -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \ -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \ -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \ -v ~/docker/isaac-sim/documents:/root/Documents:rw \ nvcr.io/nvidia/isaac-sim:4.2.0
6. Isaac Labをclone
git clone https://github.com/isaac-sim/IsaacLab.git
7. 後は同じ
IssacLabの実行環境の起動方法
以下にしたがってdockerの環境を用意する. https://isaac-sim.github.io/IsaacLab/source/deployment/docker.html#
dockerのフォルダで
コンテナ開始 ./container.sh start
コンテナに入る ./container.sh enter base