0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何借助新的物理模拟引擎来加速强化学习

硬件三人行 来源:TensorFlow 作者: TensorFlow 2021-08-24 11:06 次阅读

强化学习 (Reinforcement Learning) 是一种指导机器人在现实世界完成导航和执行操作的热门方法,其本身可以简化并表示为刚性物体 [1](即受外力作用时不会变形的固体物理对象)之间的相互作用。

RL 通常会利用模拟,在有效的时间段内收集训练数据。在模拟过程中,我们会对任意数量的复杂对象做近似处理,将其视作由关节组成、且由致动器提供动力的许多刚体。但挑战也应运而生:即便是行走、使用工具或组装积木等简单的任务,RL 智能体也通常需要数百万甚至数十亿的模拟帧才能熟练地完成。

虽然通过回收模拟帧来提高训练效率的方法已经取得进展,但一些 RL 工具需仍通过模拟帧的生成分布到许多模拟器来回避这个问题。这些分布式模拟平台已经取得了亮眼表现,训练速度也非常快。但它们必须在拥有数千个 CPUGPU 的计算集群上运行,往往大多数研究人员无法访问这些 CPU 或 GPU。

通过回收模拟帧来提高训练效率

https://ai.googleblog.com/2020/08/tackling-open-challenges-in-offline.html

在“Brax:用于大规模刚体模拟的微分物理引擎 (Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation)”中,我们提出了一种新的物理模拟引擎,该引擎可以在单个 TPU 或 GPU 下可提供与大型计算集群相媲美的性能。

该引擎旨在保障在单个加速器上高效并行运行数千个物理模拟和机器学习 (ML) 算法,以及在相互连接的加速器 pod 中无缝扩展数百万个模拟。我们开源了引擎、参考 RL 算法和模拟环境,这些都可以通过 Colab 进行访问。通过使用这个新的平台,我们展现了比传统工作站安装快 100-1000 倍的训练速度。

三种典型 RL 工作流。左边显示了一个标准的工作站流程:一台配备 CPU 的机器,在这样的环境中,训练需要数小时或数天。中间显示了一个标准的分布式模拟流程:通过将模拟移交给数千台机器,训练需要几分钟。右图显示了 Brax 流程:在单个 CPU/GPU 芯片上并行推进学习和大批量模拟

Brax:用于大规模刚体模拟的微分物理引擎

https://arxiv.org/abs/2106.13281

引擎、参考 RL 算法和模拟环境

https://github.com/google/brax

Colab

https://colab.sandbox.google.com/github/google/brax/blob/main/notebooks/training.ipynb

物理模拟引擎设计机会

刚体物理在电子游戏、机器人、分子动力学、生物力学、图形和动画等领域均有应用。为了对这类系统进行准确建模,模拟器集成了来自重力、电机驱动、关节约束、物体碰撞等方面的力用于模拟物理系统根据时间所做出的动作。

模拟情形:三个球体、一个壁、两个关节和一个致动器。系统会整合每个模拟时步中的力和力矩,以更新每个物体的位置、旋转和速度

在仔细研究当今大多数物理模拟引擎的设计方式过后,不难看出,目前存在一些提高效率的潜在机会。正如我们上面所提到的,典型的机器人学习流水线会将单个学习器置于已有的、许多且并行模拟的紧密反馈中,但在分析这个架构后,人们发现:

1. 这种架构带来了巨大的延迟瓶颈。由于数据必须通过数据中心内的网络进行传输,因此学习器必须等待 10,000 多纳秒才能从模拟器中提取经验。如果这种经验在与学习器神经网络相同的设备上运行,延迟时间则会下降到不足 1 纳秒。

2. 训练智能体(一模拟步后随之更新智能体的神经网络)所需的计算量远不及打包数据(即在引擎内编组数据,转换为诸如 protobuf 之类的有线格式,然后进入 TCP 缓冲区,在学习器端撤消所有这些步骤)所需的计算量。

3. 每个模拟器中发生的计算非常相似,但并不完全相同。

Brax 设计

