欢迎光临
我们一直在努力

【强化学习4】:docker/Python脚本 配置isaac gym强化学习环境

承接上篇,我使用单rtx3060显卡训练我的distill policy的时候,会出现OOM(out of memory)现象,因此需要上云学习,我首先选择构建镜像 — dockerfile方式(还有快照方式,但是没有dockerfile这样可以灵活修改)。 

docker的教程如下: https://www.bilibili.com/video/BV14s4y1i7Vf/?share_source=copy_web&vd_source=e04fab70977b1b2117cf35c1a17faa06

1.ubuntu下载Docker Engine:

和docker desktop相对,是没有可视化界面的版本,下列教程挺好:

https://zhuanlan.zhihu.com/p/29053435112

2.安装nvidia-docker:

让 Docker 容器可以使用宿主机的 NVIDIA GPU,但是也可以不装,好像说现在docker集成了自动调用gpu的功能;

# 获取系统对应的版本以及GPG密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add – \\
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装nvidia-docker工具包
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
# 检查安装是否成功
docker run –rm –gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi

3.编写dockerfile:

dockerfile里面包含的安装命令应该包含:基础镜像,miniconda,python,pytorch,isaac_gym,

构建这个 Dockerfile 有一个核心难点:Isaac Gym 是无法直接在 Dockerfile 中通过链接下载的(因为它需要 NVIDIA 开发者账号登录)。需要先在本地手动下载好 Isaac Gym 的安装包,然后将其 COPY 到镜像中进行安装。

然后在你的本机新建一个文件夹,这里我设置为~/docker_RL,然后里面新建Dockerfile(在vscode中新建),并且把下载好的IsaacGym_Preview_4_Package.tar.gz放进来,

https://developer.nvidia.com/isaac-gym(IsaacGym_Preview_4下载地址);

我的Dockerfile内容如下我的github仓库(假如有用的话帮我star⭐一下,你们的支持对我来说很重要😊)

https://github.com/shiluhe/dockerfile_isaacgym

构建镜像的命令:docker build -t my-isaacgym-env:v1 .

查看docker中所有镜像的命令:docker images

在本地运行容器进行检查:docker run -it –rm –gpus all my-isaacgym-env:v1 /bin/bash  。。。这个命令会基于 my-isaacgym-env:v1 镜像启动一个新的交互式容器,自动挂载 GPU,退出后容器自动删除,可以在里面测试python 、Isaac Gym 、PyTorch等;

1.强化学习环境测试:

使用我这个dockerfile构建镜像来运行容器,可以直接进入isaac-env环境中(干净的conda环境),的~/workspace目录下,然后进行环境测试:

1. python –version (测试python版本)

— 输出例如:Python 3.8.20;

2. python -c "import torch; print('PyTorch version:', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('CUDA device count:', torch.cuda.device_count())" (测试pytorch 和 cuda)

— 输出例如: PyTorch version: 2.4.1+cu121 CUDA available: True CUDA device count: 1 3. python -c "import isaacgym; print('Isaac Gym OK')" (测试isaaac gym)

— 输出例如:Isaac Gym OK

假如你上面的三个测试都是正确的输出,大概率镜像环境是好用的。

退出容器:exit

删除镜像:docker rmi + name of your images or docker rmi  + ID of your images

2.代码训练测试:

见作者【强化学习3】文章,我是要复现robot parkour learning 这篇文章,我在本机上对容器是否能够训练代码进行测试,

首先:用 volume 挂载本地代码进容器的目录下(两边代码同步变化)。。比如我本机工程文件目录为:/home/hsl/parkour,于是运行命令:docker run -it –rm –gpus all -v /home/hsl/parkour:/workspace my-isaacgym-env:v1 /bin/bash,把本地文件夹映射到容器中目录下,ls一下,可以发现是本地parkour下的目录。

然后:在legged gym和rsl-rl下分别pip install -e . –no-deps 让容器中的python可以import这两个目录;

然后 python legged_gym/scripts/train.py –headless –task go2 测试是否可以训练。

4.上传docker镜像 & 训练:

Autodl不能上传docker镜像;用阿里云 / 腾讯云 / 华为云 才行。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转折分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

然后我尝试使用阿里云训练,但是发现阿里云没有rtx3090这种消费级显卡,A10性能不够都要9.5r/h,对于博主这种穷鬼来说太贵了o(╥﹏╥)o。。遂放弃使用,今早上和同学交流的时候,同学推荐 Autodl中使用pyhon脚本安装环境,于是重新试试。

1.python脚本安装环境

