当前位置: 首页 > news >正文

IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录

最近在远程服务器上配置 IQ-Learn 的强化学习环境时,按照项目的 requirements.txt 直接安装依赖,过程中连续遇到了多个老项目兼容性问题。这里把排查和修复过程整理下来,方便以后快速复现。

1.项目依赖

项目的 requirements.txt 如下:
gym[box2d]==0.17.1
hydra-core==1.0.6
stable_baselines3==1.0
tensorboard==2.4.0
tensorboardX==2.1
torch==1.7.1
torchvision==0.8.2
tornado==5.1.1
tqdm==4.42.1
wandb
opencv-python==4.5.1.48
atari-py==0.2.6
gym_minigrid==1.0.2
mujoco_py==2.0.2

项目 README 中说明:

  • pytorch >= 1.4
  • hydra-core=1.0
  • hydra-core >= 1.1 当前不兼容

因此,真正不能随便升级的是 hydra-core,而 torch 虽然写得较老,但实际上可以根据 GPU 做适配。

2. 原始环境的问题

一开始直接执行:

pip install -r requirements.txt

报错主要集中在以下几个方面:

2.1 mujoco-py 找不到动态库路径

报错提示缺少:

LD_LIBRARY_PATH

说明 MuJoCo 路径没有正确导出。

2.2 box2d-py 编译失败

报错:

error: command 'swig' failed: No such file or directory

说明服务器缺少 swig。

2.3 mujoco-py 与 Cython 3.x 不兼容

报错涉及 noexcept / Cython.Compiler.Errors.CompileError,本质是:

  • mujoco-py==2.0.2.0
  • 不兼容 Cython 3.x

2.4 stable_baselines3 / tensorboard / protobuf 冲突

报错中出现:

Descriptors cannot be created directly

这是旧 tensorboard 与新 protobuf 不兼容。

2.5 tensorboard / stable_baselines3 与 numpy 冲突

报错:

AttributeError: module 'numpy' has no attribute 'object'

这是因为旧版 tensorboard 还在使用 np.object。

2.6 wandb 版本过新

运行 train_iq.py 时,wandb 对 Hydra/OmegaConf 配置对象的处理不兼容,报错:

TypeError: first argument must be callable or None

2.7 torch 1.7.1 无法驱动 RTX 3090

运行训练时出现:

NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation

说明 torch==1.7.1 太老,不支持 sm_86 架构。


3. 最终思路:单独创建适配 3090 的新环境

为了兼容 RTX 3090,我没有继续使用原来的 torch==1.7.1,而是新建了一个环境 irl,核心策略是:

  • 保留项目真正敏感的老依赖:
    • hydra-core==1.0.6
    • stable_baselines3==1.0
    • tensorboard==2.4.0
  • 将 torch / torchvision 升级到支持 3090 的版本:
    • torch==1.10.2+cu113
    • torchvision==0.11.3+cu113
  • 对其他依赖做兼容性回退:
    • Cython==0.29.37
    • protobuf==3.20.3
    • numpy==1.23.5
    • wandb==0.10.33
    • setuptools==59.5.0

4. 最终安装命令

4.1 创建环境

conda create -n irl python=3.8 -y conda activate irl

4.2 安装兼容旧 Hydra/OmegaConf 的 pip 和 setuptools

pip install --no-cache-dir "pip<24.1" pip install --no-cache-dir setuptools==59.5.0

说明:

  • pip>=24.1 会拒绝 omegaconf 2.0.x 的旧元数据格式
  • 较新的 setuptools 会让旧版 tensorboard/torch.utils.tensorboard 出现 distutils 兼容问题

4.3 安装编译工具

conda install -n irl -c conda-forge swig "cmake<4" make -y

说明:

  • swig 用于 box2d-py
  • cmake<4 用于兼容 atari-py==0.2.6

4.4 安装支持 RTX 3090 的 PyTorch

pip install --no-cache-dir \ torch==1.10.2+cu113 \ torchvision==0.11.3+cu113 \ --extra-index-url https://download.pytorch.org/whl/cu113

4.5 安装主依赖

pip install --no-cache-dir \ "gym[box2d]==0.17.1" \ hydra-core==1.0.6 \ stable_baselines3==1.0 \ tensorboard==2.4.0 \ tensorboardX==2.1 \ tornado==5.1.1 \ tqdm==4.42.1 \ opencv-python==4.5.1.48 \ gym_minigrid==1.0.2 \ termcolor

4.6 安装兼容性固定版本

pip install --no-cache-dir \ Cython==0.29.37 \ numpy==1.23.5 \ protobuf==3.20.3 \ wandb==0.10.33

4.7 配置 MuJoCo 路径

