基于云端可视化交互的强化学习平台

2021-05-17 05:31姚铁锤王彦棡迟学斌王晓光
计算机工程 2021年5期
关键词:模拟器字典引擎

姚铁锤,王 珏,王彦棡,迟学斌,王晓光

(1.中国科学院计算机网络信息中心,北京 100190;2.中国科学院大学 计算机科学与技术学院,北京 100049)

0 概述

强化学习作为机器学习领域的研究热点,在博弈游戏[1-2]、机器人控制、图像处理、机器翻译、交通控制[3]和自动驾驶等任务中表现优异。随着对强化学习研究的不断深入,各个研究机构和公司相继研发了不同的强化学习实验环境和平台。

OpenAI Gym[4]集文字任务、Atari、Box2D、经典控制、MuJoCo[5]和机械手臂等物理引擎于一体,提供统一的算法接口用于强化学习算法训练。DeepMind Control Suite[6]对MuJoCo 进行封装,辅以基础强化学习算法,用于机器人控制。DeepMind Lab和TORCS(The Open Racing Car Simulator)[7]分别构建迷宫和赛车的模拟器,训练强化学习智能体的导航、3D 视觉和策略等方面能力。OpenAI Gym、DeepMind Control Suite、RLlab[8]、DeepMind Lab[9]、TORCS、Pybullet[10]和PySC2[11]等用于强化学习的实验环境均包含物理引擎和基础渲染显示模块,其中,物理引擎通过感知用户操作和物体当前状态计算物体新的状态,渲染显示模块根据物体的信息进行渲染并在显示界面感知用户的操作。然而此类强化学习环境中实验场景的物理引擎模块和渲染模块耦合性较高,且模拟渲染的方式各成一体[1,5-6,8-9,12-13],这限制了大规模集群资源的利用率,增加了强化学习训练环境部署和算法验证的难度。

2018 年加州大学伯克利分校DASARI 等人开发的RoboNet[14]平台,收集了线下实体机器人1 500 万帧手臂与物体交互的视频作为强化学习训练数据集,2019 年李飞飞团队开发的RoboTurk[15]平台则提供了137.5 h 的机器人交互数据。然而此类平台仅提供特定的数据集[5,8,12,15-17],缺少强化学习训练环境和硬件资源的支撑。此外,阿里巴巴PAI 平台[18]、腾讯智能钛平台[19]和百度AI Studio 开发平台[20]集成了Notebook、Shell 工具和Tensorflow、PyTorch 深度学习框架,侧重支持传统机器学习和深度学习算法,同样无法友好地支持需要环境模拟的强化学习算法。

本文通过设计物理引擎与渲染模块之间的数据结构、WebRender 算法和接口标准构建Web 云端交互式模型,用于对物理引擎和渲染模块进行解耦。基于该模型实现并验证针对MuJoCo 物理引擎的Web 模拟器,同时集成可视化交互开发工具和面向项目的知识管理模块,开发一个支持云端可视化交互的强化学习平台。

1 云端交互式模型

本文构建的云端交互式模型抽象了物理引擎与渲染模块之间的数据结构,通过引入WebRender 算法和相应接口,将实验环境的物理引擎和渲染模块分离,从而帮助不同物理引擎接入,促进强化学习中环境模拟标准的统一。如图1 所示,该模型涉及到客户端和服务器端之间的通信。在限定时间内,浏览器端的交互操作由操作块即操作字典(operation_dict)传入服务器端进行解析处理,服务器端通过物理引擎计算产生元素块即元素字典(element_dict)并将其传回客户端,通过Web 端渲染模块在浏览器端渲染。

图1 云端交互式模型Fig.1 Cloud interactive model

图2 所示的元素字典记录几何体的名称、类型、位置、颜色信息以及相机的类型和视角等关键信息,用于Web 端渲染模块的可视化。图3 所示的操作字典记录鼠标点击和位移等交互信息,用于不同物理引擎的物理变量计算。

图2 元素字典Fig.2 Element dictionary

图3 操作字典Fig.3 Operation dictionary

WebRender 算法通过图4 所示的3 个接口接入物理引擎,使其独立于渲染模块,具体描述如下:move_perturb 接口传入操作字典,使用自定义物理引擎计算动力学信息;move_camera 接口传入操作字典,使用自定义物理引擎计算相机位置信息;generate_element 接口使用自定义物理引擎输出元素字典。

