从零搭建强化学习环境:Mujoco、mujoco-py、gym与baseline一站式安装指南
1. 为什么需要搭建强化学习环境刚接触强化学习的朋友们经常会遇到一个头疼的问题明明看懂了算法原理代码也写得七七八八但就是跑不起来。这往往是因为缺少一个标准化的实验环境。就像你要做化学实验需要试管和烧杯一样强化学习研究也需要Mujoco这样的物理试管、gym这样的实验台、以及baseline这样的标准试剂。我刚开始做机械臂控制项目时花了整整两周时间折腾环境配置。最崩溃的是明明按照教程一步步操作却总是报各种奇怪的错误。后来才发现是Mujoco版本和mujoco-py不兼容导致的。所以今天我想把踩过的坑都总结出来帮你一次性搞定这个基建工程。这个环境最大的价值在于Mujoco提供高精度的物理仿真特别是对机器人控制任务mujoco-py让Python可以调用Mujoco的APIgym标准化了强化学习的交互接口baseline则提供了可靠的算法实现参考注意整个过程需要Linux系统推荐Ubuntu 18.04Windows用户建议使用WSL22. 安装Mujoco物理引擎2.1 获取安装包与许可证首先到Mujoco官网下载最新版目前是2.3.1。虽然教程里常用2.0或2.1版本但我强烈建议用新版因为对现代硬件支持更好。下载页面需要填写邮箱之后会收到包含下载链接的邮件。注册时有个小技巧用教育邮箱可以申请1年免费license。我帮学生申请时发现有些学校的邮箱可能需要手动激活SMTP功能才能收到验证邮件。如果没收到邮件记得检查垃圾箱。下载完成后按这个顺序操作mkdir -p ~/.mujoco # 创建隐藏目录 cp mujoco231_linux.zip ~/.mujoco cd ~/.mujoco unzip mujoco231_linux.zip mv mujoco231_linux mujoco231 # 必须重命名2.2 配置环境变量很多同学在这一步会出错特别是双显卡笔记本用户。除了常规的LD_LIBRARY_PATH还需要设置GPU相关变量echo export LD_LIBRARY_PATH$LD_LIBRARY_PATH:~/.mujoco/mujoco231/bin ~/.bashrc echo export MUJOCO_PY_MUJOCO_PATH~/.mujoco/mujoco231 ~/.bashrc echo export MUJOCO_PY_MJKEY_PATH~/.mujoco/mjkey.txt ~/.bashrc source ~/.bashrc验证安装是否成功cd ~/.mujoco/mujoco231/bin ./simulate ../model/humanoid.xml如果看到一个人形模型在窗口里摇晃说明物理引擎已经正常工作。常见问题包括报错libGL error安装libgl1-mesa-glx窗口闪退检查显卡驱动是否安装正确3. 安装mujoco-py Python接口3.1 解决依赖问题mujoco-py的安装堪称依赖地狱我整理了一份完整的依赖清单sudo apt update sudo apt install -y \ libosmesa6-dev libgl1-mesa-dev libglfw3 patchelf \ python3-dev python3-pip python3-setuptools特别提醒如果系统里有多个Python版本建议先用which python3确认路径。我遇到过因为conda环境和系统Python混用导致的奇怪错误。3.2 两种安装方式对比方式一直接pip安装推荐新手pip install mujoco-py2.1.2.14 # 注意版本号方式二源码编译适合定制需求git clone https://github.com/openai/mujoco-py.git cd mujoco-py pip install -r requirements.txt pip install -r requirements.dev.txt python setup.py install测试安装是否成功import mujoco_py model mujoco_py.load_model_from_path(~/.mujoco/mujoco231/model/humanoid.xml) sim mujoco_py.MjSim(model) print(sim.data.qpos) # 应该输出一组数据4. 配置OpenAI Gym环境4.1 完整安装指南Gym现在分核心包和扩展包建议这样安装git clone https://github.com/openai/gym.git cd gym pip install -e .[mujoco] # 只安装Mujoco相关环境如果想玩Atari游戏还需要额外依赖sudo apt install cmake zlib1g-dev swig pip install -e .[atari]4.2 常见版本冲突解决最头疼的问题是Gym版本与Mujoco版本的匹配。这是我的版本组合建议Gym 0.21.0 Mujoco 2.1.0Gym 0.26.2 Mujoco 2.3.1测试代码import gym env gym.make(Ant-v4) # Mujoco环境 obs env.reset() for _ in range(100): env.render() action env.action_space.sample() obs, reward, done, _ env.step(action)5. 部署Baseline算法库5.1 完整安装流程Baselines对系统要求较高需要先安装MPIsudo apt install openmpi-bin libopenmpi-dev pip install mpi4py然后安装Baselinesgit clone https://github.com/openai/baselines.git cd baselines pip install -e .5.2 算法测试示例用PPO算法训练倒立摆python -m baselines.run --algppo2 --envCartPole-v1 --num_timesteps1e5训练完成后可以可视化结果from baselines.common.plot_util import plot_results plot_results(log_dir) # 会自动生成训练曲线图6. 环境验证与排错指南6.1 整体验证方案我设计了一个完整的测试脚本import mujoco_py, gym, baselines from baselines import bench, logger def test_mujoco(): try: model mujoco_py.load_model_from_path(f{mujoco_py.utils.discover_mujoco()[0]}/model/humanoid.xml) sim mujoco_py.MjSim(model) return True except Exception as e: print(fMujoco error: {e}) return False def test_gym(): try: env gym.make(Humanoid-v4) env.reset() env.close() return True except Exception as e: print(fGym error: {e}) return False if test_mujoco() and test_gym(): print(All tests passed!)6.2 常见错误解决方案GLFW错误sudo apt install libglfw3-dev export MUJOCO_GLglfw版本冲突 建议使用虚拟环境python -m venv rl_env source rl_env/bin/activate渲染黑屏 尝试改用离屏渲染env gym.make(Humanoid-v4, render_modergb_array)最后提醒一点所有路径都不要包含中文或特殊字符这是很多奇怪错误的根源。我在实验室的服务器上部署时就因为用户目录包含下划线导致mujoco-py找不到模型文件