针对这些观察结果,Brax 旨在使物理计算在其数千个并行环境中的每一个环境中保持完全相同,方法是确保模拟没有分支(即模拟会因环境状态而发生相应变化的 “if” 逻辑)。

物理引擎的分支示例之一是在球和墙壁之间施加接触力:系统将根据球是否接触墙,执行不同的代码路径。也就是说,如果 (if) 球接触墙壁,则将执行用于模拟球从墙壁反弹的单独代码。Brax 混合使用以下三种策略来避免分支:

用连续函数代替离散分支逻辑,例如使用符号距离函数 (Signed distance function) 模拟球壁之间的接触力。这种方法可以最大程度地提高效率。

在 JAX 的即时编译期间评估分支。 许多基于环境静态属性的分支,比如两个对象是否可能发生碰撞,系统可能会在模拟时间之前对其进行评估。

在模拟期间运行分支的两侧,但只选择所需的结果。 因为这将执行一些最终没有使用的代码,所以相较于上文,它会浪费操作。

在保证计算一致完全后,整个训练体系结构的复杂度就会降低,且更便于在单个 TPU 或 GPU 上执行。这样即可消除跨机器通信的计算开销和延迟。在实践中,对于相同的工作负载,这些更改将训练成本降低了 100 -1000 倍。

Brax 环境

环境 (Environments) 是微小的封装世界,定义了 RL 智能体要学习的任务。环境不仅包含模拟世界的方法,还包含如何观察这个世界以及如何在该世界中定义目标等功能。

近年来出现了一些用于测试新的 RL 算法,并使用研究员熟悉的指标来评估这些算法影响的基准环境。Brax 内含热门 OpenAI Gym 中的 4 个即用型环境:Ant、HalfCheetah、Humanoid,以及 Reacher。

从左到右依次为:Ant、HalfCheetah、Humanoid 和 Reacher(均为适合 RL 环境的热门基准环境)

Brax 还内含三个新颖的环境:灵巧操作对象(机器人领域中的热门挑战),广义运动(智能体前往放置在其周围任意位置的目标),和工业机器人手臂的模拟。

性能基准

分析 Brax 性能的第一步是测试它模拟大批量环境的速度,这是学习器需要克服的关键瓶颈。只有这样才能获取足够的经验来开展快速学习。

下面的这两个图显示了 Brax 可以产生的实际步数(随环境状态变化而更新),它的任务是并行模拟越来越多的环境。左图显示,在 Brax 中,每秒步数与并行环境的数量成线性比例,仅在 10,000 个环境时遇到内存带宽瓶颈,这不仅足以训练单个智能体,但适合训练整个群体智能体。

第一,Brax 不仅在 TPU 上表现良好,且在高端 GPU 上也表现良好(参见 V100 和 P100 曲线),第二,通过利用 JAX 的设备并行原语,Brax 可在多个设备之间无缝扩展,实现每秒数亿个物理步数(参见 TPUv3 8x8 曲线,即 64 个 TPUv3 芯片通过高速互连直接相互连接)。

分析 Brax 性能的另一种方法是评估其对在单个工作站上运行强化学习实验所需时间的影响。在这里,我们对比了 Brax 在 Ant 与 OpenAI 基准测试环境中训练,后者由 MuJoCo 物理引擎提供支持。

Ant

https://github.com/google/brax/blob/main/brax/envs/ant.py

OpenAI

https://github.com/openai/gym/blob/master/gym/envs/mujoco/ant.py

在下图中,蓝线代表已安装的标准工作站,其中学习器在 GPU 上运行,模拟器在 CPU 上运行。我们看到通过训练 Ant 按照合理的熟练度(y 轴上的分数为 4000)来运行,所需的时间从蓝线的大约 3 小时下降到在加速器硬件上使用 Brax 时的大约 10 秒。

有趣的是,即使仅使用 CPU(灰线),Brax 的执行速度也加快了一个数量级。这得益于处于同一进程中的学习器和模拟器。

Brax 的优化 PPO 与标准 GPU 支持的 PPO 在学习 MuJoCo-Ant-v2 环境时,其执行 1 千万步时的表现对比情况。请注意,x 轴是执行作业所需的实际时间(以秒为单位)。阴影区域表示超过 5 个副本的最低和最高性能种子,实线表示平均值