图4 云端交互式模型接口设计Fig.4 Interfaces design of cloud interactive model

WebRender 算法通过translate_operation 解析操作字典,在给定的时间步内,循环调用move_perturb或move_camera 进行计算,并调用generate_element产生当前时间步的元素字典,最终输出最后时刻的元素字典。

WebRender 算法伪代码如下:

算法1WebRender

2 强化学习平台设计

基于云端可视化交互的强化学习平台架构如图5 所示,其中包括基础设施层、应用服务层以及接口访问层。

图5 基于云端可视化交互的强化学习平台架构Fig.5 Architecture of reinforcement learning platform based on cloud visual interaction

1)基础设施层基于异构GPU 计算资源和存储系统资源[21],采用虚拟化技术为模拟器的稳定运行和强化学习算法的使用提供软硬件保障。

2)应用服务层包括虚拟开发环境接口、可视化交互模块和基于项目的知识管理模块。虚拟开发环境接口负责前端页面对可视化工具的控制。云端交互式模拟器基于可视化交互模块实现。Web 端渲染模块采用WebGL[22]技术统一实现,物理引擎模块支持用户自定义,仅需要少量工作即可接入模拟器,提高了实验环境模拟的便捷性和统一性。基于项目的知识管理模块将强化学习所涉及的模拟器、可视化工具、数据、算法以及研究环境以项目的形式封装在虚拟化容器中,并划分为私有项目和公共项目。其中,私有项目包括发布为公共项目的功能、支持分享特定数据集、自定义算法和实验环境,公共项目可以快速复制为私有项目,用户复制后即可查看共享的知识。

3)接口访问层是用户的接入层,其中较为典型的应用是用户注册、用户统一登录接口以及用户认证模块。

3 系统实现

本文在OpenStack[23]云平台虚拟化技术的基础上,通过多台服务器搭建包含云端交互式模拟器的强化学习平台,并以MuJoCo 物理引擎为例,验证云端交互式模型接入自定义物理引擎的便捷性。

登录平台后展现的用户私有项目如图6 所示,可见其中提供了OpenAI Gym、MuJoCo-py、PyTorch等多个基础模板。

图6 用户私有项目Fig.6 User’s private project

针对MuJoCo 物理引擎的实验场景,本文平台仅通过动力学等模块的少量函数实现WebRender 算法的接口,即可使用云端交互式模拟器渲染,而无需再安装额外的依赖包。云端交互式模拟器与MuJoCo的渲染效果对比如图7 所示,其在强化学习平台上验证的效果如图8 所示。

图7 云端交互式模拟器与MuJoCo 的渲染效果对比Fig.7 Rendering effect comparison of cloud interactive simulator and MuJoCo

图8 云端交互式模拟器渲染界面Fig.8 Rendering interface of cloud interactive simulator

本文设计的平台除了集成Notebook、Shell 类基本工具,还提供了在线代码编辑器、TensorBoard、视频播放器和数据集中心等可视化开发工具,如图9所示。其中,在线代码编辑器相较Notebook 更易支持在线大规模开发,TensorBoard 能够实现函数图像、神经网络结构等数据的可视化,视频播放器便于验证需要录制视频的算法,数据集中心提供了数据集的上传、下载、管理等功能,便于用户保存、分享数据集。

图9 可视化开发工具Fig.9 Visualization development tools

4 结束语

本文在强化学习实验场景下构建云端交互式模型,并通过融合可视化工具和基于项目的知识管理模块功能,设计一站式的强化学习平台。结合MuJoCo 物理引擎在平台中实现云端交互式模拟器,以验证云端交互式模型的有效性。实验结果表明,该模型提升了物理引擎接入模拟器的便捷性,对统一实验场景的模拟标准具有一定的借鉴意义,在其基础上搭建的平台可支持100 余个具有云端交互式模拟器的项目并发稳定运行。下一步将对不同物理引擎接口标准进行优化,使平台适用于更多实验场景,同时设计分布式强化学习算法并优化集群异构资源调度过程,实现对大规模强化学习算法训练的支持和加速。

猜你喜欢
模拟器字典引擎
了不起的安检模拟器
盲盒模拟器
划船模拟器
字典的由来
大头熊的字典
蓝谷: “涉蓝”新引擎
正版字典
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
动态飞行模拟器及其发展概述