DRLib
DRLib 是一个简洁高效的深度强化学习开源库,旨在降低离线策略(Off-Policy)算法的研究与应用门槛。它基于 OpenAI Spinning Up 重构,完美支持 TensorFlow 和 PyTorch 双框架,并原生集成了 Hindsight Experience Replay (HER)、Prioritized Experience Replay (PER) 以及最新的 D2SR 奖励函数设计方法。
针对现有工具在机器人控制等稀疏奖励任务中配置复杂、调试困难的问题,DRLib 进行了针对性优化。它移除了繁琐的多进程实验网格封装,提供了更友好的类结构接口,特别适配 PyCharm 等 IDE 的断点调试功能,让开发者能轻松排查代码逻辑。此外,DRLib 还实现了便捷的并行自动调参机制,并支持 GPU 加速,显著提升了训练效率。
这款工具非常适合强化学习领域的研究人员、高校学生以及从事机器人开发的工程师使用。无论你是希望快速复现 DDPG、TD3、SAC 等主流算法,还是需要在真实机械臂任务中验证 HER 与 PER 的效果,DRLib 都能提供从环境配置到模型训练的一站式支持。其详尽的安装教程和清晰的代码结构,能帮助新手在两小时内完成从零部署,是探索深度强化学习理想的实践平台。
使用场景
某机器人实验室的研究团队正在开发一款机械臂抓取系统,需要利用深度强化学习让机械臂在稀疏奖励环境下快速学会推物体到指定位置。
没有 DRLib 时
- 算法集成困难:研究人员若想同时使用 HER( hindsight experience replay)和 PER(优先经验回放)来提升样本效率,需手动修改底层代码,极易引入 Bug 且耗时数周。
- 调试体验糟糕:基于原始 Spinning Up 框架的多进程封装复杂,在 PyCharm 中直接断点调试经常报错,导致排查问题如同“盲人摸象”。
- 框架选择受限:团队内部既有习惯 TensorFlow 的成员也有倾向 PyTorch 的成员,缺乏统一且支持 GPU 加速的双框架代码库,协作成本高。
- 环境配置繁琐:从零搭建包含 Mujoco、MPI 及特定版本深度学习库的环境往往需要数天,依赖冲突频发,新手难以入手。
使用 DRLib 后
- 一键启用高级策略:只需在参数文件中勾选选项,即可立即为 SAC 或 TD3 等算法集成 HER 与 PER 功能,将原本数周的集成工作缩短至几分钟。
- 本地调试流畅:DRLib 简化了多进程包装器,研究人员可直接在 PyCharm 中进行单步调试,快速定位逻辑错误,开发效率显著提升。
- 双框架灵活切换:团队可根据需求自由选择 TF1 或 PyTorch 版本,且 PyTorch 版本原生支持 GPU 加速,满足了不同成员的开发习惯与性能需求。
- 极速环境部署:依托详细的安装教程和预设脚本,团队成员能在两小时内完成从零到可运行的全套环境配置,迅速投入实验。
DRLib 通过高度集成的算法模块与友好的调试设计,将机器人强化学习的研发门槛从“专家级”降低至“工程级”,大幅加速了从理论验证到真机部署的进程。
运行环境要求
- Linux
- Windows
- 可选
- 若使用 TensorFlow-GPU 需 CUDA 兼容显卡及对应驱动
- 若使用 PyTorch-GPU,支持 CUDA 9.2, 10.1, 10.2
- 未明确具体显存要求
未说明