export MUJOCO_PY_MUJOCO_PATH=/home/duweicheng/.mujoco/mujoco200 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/duweicheng/.mujoco/mujoco200/bin

为了避免每次登录都重新设置,可以写入 ~/.bashrc:

echo 'export MUJOCO_PY_MUJOCO_PATH=/home/duweicheng/.mujoco/mujoco200' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/duweicheng/.mujoco/mujoco200/bin' >> ~/.bashrc source ~/.bashrc

4.8 安装 Box2D、MuJoCo、Atari 相关依赖

先安装 box2d-py:

pip install --no-cache-dir box2d-py==2.3.8

再安装 mujoco-py 的构建依赖:

pip install --no-cache-dir \ cffi==1.17.1 \ glfw==2.10.0 \ imageio==2.35.1 \ lockfile==0.12.2

安装 mujoco-py 时关闭构建隔离:

pip install --no-cache-dir --no-build-isolation mujoco-py==2.0.2.0

最后安装 Atari:

pip install --no-cache-dir atari-py==0.2.6


5. 如何验证安装成功

5.1 验证 PyTorch 和 3090 是否可用

python -c "import torch; print('torch:', torch.__version__); print('cuda available:', torch.cuda.is_available()); print('device 0:', torch.cuda.get_device_name(0))"

以及做一次真实的 CUDA 计算:

python -c "import torch; x=torch.randn(1024,1024, device='cuda'); y=torch.randn(1024,1024, device='cuda'); z=x@y; print('cuda matmul ok:', z.shape)"

如果这两步通过,说明:

  • PyTorch 版本支持 3090
  • CUDA 驱动和当前 wheel 匹配
  • GPU 计算是可用的

5.2 验证主要依赖导入成功

python -c "from stable_baselines3 import PPO; print('sb3 ok')" python -c "from torch.utils.tensorboard import SummaryWriter; print('tensorboard ok')" python -c "import mujoco_py; print('mujoco_py ok')" python -c "import atari_py; print('atari_py ok')"

5.3 运行训练命令

CUDA_VISIBLE_DEVICES=1 python train_iq.py env=hopper agent=sac expert.demos=1 method.loss=v0 method.regularize=True agent.actor_lr=3e-5 seed=0

如果能进入训练流程,就说明整个环境已经可用。


6. 这次实际解决了什么问题

本次环境配置最终解决了以下问题:

  • mujoco-py 缺少 LD_LIBRARY_PATH
  • box2d-py 需要 swig
  • mujoco-py 与 Cython 3.x 不兼容
  • tensorboard 2.4.0 与 protobuf 5.x 不兼容
  • tensorboard 2.4.0 与 numpy 1.24+ 不兼容
  • 过新 wandb 与旧版 Hydra/OmegaConf 配置对象不兼容
  • torch 1.7.1 不支持 RTX 3090 (sm_86)
  • 新版 pip 不兼容旧 omegaconf 2.0.x
  • 新版 setuptools 导致旧版 torch.utils.tensorboard 的 distutils 兼容问题
  • atari-py 与 cmake 4.x 不兼容
  • 项目还缺少 termcolor 这个未写入 requirements.txt 的依赖

7. 最终可用环境版本

下面是最终验证通过的核心版本组合:

python==3.8 pip==24.0 setuptools==59.5.0 torch==1.10.2+cu113 torchvision==0.11.3+cu113 gym==0.17.1 hydra-core==1.0.6 stable_baselines3==1.0 tensorboard==2.4.0 tensorboardX==2.1 tornado==5.1.1 tqdm==4.42.1 opencv-python==4.5.1.48 gym_minigrid==1.0.2 atari-py==0.2.6 mujoco-py==2.0.2.0 box2d-py==2.3.8 Cython==0.29.37 numpy==1.23.5 protobuf==3.20.3 wandb==0.10.33 setuptools==59.5.0 termcolor==*


8. 最终环境打印结果

安装并验证通过后,环境关键输出如下:

torch: 1.10.2+cu113 cuda available: True device 0: NVIDIA GeForce RTX 3090 cuda matmul ok: torch.Size([1024, 1024]) sb3 ok tensorboard ok mujoco_py ok atari_py ok

这说明:

  • GPU 可用
  • 3090 可被当前 PyTorch 正常驱动
  • stable_baselines3 可导入
  • tensorboard 可导入
  • mujoco_py 可导入
  • atari_py 可导入

环境已经满足 IQ-Learn 在 MuJoCo、Atari 等任务上的运行需求。


9. 整理好的完整bash指令

#!/usr/bin/env bash

set -euo pipefail

ENV_NAME="irl"

PYTHON_VERSION="3.8"

MUJOCO_PATH="/home/duweicheng/.mujoco/mujoco200"