我在autodl中买了rtx4090D的服务器(只要1.88r/h),然后根据ssh命令以及密码,使用我本机的vscode插件remote SSH,进入了容器,下面是我买的服务器的参数:

然后进行容器之后,先更新miniconda到新版本,不然pytorch的安装会不成功或者特别慢:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -u
#升级过程中全部 yes & enter
exec bash
conda –version
#conda 25.x.x左右是正确的

miniconda存在基础下,在用户目录~下运行这个脚本,配置conda环境,pytorch,python:

#!/bin/bash
set -e

# —————- 配置 —————-
ENV_NAME="isaacgym_env"
PYTHON_VERSION="3.8"
PYTORCH_VERSION="2.4.1"
CUDA_VERSION="11.8"
# ————————————–

echo "========================="
echo "开始安装 conda 环境和 PyTorch"
echo "========================="

# 1️⃣ 初始化 conda
echo "[1/6] 初始化 conda…"
if [ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]; then
source "$HOME/miniconda3/etc/profile.d/conda.sh"
else
echo "找不到 conda,请检查 Miniconda 是否安装在 ~/miniconda3"
exit 1
fi

# 2️⃣ 创建环境(如果不存在)
echo "[2/6] 创建 conda 环境 $ENV_NAME …"
if conda env list | grep -q "$ENV_NAME"; then
echo "环境 $ENV_NAME 已存在,跳过创建"
else
conda create -n $ENV_NAME python=$PYTHON_VERSION -y
fi

# 3️⃣ 激活环境
echo "[3/6] 激活环境 $ENV_NAME …"
conda activate $ENV_NAME

# 4️⃣ 安装 PyTorch 2.4.1 + CUDA 11.8
echo "[4/6] 安装 PyTorch $PYTORCH_VERSION + CUDA $CUDA_VERSION …"
conda install pytorch==$PYTORCH_VERSION torchvision torchaudio pytorch-cuda=$CUDA_VERSION -c pytorch -c nvidia -y

# 5️⃣ 安装常用 Python 包
echo "[5/6] 安装常用 Python 包…"
pip install matplotlib scipy numpy pandas gym

# 6️⃣ 测试环境
echo "[6/6] 测试安装是否成功…"
python3 – << EOF
import sys
import torch

print("Python 版本:", sys.version)
print("Conda 环境:", "$ENV_NAME")
print("PyTorch 版本:", torch.__version__)
print("CUDA 可用:", torch.cuda.is_available())
if torch.cuda.is_available():
print("GPU 名称:", torch.cuda.get_device_name(0))
EOF

echo "========================="
echo "环境安装完成 ✅"
echo "激活环境:conda activate $ENV_NAME"
echo "========================="

假如有报错是因为较新版本的 Conda (Anaconda/Miniconda) 要求在非交互式环境(如运行脚本)中,必须显式同意其服务条款(Terms of Service, ToS)才能从官方频道(pkgs/main 和 pkgs/r)下载包。

在同一目录下运行,就不会报错了:

conda tos accept –override-channels –channel https://repo.anaconda.com/pkgs/main
conda tos accept –override-channels –channel https://repo.anaconda.com/pkgs/r

下面是我的输出,环境配好大部分了!

然后我再新开了一个脚本,安装isaac gym。这里先orz vscode的remote SSH一下,只要把本机的压缩包拖到相应目录就能进来,太香了!

echo "========================="
echo "[7/8] 安装 Isaac Gym Preview 4"
echo "========================="

# 工作目录(建议放在系统盘,代码量不大)
cd ~ || exit 1

# 1. 如果你已经手动上传了 isaacgym 压缩包,跳过 wget
ISAACGYM_TAR="IsaacGym_Preview_4_Package.tar.gz"

if [ ! -f "$ISAACGYM_TAR" ]; then
echo "❌ 未找到 $ISAACGYM_TAR"
echo "👉 请先从 NVIDIA 官网下载 Isaac Gym Preview 4 并上传到服务器"
exit 1
fi

# 2. 解压
tar -xzf $ISAACGYM_TAR

# 3. 进入 python 目录并安装
cd isaacgym/python || exit 1
pip install -e .

echo "Isaac Gym 安装完成 ✅"

然后承接我自己的训练过程,在开源代码(我也是从主机拖进来的)的legged gym和rsl-rl目录下分别pip install -e .加载进环境,就可以进行训练了!!!

后续:

觉得有用的可以点赞👍&收藏📚一下,你们的支持和鼓励对我来说very important!!

赞(0)
未经允许不得转载:171主机测评 » 【强化学习4】:docker/Python脚本 配置isaac gym强化学习环境
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址