快速开始
DRLib:一个简洁的深度强化学习库,集成了几乎所有基于离策略的强化学习算法,并支持HER和PER。
一个简洁的深度强化学习库,集成了几乎所有基于离策略的强化学习算法,并支持HER和PER。该库基于https://github.com/openai/spinningup中的代码编写,既可以用TensorFlow实现,也可以用PyTorch实现。 与Spinning Up相比,为了便于使用,删除了多进程和实验网格封装部分。此外,我们库中的代码在PyCharm中调试起来非常方便~
欢迎大家关注我的最新工作D2SR,基于切换的密集转稀疏的高效奖励函数设计方法:
核心代码已经开源在本仓库:D2SSR
对应的中文版论文也在这个仓库中:D2SR: Transferring Dense Reward Function to Sparse by Network Resetting
欢迎大家关注我的最新工作RHER,简洁高效的HER变体: https://github.com/kaixindelele/RHER
最新的、全面的实验结果:
4种tf,3种torch的HER算法在三个操作任务的测试结果。
画图脚本示例:
python spinup_utils/plot.py HER_DRLib_mpi1/2 --select Push
#如果是Windows建议用绝对路径,否则找不到文件
保存一个训练好的模型:net/replay_buffer/norm!
python train_torch_mpi_norm_save.py
重载测试一个训练好的模型:net/replay_buffer/norm!
python train_torch_mpi_norm_load.py
项目特点:
tf1和pytorch两个版本的算法,前者快,后者新,任君选择;
在spinup的基础上,封装了DDPG, TD3, SAC等主流强化算法,相比原来的函数形式的封装,调用更方便,且加了pytorch的GPU调用;
添加了HER和PER功能,非常适合做机器人相关任务的同学们;
实现了最简单的并行自动调参(ExperimentGrid)和多进程(MPI_fork-实现了,没有完全实现)部分,适合新手在pycharm中debug,原版的直接调试经常会报错~
教程链接:【Spinning Up】四、python同时启动多个不同参数脚本
多进程教程:没写~
我终于把tf版本-基于mpi的多进程调好了~
torch版本的没有测试完毕,有报错!
如果大家的CPU核心足够多的情况下,试试mpi多进程,性能会提升比较大的。
目前测试的结果是,tf-DDPG的性能最佳,TD3的结果竟然会比ddpg的差,简直了~
最后,全网最详细的环境配置教程!亲测两个小时内,从零配置完全套环境!
求三连,不行的话,求个star!
1. Installation
克隆仓库并进入目录:
git clone https://github.com/kaixindelele/DRLib.git cd DRLib创建anaconda DRLib_env环境:
conda create -n DRLib_env python=3.6.9 source activate DRLib_env安装pip_requirement.txt中的依赖:
pip install -r pip_requirement.txt如果安装mpi4py失败,可以尝试以下命令(只有这一种方式能成功安装):
conda install mpi4py或者直接参考下面的链接: ubuntu-windows-install-mpi4py-亲测好使!
conda install seaborn==0.8.1 scipy -y安装tensorflow-gpu=1.14.0
conda install tensorflow-gpu==1.14.0 # 如果你有一块兼容CUDA的显卡和正确的驱动程序安装PyTorch和 torchvision:
# CUDA 9.2 conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=9.2 -c pytorch # CUDA 10.1 conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch # CUDA 10.2 conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch # 仅CPU conda install pytorch==1.6.0 torchvision==0.7.0 cpuonly -c pytorch # 或者使用pip安装 pip --default-timeout=100 install torch -i http://pypi.douban.com/simple --trusted-host pypi.douban.com [pip install torch 在线安装!非离线!](https://blog.csdn.net/hehedadaq/article/details/111480313)安装mujoco和 mujoco-py:
参考:https://blog.csdn.net/hehedadaq/article/details/109012048安装gym[all]:
参考:https://blog.csdn.net/hehedadaq/article/details/110423154
2. Training models
- 示例1. SAC-tf1-HER-PER with FetchPush-v1:
修改arguments.py中的参数,选择环境、强化学习算法,是否使用PER和HER、GPU编号等。
使用train_tf.py或train_torch.py运行:
python train_tf.py实验结果发布到本地:https://blog.csdn.net/hehedadaq/article/details/114045615
绘制结果图表:https://blog.csdn.net/hehedadaq/article/details/114044217
超强版强化学习画图脚本!
相比于原始的plot.py文件,增加了如下的功能
1.可以直接在pycharm或者vscode执行,也可以用命令行传参;
2.按exp_name排序,而不是按时间排序;
3.固定好每个exp_name的颜色;
4.可以调节曲线的线宽,便于观察;
5.保存图片到本地,便于远程ssh画图~
6.自动显示全屏
7.图片自适应
8.针对颜色不敏感的人群,可以在每条legend上注明性能值,和性能序号
9.对图例legend根据性能从高到低排序,便于分析比较
10.提供clip_xaxis值,对训练程度进行统一截断,图看起来更整洁。 seaborn版本0.8.1
3. 文件树及介绍:
.
├── algos
│ ├── pytorch
│ │ ├── ddpg_sp
│ │ │ ├── core.py-------------直接从spinup复制而来,并对部分细节进行了修改。
│ │ │ ├── ddpg_per_her.py-----继承自offPolicy.baseOffPolicy,用户可选择是否使用HER和PER。
│ │ │ ├── ddpg.py-------------直接从spinup复制而来。
│ │ │ ├── __init__.py
│ │ ├── __init__.py
│ │ ├── offPolicy
│ │ │ ├── baseOffPolicy.py----基类,包含DDPG/TD3/SAC等算法。
│ │ │ ├── norm.py-------------状态归一化器,在训练过程中不断更新均值和标准差。
│ │ ├── sac_auto
│ │ ├── sac_sp
│ │ │ ├── core.py-------------与之前类似。
│ │ │ ├── __init__.py
│ │ │ ├── sac_per_her.py
│ │ │ └── sac.py
│ │ └── td3_sp
│ │ ├── core.py
│ │ ├── __init__.py
│ │ ├── td3_gpu_class.py----基于spinup修改的TD3类。
│ │ └── td3_per_her.py
│ └── tf1
│ ├── ddpg_sp
│ │ ├── core.py
│ │ ├── DDPG_class.py------------直接从spinup复制而来,将算法由函数形式封装为类。
│ │ ├── DDPG_per_class.py--------添加了PER机制。
│ │ ├── DDPG_per_her_class.py----不继承offPolicy基类的DDPG-HER-PER实现。
│ │ ├── DDPG_per_her.py----------同时加入HER和PER。
│ │ ├── DDPG_sp.py---------------直接从spinup复制而来,并对部分细节进行了调整。
│ │ ├── __init__.py
│ ├── __init__.py
│ ├── offPolicy
│ │ ├── baseOffPolicy.py
│ │ ├── core.py
│ │ ├── norm.py
│ ├── sac_auto--------------------自动调节alpha参数的SAC版本。
│ │ ├── core.py
│ │ ├── __init__.py
│ │ ├── sac_auto_class.py
│ │ ├── sac_auto_per_class.py
│ │ └── sac_auto_per_her.py
│ ├── sac_sp--------------------alpha=0.2的SAC版本。
│ │ ├── core.py
│ │ ├── __init__.py
│ │ ├── SAC_class.py
│ │ ├── SAC_per_class.py
│ │ ├── SAC_per_her.py
│ │ ├── SAC_sp.py
│ └── td3_sp
│ ├── core.py
│ ├── __init__.py
│ ├── TD3_class.py
│ ├── TD3_per_class.py
│ ├── TD3_per_her_class.py
│ ├── TD3_per_her.py
│ ├── TD3_sp.py
├── arguments.py-----------------------超参数脚本
├── drlib_tree.txt
├── HER_DRLib_exps---------------------演示实验日志
│ ├── 2021-02-21_HER_TD3_FetchPush-v1
│ │ ├── 2021-02-21_18-26-08-HER_TD3_FetchPush-v1_s123
│ │ │ ├── checkpoint
│ │ │ ├── config.json
│ │ │ ├── params.data-00000-of-00001
│ │ │ ├── params.index
│ │ │ ├── progress.txt
│ │ │ └── Script_backup.py
├── memory
│ ├── __init__.py
│ ├── per_memory.py--------------mofan版本
│ ├── simple_memory.py-----------mofan版本
│ ├── sp_memory.py---------------spinningup tf1版本,简单的均匀缓冲区记忆库类。
│ ├── sp_memory_torch.py---------spinningup torch-gpu版本,简单的均匀缓冲区记忆库类。
│ ├── sp_per_memory.py-----------spinningup tf1版本,PER缓冲区记忆库类。
│ └── sp_per_memory_torch.py
├── pip_requirement.txt------------pip安装依赖,不包括mujoco-py、gym、tf、torch。
├── spinup_utils-------------------来自spinningup的一些工具,用于结果绘图、日志记录等。
│ ├── delete_no_checkpoint.py----删除未完成实验的文件夹。
│ ├── __init__.py
│ ├── logx.py
│ ├── mpi_tf.py
│ ├── mpi_tools.py
│ ├── plot.py
│ ├── print_logger.py------------将终端输出的信息保存到本地日志文件。
│ ├── run_utils.py---------------目前尚未使用,还需学习多进程技术。
│ ├── serialization_utils.py
│ └── user_config.py
├── train_tf1.py--------------tf1版本的主程序
└── train_torch.py------------torch版本的主程序
4. HER介绍:
HER的实现基于以下代码:
可以收敛,但代码难度较高。https://github.com/openai/baselines
也可以收敛,但仅限于DDPG-torch-cpu。https://github.com/sush1996/DDPG_Fetch
无法收敛,但代码较为简单。https://github.com/Stable-Baselines-Team/stable-baselines
4.1. 我的理解与视频:
用“种瓜得豆”来解释HER: 第一步在春天(state),种瓜(origin-goal)得豆,通过HER,把目标换成种豆,按照之前的操作,可以学会在春天种豆得豆; 第二步种米得瓜,学会种瓜得瓜; 即只要是智能体中间经历过的状态,都可以当做它的目标,进行学会。 即如果智能体能遍历所有的状态空间,那么它就可以学会达到整个状态空间。
论文解析视频:https://www.bilibili.com/video/BV1BA411x7Wm
代码解析文档:https://github.com/kaixindelele/DRLib/blob/main/algos/pytorch/offPolicy/HER_introduction.md
4.2. HER的关键技巧:
- 状态归一化:使FetchPush-v1任务的成功率从0提升至1。
- Q值裁剪:使FetchPickAndPlace-v1任务的成功率从0.5提升至0.7。
- 动作L2正则化:对Push任务效果不明显。
4.3. HER-DDPG在FetchPush-v1上的表现:
5. PER介绍:
参考:off-policy全系列(DDPG-TD3-SAC-SAC-auto)+优先经验回放PER-代码-实验结果分析
6. 总结:
这个库我封装了好久,整个代码库简洁、方便、功能比较齐全,在环境配置这块几乎是手把手教程,希望能给大家节省一些时间~
从零开始配置,不到两小时,从下载代码库,到配置环境,到在自己的环境中跑通,全流程非常流畅。
6.1. 下一步计划添加的功能:
PPO的封装;---PPO不封装了!机械臂操作不用PPO~
DQN的封装;---这个好像用的人也不多,放弃了~
多进程的封装;
ExperimentGrid的封装;
7. 联系方式:
深度强化学习-DRL:799378128
欢迎关注知乎账号:未入门的炼丹学徒
CSDN账号:https://blog.csdn.net/hehedadaq
星标历史
欢迎引用!
@inproceedings{luo2023d2sr, title={D2SR: Transferring dense reward function to sparse by network resetting}, author={Luo, Yongle and Wang, Yuxin and Dong, Kun and Liu, Yu and Sun, Zhiyong and Zhang, Qiang and Song, Bo}, booktitle={2023 IEEE International Conference on Real-time Computing and Robotics (RCAR)}, pages={906--911}, year={2023}, organization={IEEE} }
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
