RTX 5090 + Ubuntu 22.04 安装 Isaac Gym 完整教程
本教程详细记录了在 NVIDIA RTX 5090(Blackwell 架构,sm_120) 显卡、Ubuntu 22.04 系统、CUDA 13.0 驱动环境下,通过从源码编译 PyTorch 2.3.1 使其支持 sm_120 计算能力,从而在 Python 3.8 环境中成功运行 Isaac Gym 的全过程。教程步骤清晰、可复现,针对关键难点提供详细解决方案,适用于所有 50 系 NVIDIA 显卡。
本教程的核心难点在于软硬件环境的版本兼容性冲突,具体矛盾及解决方案如下:
-
Isaac Gym 官方限制:Isaac Gym 已停止维护,仅支持 Python 3.8 版本,无法适配更高版本 Python。
-
RTX 5090 硬件要求:RTX 5090 采用 Blackwell 架构(计算能力 sm_120),官方预编译 PyTorch 包要求 Python ≥ 3.9,无法直接在 Python 3.8 环境中使用。
-
解决方案:通过修改 PyTorch 2.3.1 源码,使其能够为 sm_120 架构生成 PTX 代码,同时在 Python 3.8 环境中编译安装 PyTorch,打破版本限制,实现 Isaac Gym 正常运行。
在开始操作前,请确保你的环境满足以下要求,避免后续编译安装失败:
-
显卡:NVIDIA RTX 5090(或其他 50 系显卡,如 RTX 5070 Ti)
-
驱动版本:≥ 555.x(本文使用版本:580.126.09)
-
CUDA Toolkit:≥ 12.8(本文使用 Conda 环境中的 CUDA 12.8,系统驱动自带 CUDA 13.0 用于硬件支持)
-
操作系统:Ubuntu 22.04(Ubuntu 20.04 亦可,需注意系统依赖包名差异)
-
基础工具:已安装 git、conda(或 miniconda)、gcc、g++ 等基础编译工具
📥 第一步:克隆 PyTorch 源码并应用 sm_120 补丁
首先克隆 PyTorch 源码并切换到 2.3.1 版本,同步子模块(子模块缺失会导致编译失败):
git clone https://github.com/pytorch/pytorch
cd pytorch
git checkout v2.3.1
git submodule update --init --recursive
由于 PyTorch 2.3.1 源码默认不支持 sm_120(Blackwell 架构),需修改两处关键文件,确保编译时生成对应架构的代码。
编辑 cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake 文件,定位到约第 227 行,修改未知架构的默认处理逻辑:
原内容:
elseif(${arch_name} STREQUAL "Hopper")
set(arch_bin 9.0)
set(arch_ptx 9.0)
else()
message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS")
endif()
修改为:
elseif(${arch_name} STREQUAL "Hopper")
set(arch_bin 9.0)
set(arch_ptx 9.0)
else()
set(arch_bin 12.0)
set(arch_ptx 12.0)
endif()
说明:此修改确保当 CMake 无法识别架构时,默认使用 sm_120(12.0)的二进制和 PTX 代码,适配 RTX 5090。
编辑根目录下的 Dockerfile,定位到约第 60 行,在 TORCH_CUDA_ARCH_LIST 末尾添加 12.0,确保编译时包含 sm_120 架构:
TORCH_CUDA_ARCH_LIST="3.5 5.2 6.0 6.1 7.0+PTX 8.0 12.0" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \
🐍 第二步:创建 Python 3.8 的 Conda 环境并安装基础依赖
Isaac Gym 仅支持 Python 3.8,因此需创建独立的 Conda 环境,避免与系统 Python 版本冲突,并安装必要的系统依赖:
conda create -n isaacgym python=3.8 -y
conda activate isaacgym
说明:环境名称可自定义,后续操作均需在该环境中执行。
sudo apt update
sudo apt install build-essential libssl-dev libffi-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev libcrypt-dev
说明:Ubuntu 20.04 系统需将 libcrypt-dev 替换为 libcrypt1-dev。
此步骤是编译成功的核心,需解决 CUDA 版本兼容、环境变量配置、分布式组件冲突等问题,严格按照以下命令执行。
1. 在 Conda 环境中安装 CUDA 12.8 工具包
系统默认的 CUDA 13.0 与 PyTorch 2.3.1 存在 API 兼容性问题(如缺失 nvToolsExt、cicc 工具),因此通过 Conda 安装完整的 CUDA 12.8 工具包:
conda install -c conda-forge cuda-toolkit=12.8.0 -y
conda install -c conda-forge cuda-nvtx-dev -y # 提供 NVTX 头文件,解决编译时缺失问题
conda install -c conda-forge libxcrypt -y # 提供 crypt.h 头文件,避免编译报错
设置环境变量,确保编译时优先使用 Conda 环境中的 CUDA 工具和依赖,避免链接到系统 CUDA 13.0:
export CUDA_HOME="$CONDA_PREFIX"
export PATH="$CUDA_HOME/bin:$PATH"
export LD_LIBRARY_PATH="$CUDA_HOME/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH"
export CMAKE_PREFIX_PATH="$CONDA_PREFIX:$CMAKE_PREFIX_PATH"
export CPLUS_INCLUDE_PATH="$CONDA_PREFIX/include:$CPLUS_INCLUDE_PATH"
export C_INCLUDE_PATH="$CONDA_PREFIX/include:$C_INCLUDE_PATH"
单卡训练无需分布式组件,禁用后可避免与 CUDA 13.0 的兼容性冲突,同时加快编译速度:
export USE_CUDA=1 # 启用 CUDA 支持
export TORCH_CUDA_ARCH_LIST="8.0;8.6;8.9;9.0;12.0" # 指定支持的 CUDA 架构,包含 sm_120
export CMAKE_CUDA_ARCHITECTURES="80;86;89;90;120" # CMake 识别的架构列表
export MAX_JOBS=4 # 编译线程数,根据内存大小调整(建议 4-8)
export USE_NCCL=0 # 禁用 NCCL 分布式
export USE_TENSORPIPE=0 # 禁用 TensorPipe(与 CUDA 13 不兼容)
export USE_GLOO=0 # 禁用 Gloo 分布式
export USE_DISTRIBUTED=0 # 完全禁用分布式组件
export BUILD_TEST=0 # 跳过测试,避免链接静态库问题
4. 修复 TensorPipe 强制编译 CUDA 支持的问题
TensorPipe 组件默认强制启用 CUDA 支持,与当前环境冲突,需修改其 CMake 配置禁用 CUDA:
sed -i 's/option(TP_ENABLE_CUDA "Enable CUDA support" ON)/option(TP_ENABLE_CUDA "Enable CUDA support" OFF)/' third_party/tensorpipe/CMakeLists.txt
进入 PyTorch 源码目录,清理之前的编译缓存(若有),开始编译生成 wheel 包:
cd /home/yxx/pytorch # 替换为你的 PyTorch 源码目录
rm -rf build # 清理编译缓存,避免残留文件导致报错
python setup.py bdist_wheel
说明:
-
编译过程持续约 1~2 小时,具体时间取决于 CPU 性能和线程数。
-
编译期间会出现大量警告(如 -Wterminate、ptxas advisory等),均为正常现象,无需处理,只要未出现 FAILED 且编译未中断,即为正常。
编译成功后,会在 dist/ 目录下生成自定义的 PyTorch wheel 包(约 523 MB)。需先安装配套依赖,再安装自定义 PyTorch,避免依赖被覆盖。
pip install torchvision==0.18.1 torchaudio==2.3.1 numpy==1.23.5
说明:版本需严格对应 PyTorch 2.3.1,避免版本冲突。
pip install /home/yxx/pytorch/dist/torch-2.3.0a0+git63d5e92-cp38-cp38-linux_x86_64.whl
| 注意:安装时若提示版本冲突,可忽略;务必保证最后安装的是自定义编译的 PyTorch 包,避免被 pip 自动替换为官方版本。 |
离开 PyTorch 源码目录,执行以下命令验证 PyTorch 是否成功识别 GPU:
cd ~
python -c "import torch; print(torch.cuda.is_available()); torch.randn(2,2,device='cuda')"
若输出 True 且无报错,说明 PyTorch 编译安装成功,且已支持 RTX 5090 GPU。
PyTorch 安装成功后,依次安装 Isaac Gym、rsl_rl 及相关项目,确保各组件兼容。
1. 安装 Isaac Gym Preview 4(下载链接)
将下载的 Isaac Gym 压缩包解压,进入 Python 目录安装:
tar -xzf IsaacGym_Preview_4_Package.tar.gz # 替换为你的压缩包路径
cd isaacgym/python
pip install -e .
验证安装:
cd examples
python 1080_balls_of_solitude.py
若能正常显示模拟窗口,说明 Isaac Gym 安装成功。
rsl_rl 是 Isaac Gym 常用的强化学习框架,需安装指定版本以保证兼容性:
cd ~
git clone https://github.com/leggedrobotics/rsl_rl
cd rsl_rl
git checkout v1.0.2
pip install -e .
以 unitree_rl_gym 为例,安装时需先安装本地 rsl_rl 子模块,避免 pip 依赖解析失败:
cd ~/unitree_rl_gym # 替换为你的项目目录
# 先安装本地 rsl_rl 子模块
cd rsl_rl && pip install -e . && cd ..
# 安装 unitree_rl_gym
pip install -e .
| 注意:项目安装过程中可能会自动降级 NumPy,导致后续出现 Numpy is not available 错误,需执行以下命令强制重装指定版本: |
进入项目训练脚本目录,启动训练,验证整套环境是否正常工作:
cd ~/unitree_rl_gym/legged_gym/scripts
python train.py --task=g1
若成功输出训练日志,且通过 nvidia-smi 查看 GPU 利用率上升,说明整套环境配置完成,可正常进行强化学习训练。
编译安装过程中可能遇到各类报错,以下是高频问题的原因及解决方案,按报错类型分类整理,便于快速排查:
| 问题描述 | 报错原因 | 解决方案 |
| CUDA_ARCHITECTURES is empty | CMake 无法识别系统 CUDA 13.0 架构 | 设置环境变量 export CMAKE_CUDA_ARCHITECTURES="80;86;89;90;120" |
| Failed to find nvToolsExt | CUDA 12.8 中 NVTX 已改为纯头文件,未安装对应依赖 | 安装 conda install -c conda-forge cuda-nvtx-dev -y,并设置 export NVTOOLSEXT_PATH="$CONDA_PREFIX" |
| cicc: not found | 系统 CUDA 13.0 安装不完整,缺少 cicc 工具 | 改用 Conda 环境中的 CUDA 12.8 工具包,确保 CUDA_HOME 指向 Conda 环境 |
| error: 'struct cudaDeviceProp' has no member named 'computeMode' | TensorPipe 的 CUDA 代码与 CUDA 13 不兼容 | 禁用 TensorPipe CUDA 支持(执行第三步第 4 小节的 sed 命令) |
| fatal error: crypt.h: No such file or directory | Conda 环境缺少 crypt.h 头文件 | 安装 conda install -c conda-forge libxcrypt -y,并设置 export CPLUS_INCLUDE_PATH="$CONDA_PREFIX/include:$CPLUS_INCLUDE_PATH" |
| undefined symbol: cudaGetDeviceProperties_v2 | 运行时链接到系统 CUDA 13.0 库,与编译时的 CUDA 12.8 不兼容 | 重新编译 PyTorch,确保编译时 CUDA_HOME 指向 Conda 环境中的 CUDA 12.8 |
| Numpy is not available | 安装项目时自动降级了 NumPy,与 PyTorch 依赖冲突 | 强制重装 pip install numpy==1.23.5 --force-reinstall |
| gymtorch 编译失败 | 即时编译时找不到 crypt.h 头文件 | 设置 export CPLUS_INCLUDE_PATH="$CONDA_PREFIX/include:$CPLUS_INCLUDE_PATH",并清理缓存 rm -rf ~/.cache/torch_extensions |
为避免后续环境损坏需重新编译,建议做好以下备份和持久化操作:
将编译生成的 wheel 包复制到安全位置(如移动硬盘、云存储),便于后续快速恢复环境:
将第三步的环境变量配置添加到 Conda 激活脚本,避免每次激活环境都手动输入:
mkdir -p $CONDA_PREFIX/etc/conda/activate.d
cat > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh << 'EOF'
#!/bin/bash
export CUDA_HOME="$CONDA_PREFIX"
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$CONDA_PREFIX/lib64:$LD_LIBRARY_PATH"
export CPLUS_INCLUDE_PATH="$CONDA_PREFIX/include:$CPLUS_INCLUDE_PATH"
export C_INCLUDE_PATH="$CONDA_PREFIX/include:$C_INCLUDE_PATH"
EOF
说明:后续激活环境时,会自动加载上述环境变量。
若后续执行 pip install 时意外替换了自定义 PyTorch,可执行以下命令强制重装:
pip install numpy==1.23.5
pip install --force-reinstall /path/to/torch-2.3.0a0+git63d5e92-cp38-cp38-linux_x86_64.whl
本教程通过源码修改、环境配置、编译安装等步骤,成功解决了 RTX 5090(sm_120)与 Isaac Gym(Python 3.8)的版本兼容性问题,实现了整套强化学习环境的搭建。核心要点如下:
-
修改 PyTorch 源码,添加 sm_120 架构支持,适配 RTX 5090 显卡。
-
使用 Conda 安装 CUDA 12.8,避免与系统 CUDA 13.0 的兼容性冲突。
-
禁用非必需的分布式组件,确保编译顺利完成。
-
严格控制依赖版本,避免安装过程中出现版本冲突。
此方法同样适用于其他 50 系 NVIDIA 显卡。若在训练中遇到任何新问题,可参考常见问题汇总排查,或留言交流。
更多推荐



所有评论(0)