近年来,强化学习的研究热度不断攀升,在智能制造、自动驾驶、大语言模型等多个领域取得了耀眼成绩,展示出巨大的研究潜力。然而,强化学习算法高效、可靠的工程实现仍是长期存在的问题。由于其算法结构的复杂性,微小的代码差异就可能严重影响实际性能。
为了解决这一问题,科研和开发者社区先后提出了多个强化学习框架,如强调稳定性和可靠性的 Stable-Baselines3、模块化设计的 Tianshou 以及单文件实现算法的 CleanRL,为强化学习的学术研究和应用开发做出了积极贡献。然而,大部分项目的活跃周期较短,未建立合理的长期演进计划,并且代码风格迥异,限制了社区的开源协作。它们也没有构建完整的项目生态,仅专注于模型训练,而忽略了评估、部署等现实需求。同时,这些项目缺乏完备的测试数据,导致复现成本极高,阻碍了后续研究的进行。
为了解决以上问题,来自香港理工大学、宁波东方理工大学(暂名)、普渡大学和大疆科技的研究者和算法团队,受到电信中「长期演进技术(LTE)」的启发,发布了名为 RLLTE 的开源强化学习框架,旨在为促进强化学习研究和应用提供开发组件和工程标准。RLLTE 不仅提供高质量的算法实现,还可作为工具库用于新算法的开发。
图 1 RLLTE 框架示意图
RLLTE 从「探索 - 利用」的角度出发对强化学习算法进行完全解耦,将它们分解为若干最小基元,例如用于处理观测的编码器(Encoder),以及用于经验存储和采样的存储器(Storage)。RLLTE 为每一种基元提供了丰富的模组供开发者选择,使得开发者可以以「搭积木」的方式进行强化学习算法的构建。RLLTE 框架的主要功能和亮点如下:
图 2 RLLTE 框架和其他常见开源 RL 框架的功能对比
RLLTE 框架主要包含三个层级:核心层(Core)、应用层(Application)以及工具层(Tool)。
图 3 RLLTE 核心层架构
RLLTE 为每一类基元提供了大量模组供开发者选择。例如,storage 模块中提供了 VanillaReplayStorage 和 DictReplayStorage 分别用于存储普通格式和字典格式的观测数据。
用户可以直接调用 RLLTE 实现好的算法进行训练,例如使用 DrQ-v2 算法解决视觉控制任务:
开始训练,将会看到以下输出:
或者,使用内置的算法原型和模块进行快速算法开发:
使用 RLLTE,开发者只需几十行代码即可实现 A2C 等知名强化学习算法。并且,对于实现好的算法,开发者可以更换其内置模块以进行性能比较和算法改进。例如,比较不同的 Encoder 对同一算法性能的影响:
对于训练好的模型,开发者可以调用 rllte.evaluation 中的工具进行算法评估和可视化:
在学术研究中,使用 rllte.hub 快速获取算法的训练数据和模型参数:
RLLTE 是首个尝试引入大语言模型的强化学习框架,以此来降低开发者的学习成本,以及协助进行强化学习应用的开发。
RLLTE 参考了 LocalGPT 等项目的设计理念,开发了 Copilot,无需额外训练并且保证用户数据的绝对隐私。其首先使用 instructor embedding 工具对由项目文档、教程以及强化学习论文等构成的语料库进行处理,以建立本地化的向量数据库,然后使用诸如 Vicuna-7B 的大模型对问题进行理解,并基于该向量数据库给出答案。用户可以根据自己的算力情况自由更换基础模型,未来我们也将进一步丰富该语料库并添加更多高级功能来实现更加智能的强化学习专属 Copilot。
作为一个长期演进的强化学习框架,RLLTE 未来将持续跟踪最新的研究进展并提供高质量的算法实现,以适应开发者变化的需求并对强化学习社区产生积极影响。