PPO

https://arxiv.org/abs/1707.06347

物理保真

设计与现实世界行为相匹配的模拟器是一个尚未解决的已知难题。尽管如此,将 Brax 与参考模拟器进行比较,至少确保其产生同样有效的输出。在这种情况下,我们再次比较 Brax 与 MuJoCo,后者因其模拟质量而广受好评。我们希望看到的是,在其他条件相同的情况下,无论是在 MuJoCo 还是 Brax 中训练,策略都具有相似的奖励轨迹。

SAC

https://arxiv.org/pdf/1812.05905.pdf

这些曲线表明,随着两个模拟器的奖励以大致相同的速度增长,这两个引擎计算物理的复杂性和难度都相当。由于两条曲线都以大致相同的奖励达到顶峰,所以我们相信,相同的常规物理限制适用于在任一模拟中尽其所能操作的智能体。

我们还可以测量 Brax 保持线性动量、角动量和能量守恒的能力。

这种物理模拟质量的衡量标准由 MuJoCo 的作者率先提出,其目的是了解模拟在计算越来越大的时间步长时的偏航情况。在这里,Brax 的表现与其近邻曲线相似。

结论

我们邀请研究人员通过在 Brax Training Colab 中训练他们自己的策略,对 Brax 的物理保真度进行更定性的测量。学习到的轨迹与在 OpenAI Gym 中看到的轨迹非常相似。

我们的工作使快速、可扩展的 RL 和机器人研究变得更加容易,以前只能通过大型计算集群才能实现的研究现在可以在工作站上运行,或者托管在 Google Colaboratory 免费运行。我们的 Github 代码库不仅包括 Brax 模拟引擎,还包括大量用于快速训练的参考 RL 算法。我们迫不及待地想看看 Brax 能够实现什么样的新研究。

托管在 Google Colaboratory

https://colab.research.google.com/github/google/brax/blob/main/notebooks/training.ipynb

Github 代码库

https://github.com/google/brax

致谢

我们要感谢我们的论文共同作者:Anton Raichuk、Sertan Girgin、Igor Mordatch 和 Olivier Bachem。我们还要感谢 Erwin Coumans 关于构建物理引擎的建议、Blake Hechtman 和 James Bradbury 为 JAX 和 XLA 提供的优化帮助,以及 Luke Metz 和 Shane Gu 的建议。我们还要感谢 Vijay Sundaram、Wright Bagwell、Matt Leffler、Gavin Dodd、Brad Mckee 和 Logan Olson,感谢他们帮助孵化这个项目。

[1] 由于现实世界的复杂性,我们仍然在开展探索柔性物体的物理研究。

柔性物体

https://ai.googleblog.com/2021/05/learning-to-manipulate-deformable.html

发布人:Google Research 高级软件工程师 C. Daniel Freeman 和资深软件工程师 Erik Frey

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10437

    浏览量

    206526
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4415

    浏览量

    126642
  • 模拟器
    +关注

    关注

    2

    文章

    816

    浏览量

    42695
  • OpenAI
    +关注

    关注

    8

    文章

    752

    浏览量

    5910

原文标题:借助新的物理模拟引擎加速强化学习

