DeepMind发布Acme,高效分布式强化学习算法框架轻松编写RL智能体

简介: DeepMind 本周发布了一个强化学习优化框架Acme,可以让AI驱动的智能体在不同的执行规模上运行,从而简化强化学习算法的开发过程。

微信图片_20220109010702.jpg


DeepMind 本周发布了一个强化学习优化框架 Acme,可以让AI驱动的智能体在不同的执行规模上运行,从而简化强化学习算法的开发过程。 Acme 背后的工程师和研究人员共同撰写了一篇关于这项工作的技术论文,根据他们的说法,用这种方法创建智能体,并行性会更好。      


 微信图片_20220109010704.png


强化学习可以让智能体与环境互动,生成他们自己的训练数据,这在电子游戏、机器人技术、自动驾驶机器人出租车等领域取得了突破。 


随着所使用的培训数据量的增加,这促使设计了一个系统,使智能体与环境实例相互作用,迅速积累经验。


DeepMind 断言,将算法的单进程原型扩展到分布式系统通常需要重新实现相关的智能体,这就是 Acme 框架的用武之地 


DeepMind研究员写道,「Acme 是一个用于构建可读、高效、面向研究的 RL 算法的框架。Acme 的核心是设计用于简单描述 RL 智能体,这些智能体可以在不同规模的执行中运行,包括分布式智能体。」


「通过发布 Acme,我们的目标是使学术界和工业实验室开发的各种 RL 算法的结果更容易为整个机器学习社区复制和扩展。」


Acme 框架要实现的目标?


研究者明确指出了Acme框架的高级目标


 1 实现方法和结果可重复性2 简化新算法设计的方式3 提高RL智能体的可读性 如何实现这一目标? 从最高层次来看,我们可以将 Acme 视为一个经典的强化学习接口,其作用是将 actor(比如一个动作选择智能体)连接到环境。 actor 是一个具有选择动作、观察并实现自我更新能力的简单接口。


 从内部看,学习智能体可以拆分为「执行」和「学习」两部分。从表面上看,这使得我们在不同的多智能体之间重复使用 acting portion。


 但是,更重要的是,这提供了一个可以对学习过程进行划分和并行化处理的关键边界。我们甚至可以从此处按比例缩小规模,并在没有环境,只有固定数据集的情况下无缝攻击批RL设置(batch RL setting)。


这些不同级别的复杂度的图示如下:


      微信图片_20220109010706.gif


除了 Acme 的基础框架之外,研究人员还发布了用 Acme 框架创建的大量智能体的单进程实例。 通过跨越执行/学习边界,我们能够以分布式方式运行这些相同的智能体,过程中的改变最小。


Acme 框架首个版本主要针对学生和研究人员使用最多的单进程智能体。 研究者在 control suite、Atari 和 bsuite 等环境中对这些智能体进行了基准测试。

QQ图片20220109010759.png

点击查看原视频链接

利用 Acme 框架进行智能体训练的示例  


Acme 框架有哪些优势?


Acme是一组开发套件,用于培训强化学习智能体,用来解决复杂性和规模的问题,其组件用于从算法和策略到学习者等不同抽象层次来指导代理。 


这样做可以让idea快速迭代,并在生产过程中对这些 idea 进行评估,主要是通过训练循环、强迫性日志记录和检查点。 


一种特殊类型的 Acme actor 包括执行和学习两个组件ーー它们都被称为「智能体」ーー它们的状态更新是由learner组件中的一些步骤触发的。也就是说,智能体大部分情况会把他们的行动选择权交给他们自己的执行组件。


在 Acme 框架中,actors与环境密切交互,通过观察环境,执行动作,反过来为环境提供素材。


  微信图片_20220109010709.png


在观察了随后发生的变化后,actors 有机会更新其状态,这通常与其行动选择策略有关,这些策略决定了它们为应对环境而采取的行动。 


Acme 提供了一个位于 actor 和 learner 组件之间的数据集模块,该模块由一个名为 Reverb 的低级存储系统支持,DeepMind 本周也刚刚发布这个系统。此外,该框架建立了一个接入Reverb的通用接口,使不同风格的预处理和观察数据的持续聚合成为可能。 


Reverb是一个专为机器学习研究设计的高效、易用的数据存储和传输系统。

Reverb主要作为分布式强化学习算法的经验回放(experience replay)系统,但该系统也支持多种数据结构表示,如FIFO、LIFO和优先级队列等。


      微信图片_20220109010711.png


在 Acme 当中,执行、学习和存储组件被划分为不同的线程或进程,这带来了两个好处: 环境交互与学习过程非同步发生,以及数据生成的加速。


在其他地方,Acme允许从学习到执行以任何速率运行,只要流程保持在一定的定义公差内就可以不受阻碍。


例如,如果一个进程由于网络问题或资源不足而落后于另一个进程,速率限制器将阻塞落后者,而另一个进程将赶上来。 除了这些工具和资源,Acme 还附带了一组示例智能体,作为各自强化学习算法以及强大研究基线的参考实现。 


DeepMind研究人员写道,「通过提供这些... ... 我们希望 Acme 将有助于提高[强化学习]的可再生性地位,并为学术研究者提供简单的组件来创造新的智能体。」「此外,我们的baseline应该提供额外的衡量标准,以衡量该领域的进展。」


GitHub地址:https://github.com/deepmind/acme


论文地址:https://arxiv.org/pdf/2006.00979v1.pdf


参考链接:
https://venturebeat.com/2020/06/03/deepmind-releases-acme-a-distributed-framework-for-reinforcement-learning-algorithm-development/https://deepmind.com/research/publications/Acme

相关文章
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
1144 161
|
11月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1209 0
分布式爬虫框架Scrapy-Redis实战指南
|
5月前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
252 11
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
5月前
|
传感器 机器学习/深度学习 算法
【无人机编队】基于麻雀算法分布式无人机群自适应航迹规划和碰撞检测研究(Matlab代码实现)
【无人机编队】基于麻雀算法分布式无人机群自适应航迹规划和碰撞检测研究(Matlab代码实现)
134 2
|
5月前
|
并行计算 算法 调度
基于串行并行ADMM算法的主从配电网分布式优化控制研究(Matlab代码实现)
基于串行并行ADMM算法的主从配电网分布式优化控制研究(Matlab代码实现)
333 0
|
9月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
855 4
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
509 153
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
1309 160
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
627 160

热门文章

最新文章