此项目用于配置基于isaac_gym的强化学习docker环境。
使用docker可以快速部署隔离的、虚拟的、完全相同的开发环境,不会出现“我的电脑能跑,你的电脑跑不了”的情况。
git clone https://github.com/fan-ziqi/rl_docker.git
cd rl_docker
将requirement_template.txt
复制一份并命名为requirement.txt
,在此文件中添加所需要的python依赖项。(在此文件中添加的依赖项在docker构建时下载,生成容器后不会重复下载)
cp -p requirement_template.txt requirement.txt
将setup_template.sh
复制一份并命名为setup.sh
,在此文件中配置所有python包。(在此文件中添加的依赖项在docker容器每次运行时都会重新下载,仅为了解决某些依赖冲突的问题。没有特殊情况请将依赖项都写入requirement.txt
中)
cp -p setup_template.sh setup.sh
对于setup_template.sh
,其对应的工作目录文件层级如下:
rl_ws/
│
├── rl_docker/
│ └── ...
│
├── isaacgym/
│ ├── python/
│ │ ├── setup.py
│ │ └── ...
│ │
│ └── ...
│
├── rsl_rl/
│ ├── setup.py
│ └── ...
│
├── legged_gym/
│ ├── setup.py
│ └── ...
│
└── ...
bash build.sh
bash run.sh -g <gpus, should be num 1~9 or all> -d <true/false>
# example: bash run.sh -g all -d true
Git不会track这两个新建的文件,如有需要请自行修改.gitignore
。
使用Ctrl+P+Q
可退出当前终端,使用exit
结束容器;
镜像中内置了nvitop
,新建一个窗口,运行bash exec.sh
进入容器,运行nvitop
查看系统资源使用情况。使用exit
或者Ctrl+P+Q
均可退出当前终端而不结束容器;
-
如果使用的是RTX4090显卡,请修改
docker/Dockerfile
文件中的第一句为:nvcr.io/nvidia/pytorch:22.12-py3
-
如果使用的是RTX3070显卡,则无需修改
其他显卡的pytorch支持版本请在下方链接中查找
执行run.sh
脚本的时候若出现如下报错:
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
出现此问题大多是因为没有使用root权限运行容器,以下几种方案均可:
- 在bash前加root
- 切换至root用户
- 将当前用户加入root组
若无法找到构建好的isaacgym镜像,则需重新以root权限构建镜像。
执行run.sh
脚本的时候若出现如下报错:
docker: Error response from daemon: could not select device driver "" with capabilities:[[gpu]].
则需要安装nvidia-container-runtime
和nvidia-container-toolkit
两个包,并修改Docker daemon 的启动参数,将默认的 Runtime修改为 nvidia-container-runtime:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install nvidia-container-toolkit nvidia-container-runtime
sudo vi /etc/docker/daemon.json
修改内容为
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
重启docker服务:
systemctl restart docker