文章出处:【微信号:yingjiansanrenxing,微信公众号:硬件三人行】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    反向强化学习的思路

    强化学习的另一种策略(二)
    发表于 04-03 12:10

    深度强化学习实战

    一:深度学习DeepLearning实战时间地点:1 月 15日— 1 月18 日二:深度强化学习核心技术实战时间地点: 1 月 27 日— 1 月30 日(第一天报到 授课三天;提前环境部署 电脑
    发表于 01-10 13:42

    将深度学习强化学习相结合的深度强化学习DRL

    深度强化学习DRL自提出以来, 已在理论和应用方面均取得了显著的成果。尤其是谷歌DeepMind团队基于深度强化学习DRL研发的AlphaGo,将深度强化学习DRL成推上新的热点和高度,成为人工智能历史上一个新的里程碑。因此,深
    发表于 06-29 18:36 2.8w次阅读

    萨顿科普了强化学习、深度强化学习,并谈到了这项技术的潜力和发展方向

    萨顿在专访中(再次)科普了强化学习、深度强化学习,并谈到了这项技术的潜力,以及接下来的发展方向:预测学习
    的头像 发表于 12-27 09:07 1.1w次阅读

    人工智能机器学习强化学习

    强化学习是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,强化学习不同于连接主义学习中的监督
    发表于 05-30 06:53 1255次阅读

    什么是强化学习?纯强化学习有意义吗?强化学习有什么的致命缺陷?

    强化学习是人工智能基本的子领域之一,在强化学习的框架中,智能体通过与环境互动,来学习采取何种动作能使其在给定环境中的长期奖励最大化,就像在上述的棋盘游戏寓言中,你通过与棋盘的互动来学习
    的头像 发表于 07-15 10:56 1.7w次阅读
    什么是<b class='flag-5'>强化学习</b>?纯<b class='flag-5'>强化学习</b>有意义吗?<b class='flag-5'>强化学习</b>有什么的致命缺陷?

    基于强化学习的MADDPG算法原理及实现

    之前接触的强化学习算法都是单个智能体的强化学习算法,但是也有很多重要的应用场景牵涉到多个智能体之间的交互。
    的头像 发表于 11-02 16:18 2.1w次阅读

    谷歌AI发布足球游戏强化学习训练环境“足球引擎

    强化学习环境的核心是一种先进的足球游戏模拟,称为“足球引擎”,它基于一个足球游戏版本经大量修改而成。根据两支对方球队的输入动作,模拟了足球比赛中的常见事件和场景,包括进球、犯规、角球
    的头像 发表于 06-15 10:33 3968次阅读

    一文详谈机器学习强化学习

    强化学习属于机器学习中的一个子集,它使代理能够理解在特定环境中执行特定操作的相应结果。目前,相当一部分机器人就在使用强化学习掌握种种新能力。
    发表于 11-06 15:33 1576次阅读

    DeepMind发布强化学习库RLax

    RLax(发音为“ relax”)是建立在JAX之上的库,它公开了用于实施强化学习智能体的有用构建块。。报道:深度强化学习实验室作者:DeepRL ...
    的头像 发表于 12-10 18:43 524次阅读

    机器学习中的无模型强化学习算法及研究综述

    强化学习( Reinforcement learning,RL)作为机器学习领域中与监督学习、无监督学习并列的第三种学习范式,通过与环境进行
    发表于 04-08 11:41 11次下载
    机器<b class='flag-5'>学习</b>中的无模型<b class='flag-5'>强化学习</b>算法及研究综述

    强化学习的基础知识和6种基本算法解释

    来源:DeepHub IMBA 强化学习的基础知识和概念简介(无模型、在线学习、离线强化学习等) 机器学习(ML)分为三个分支:监督学习、无
    的头像 发表于 12-20 14:00 878次阅读

    强化学习的基础知识和6种基本算法解释

    来源:DeepHubIMBA强化学习的基础知识和概念简介(无模型、在线学习、离线强化学习等)机器学习(ML)分为三个分支:监督学习、无监督
    的头像 发表于 01-05 14:54 484次阅读
    <b class='flag-5'>强化学习</b>的基础知识和6种基本算法解释

    模拟矩阵在深度强化学习智能控制系统中的应用

    讯维模拟矩阵在深度强化学习智能控制系统中的应用主要是通过构建一个包含多种环境信息和动作空间的模拟矩阵,来模拟和预测深度强化学习智能控制系统在
    的头像 发表于 09-04 14:26 327次阅读
    <b class='flag-5'>模拟</b>矩阵在深度<b class='flag-5'>强化学习</b>智能控制系统中的应用

    什么是强化学习

    强化学习是机器学习的方式之一,它与监督学习、无监督学习并列,是三种机器学习训练方法之一。 在围棋上击败世界第一李世石的 AlphaGo、在《
    的头像 发表于 10-30 11:36 1628次阅读
    什么是<b class='flag-5'>强化学习</b>