echo "==> Creating conda environment: ${ENV_NAME}"

conda create -n "${ENV_NAME}" python="${PYTHON_VERSION}" -y

echo "==> Activating environment: ${ENV_NAME}"

source "$(conda info --base)/etc/profile.d/conda.sh"

conda activate "${ENV_NAME}"

echo "==> Downgrading pip for old hydra/omegaconf compatibility"

pip install --no-cache-dir "pip<24.1"

pip install --no-cache-dir setuptools==59.5.0

echo "==> Installing build tools"

conda install -n "${ENV_NAME}" -c conda-forge swig "cmake<4" make -y

echo "==> Installing PyTorch for RTX 3090"

pip install --no-cache-dir \

torch==1.10.2+cu113 \

torchvision==0.11.3+cu113 \

--extra-index-url https://download.pytorch.org/whl/cu113

echo "==> Installing base project dependencies"

pip install --no-cache-dir \

"gym[box2d]==0.17.1" \

hydra-core==1.0.6 \

stable_baselines3==1.0 \

tensorboard==2.4.0 \

tensorboardX==2.1 \

tornado==5.1.1 \

tqdm==4.42.1 \

opencv-python==4.5.1.48 \

gym_minigrid==1.0.2 \

termcolor

echo "==> Installing compatibility-pinned packages"

pip install --no-cache-dir \

Cython==0.29.37 \

numpy==1.23.5 \

protobuf==3.20.3 \

wandb==0.10.33

echo "==> Exporting MuJoCo environment variables for current session"

export MUJOCO_PY_MUJOCO_PATH="${MUJOCO_PATH}"

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:${MUJOCO_PATH}/bin"

echo "==> Checking MuJoCo path"

test -d "${MUJOCO_PATH}/bin"

echo "==> Installing Box2D"

pip install --no-cache-dir box2d-py==2.3.8

echo "==> Installing explicit MuJoCo build deps"

pip install --no-cache-dir \

cffi==1.17.1 \

glfw==2.10.0 \

imageio==2.35.1 \

lockfile==0.12.2

echo "==> Installing mujoco-py without build isolation"

pip install --no-cache-dir --no-build-isolation mujoco-py==2.0.2.0

echo "==> Installing Atari dependency"

cmake --version

pip install --no-cache-dir atari-py==0.2.6

echo "==> Persisting MuJoCo environment variables to ~/.bashrc if missing"

grep -qxF "export MUJOCO_PY_MUJOCO_PATH=${MUJOCO_PATH}" ~/.bashrc || \

echo "export MUJOCO_PY_MUJOCO_PATH=${MUJOCO_PATH}" >> ~/.bashrc

grep -qxF "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${MUJOCO_PATH}/bin" ~/.bashrc || \

echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${MUJOCO_PATH}/bin" >> ~/.bashrc

echo "==> Verifying installation"

python -c "import torch; print('torch:', torch.__version__); print('cuda available:', torch.cuda.is_available()); print('device 0:', torch.cuda.get_device_name(0))"

python -c "import torch; x=torch.randn(1024,1024, device='cuda'); y=torch.randn(1024,1024, device='cuda'); z=x@y; print('cuda matmul ok:', z.shape)"

python -c "from stable_baselines3 import PPO; print('sb3 ok')"

python -c "from torch.utils.tensorboard import SummaryWriter; print('tensorboard ok')"

python -c "import mujoco_py; print('mujoco_py ok')"

python -c "import atari_py; print('atari_py ok')"

echo "==> Done"

echo "Activate with: conda activate ${ENV_NAME}"

echo "Run Hopper training with:"

echo "CUDA_VISIBLE_DEVICES=1 python train_iq.py env=hopper agent=sac expert.demos=1 method.loss=v0 method.regularize=True agent.actor_lr=3e-5 seed=0"

10.现有的环境包


Package Version
---------------------- ------------
absl-py 2.3.1
antlr4-python3-runtime 4.8
atari-py 0.2.6
box2d-py 2.3.8
cachetools 4.2.4
certifi 2026.4.22
cffi 1.17.1
charset-normalizer 3.4.7
click 8.1.8
cloudpickle 1.3.0
configparser 7.1.0
contourpy 1.1.1
cycler 0.12.1
Cython 0.29.37
docker-pycreds 0.4.0
fonttools 4.57.0
future 1.0.0
gitdb 4.0.12
GitPython 3.1.49
glfw 2.10.0
google-auth 1.35.0
google-auth-oauthlib 0.4.6
grpcio 1.70.0
gym 0.17.1
gym-minigrid 1.0.2
hydra-core 1.0.6
idna 3.13
imageio 2.35.1
importlib_metadata 8.5.0
importlib_resources 6.4.5
kiwisolver 1.4.7
lockfile 0.12.2
Markdown 3.7
MarkupSafe 2.1.5
matplotlib 3.7.5
mujoco-py 2.0.2.0
numpy 1.23.5
nvidia-ml-py 13.590.48
nvitop 1.6.2
oauthlib 3.3.1
omegaconf 2.0.6
opencv-python 4.5.1.48
packaging 26.2
pandas 2.0.3
pathtools 0.1.2
pillow 10.4.0
pip 24.0
promise 2.3
protobuf 3.20.3
psutil 7.2.2
pyasn1 0.6.3
pyasn1_modules 0.4.2
pycparser 2.23
pyglet 1.5.0
pyparsing 3.1.4
python-dateutil 2.9.0.post0
pytz 2026.2
PyYAML 6.0.3
requests 2.32.4
requests-oauthlib 2.0.0
rsa 4.9.1
scipy 1.10.1
sentry-sdk 2.58.0
setuptools 59.5.0
shortuuid 1.0.13
six 1.17.0
smmap 5.0.3
stable-baselines3 1.0
subprocess32 3.5.4
tensorboard 2.4.0
tensorboard-plugin-wit 1.8.1
tensorboardX 2.1
termcolor 2.4.0
torch 1.10.2+cu113
torchvision 0.11.3+cu113
tornado 5.1.1
tqdm 4.42.1
typing_extensions 4.13.2
tzdata 2026.2
urllib3 2.2.3
wandb 0.10.33
Werkzeug 3.0.6
wheel 0.44.0
zipp 3.20.2

href="blob:https://mp.csdn.net/9b283dfd-623b-4845-afc2-e02622ff2c66" rel="stylesheet" />
http://www.jsqmd.com/news/755416/

相关文章:

  • 告别信号模糊:手把手教你理解PCIe 3.0的动态均衡(含FIR滤波器配置)
  • 避坑指南:在MATLAB里跑YOLOv5目标检测,从模型转换到界面集成的5个常见问题
  • 开源工具 compromising-position:自动化网络暴露面测绘与风险识别实战指南
  • 解析钻石依赖问题与并发版本控制技术
  • CoPaw-ACTS基准:多智能体协作算法的评估利器与实践指南
  • 借助审计日志功能追踪与管理API Key的使用情况
  • Windows 系统
  • Model Context Protocol (MCP) 深度解析:构建 AI Agent 的标准化“数据插槽”
  • 在统信UOS和麒麟V10上,用Qt和VLC-Qt打造你的专属媒体播放器(ARM/X86双架构实测)
  • ACME及ACME账号是什么,作用和使用场景
  • 从向量数据库到AI应用开发:Relevance AI全栈平台实战解析
  • C# 13委托内存优化实战(.NET 8.0.5+ JIT深度适配版)
  • Mac音乐解密终极指南:3分钟解锁QQ音乐加密格式的完整解决方案
  • 揭秘QubitSimulator v2.4核心源码:C++量子比特模拟器性能提升300%的5个关键优化点
  • 利用 Taotoken 多模型能力为 MATLAB 项目构建智能辅助工具
  • 长期项目使用 Taotoken 聚合 API 在容灾方面的实际感受
  • LAV Filters完全指南:打造Windows平台终极媒体播放解决方案
  • ShowUI-Aloha:基于模仿学习的GUI自动化框架解析
  • 扫地机器人回充总失败?手把手教你用Arduino和红外传感器DIY一个高精度自动充电桩
  • 基于MCP协议与蓝湖API构建AI设计协作上下文服务器
  • 思维导图用不好?可能是你一开始就错了!聊聊XMind里的‘逻辑元素’到底怎么用
  • ChatGPT脚本与Espanso集成:打造无缝AI工作流
  • DirPrint:一键生成项目目录与代码,提升AI编程协作效率
  • 开源项目评估与集成实战:从技术选型到生产部署的完整指南
  • 陪聊系统源码搭建教程+源码以及变现思路
  • AI赋能进阶开发:让快马平台智能生成具备可访问性的cc-switch高级组件方案
  • 2026年4月质量好的泡沫大板生产厂家推荐,泡沫大板/广告雕刻泡沫板/易碎品包装泡沫/EPS泡沫包装,泡沫大板公司找哪家 - 品牌推荐师
  • STM32 CAN过滤器配置详解:从‘接收所有’到‘精准过滤’的实战指南(基于CubeMX+HAL库)
  • OpenClaw 2.6.6 安装避坑与使用技巧 Windows 系统适用
  • 别再死记硬背Kimball三层架构了!聊聊ODS、DW、ADS层在实际项目中的那些‘坑’与最佳实践