阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Facebook 开源 Horizon:首个用于大规模产品和服务的强化学习平台

  • 2018-11-08
  • 本文字数:4230 字

    阅读完需:约 14 分钟

Facebook开源Horizon:首个用于大规模产品和服务的强化学习平台
  • Horizon 是首个使用应用强化学习(RL)在大规模生产环境中优化系统的端到端开源平台。

  • 这个版本中包含的工作流和算法是以开放框架为基础构建的——PyTorch 1.0、Caffe2 和 Spark——使得任何大规模使用 RL 的人都可以使用 Horizon。

  • 在过去的一年里,我们内部已经在多个应用程序中开使用了 Horizon,包括帮助定制 M 建议、发送更有意义的通知以及优化流媒体视频质量。


今天,我们开源了 Horizon,一个端到端的应用强化学习平台,使用 RL 来优化数十亿人使用的产品和服务。我们开发这个平台是为了弥补 RL 在研究领域日益增长的影响力和在生产领域历来狭窄的应用范围之间的差距。过去一年,我们在 Facebook 部署了 Horizon,提高了该平台把 RL 基于决策的方法运用到大规模应用程序的能力。虽然人们都在开发增强学习应用程序,但 Horizon 是第一个用于生产的开源 RL 平台。


虽然我们正在进行各种强化学习项目,这些项目使用反馈来提高性能,但是,Horizon 主要关注的是将 RL 应用于大型系统。这个版本包括模拟环境的工作流以及用于预处理、训练和导出生产环境模型的分布式平台。该平台已经为 Facebook 带来了性能优势,包括发送更相关的通知、优化流媒体视频比特率以及改进 Messenger 中的 M 建议。但是,Horizon 的开放设计和工具集也有可能让该领域的其他人受益,特别是那些有兴趣使用应用 RL 从大量信息中学习策略的公司和研究团队。Horizon 不仅仅证明了我们在 RL 领域的持续投入,也证明了这个有前途的人工智能研究领域现在可以运用到实际的应用程序中。

大规模决策:Horizon 如何把 RL 运用到生产环境

机器学习(ML)系统通常会生成预测,但随后需要工程师将这些预测转换为策略(即行动策略)。另一方面,RL 创建的系统能够做出决策、采取行动,然后根据反馈进行调整。这种方法有可能优化一组决策,而不需要手工制定策略。例如,RL 系统可以根据其他 ML 系统的估计和视频缓冲区的状态,直接为特定播放中的视频选择高比特率或低比特率。


虽然 RL 的策略优化能力在研究中显示出了良好的效果,但人工智能社区很难使用这些模型处理生产环境中有很大差别的实际需求。借助 Horizon,我们关注的是如何将两种完全不同类型的应用连接起来:复杂但终究有限的研究用模拟器环境;基于 ML 的策略优化系统,依赖于存在固有噪声的、稀疏的、任意分布的数据。与游戏中基于 RL 的机器人可以对一组有限且可预见、可重复的规则做出反应不同,现实场景很难模仿,反馈更难以纳入已部署代码,与在可控的实验环境中相比,任何修改通常都需要更加小心。


就像深度学习彻底改变了神经网络的应用那样,像 Horizon 这样的项目有可能将定义科学家和工程师如何将 RL 应用到生产环境中,使用策略优化来产生影响。特别地,Horizon 考虑了特定于生产环境的问题,包括特征规范化、分布式训练、大规模部署和服务、具有数千种不同特征类型和分布的数据集,以及高维离散的连续动作空间。



Horizon 的管道包括三个组件:


(1)时间轴生成,运行在数千个 CPU 上;


(2)训练,跨多个 GPU;


(3)服务,这也跨越了数千台机器。


这个管道允许 Horizon 扩展到 Facebook 的数据集。对于策略学习(例如使用 OpenAI Gym), Horizon 可以选择在一个闭环中将数据直接提供给训练过程。


Horizon 还解决了大规模构建和部署 RL 系统所带来的独特挑战。RL 通常以在线方式训练,系统从随机选择动作开始,然后实时更新。考虑到这些系统在 Facebook 的规模和影响,这种随机性和实时更新目前还不是一个选项。相反,我们的模型是从在一个产品工程师设计的策略上训练开始的。这些模型必须离线训练,使用 off-policy 方法和反事实策略评估(CPE)来估计 RL 模型在过去的决策中会做什么。一旦 CPE 结果被接受,我们将在一个小实验中部署 RL 模型,收集结果信息。有趣的是,我们发现,与之前相对稳定的系统不同,RL 系统会随着时间的推移不断学习和改进。


行业数据集通常包含数十亿条记录,以及数千个具有任意分布和高维离散连续动作空间的状态特征。通过研究和观察,我们发现,与传统的深度网络相比,应用 RL 模型对噪声和非规范化数据更敏感。Horizon 使用 Apache Spark 并行对这些状态和动作特征进行预处理,我们的 Spark 管道也包含在开源版本中。在对训练数据进行预处理之后,我们使用基于 PyTorch 的算法在图形处理单元上进行规范化和训练。


虽然 Horizon 可以在单个 GPU 或 CPU 上运行,但该平台的设计侧重于大型集群,一次在多个 GPU 上进行分布式训练,使工程师可以使用数百万个样本来解决问题,并更快地迭代他们的模型。我们在 PyTorch 中使用数据并行和分布式数据并行功能进行分布式训练。该版本包括深度 Q 网络(DQN)、参数化 DQN 和深度确定性策略梯度(DDPG)模型。在训练过程中,我们还运行 CPE,并将评估结果记录到 TensorBoard 上。训练完成后,Horizon 将使用 ONNX 导出这些模型,以实现大规模地高效服务。


在许多 RL 领域中,你可以通过尝试来度量模型的性能。在 Facebook,我们希望确保在大规模部署模型之前对它们进行彻底地测试。由于 Horizon 解决了策略优化任务,训练工作流还自动运行了几种最先进的策略评估技术,包括时序双鲁棒性策略评估和 MAGIC。生成的策略评估报告从训练流中导出,可以使用 TensorBoard 进行观察。评估可以与异常检测相结合,在将策略公开部署之前,如果模型再次迭代的性能与前一个迭代相比有很大的差别,就会自动向工程师发出警报。

在工作中学习:Horizon 对 Messenger、360 视频等的影响

自从我们开始在内部使用 Horizon 以来,该平台已经示范了 RL 如何利用即时反馈来做出提高性能的决策,从而对生产应用程序产生影响。


例如,Horizon 使我们可以通过实时优化比特率参数来提高 Facebook 上 360 视频的图像质量。该平台既考虑了可用带宽的数量,也考虑了已缓冲视频的数量,以确定是否有可能转换到更高质量的视频。这个过程利用了 RL 随时产生奖励的能力,使用新的无监督数据——它在给定的视频正在播放时工作,而不是事后再分析性能和仔细标注的数据。



反事实策略评估为在离线环境中部署 RL 模型的工程师提供了见解。这个图比较了几种 CPE 方法和日志策略(最初生成训练数据的系统)。得分 1.0 意味着 RL 和日志策略在性能上是匹配的。这些结果表明,RL 模型的累积奖励大约是日志系统的两倍。



这个高级图表说明了 Horizon 的反馈循环。首先,我们对现有系统记录的一些数据进行预处理。然后,我们训练一个模型并分析离线环境下的反事实策略结果。最后,我们将模型部署到一组人员中,并度量真正的策略。来自新模型的数据反馈到下一次迭代中,大多数团队每天都部署一个新模型。


Horizon 还过滤了 Messenger 中智能助手 M 的建议。M 在人们的开放式对话中提供相关内容的建议,丰富人们的交流方式,在 Messenger 中完成工作。Horizon 使用 RL——比基于规则的对话学习策略方法更具可扩展性、前瞻性、更能响应用户的反馈——帮助 M 逐步学习。例如,如果人们更有规律地与一个建议交互,M 可能会更多地提供这个建议。在 Horizon 的帮助下,M 变得更加智能化和高度个性化,因为它每天都能帮助数百万人进行交流。


该平台还改进了我们使用人工智能的方式,帮助我们决定向用户发送哪些 Facebook 通知,以及多久发送一次。在过去,我们不是发送所有可能的通知(说明有新帖子、评论等),而是使用 ML 模型来帮助预测哪些可能最有意义或最相关,并过滤掉其他的。但这些模型依赖于监督学习,没有考虑到发送通知的长期价值。例如,每天多次访问该平台的人可能不需要系统为他们本来会看到的帖子发出通知,而不太活跃的人可能会从通知中受益,这可以确保他们不会错过家人和朋友发表的值得关注的帖子。


为了更好地处理这些长期信号——并使通知按照预期工作,为平台上的所有人提供价值——我们使用 Horizon 训练了一个离散动作 DQN 模型,用于发送推送通知。当某人参与了他们可能会错过的帖子时,这个模型会收到奖励,而发送通知则会受到惩罚。RL 模型仅在对用户的价值(例如,让他们注意到好友或家人发布的值得关注的帖子)高于惩罚值(在他们的设备上弹出额外的警告)时才允许通知。该模型还定期更新大量的状态转换,使其能够逐步改进,并最终调整通知的数量。自从我们将以前的基于监督学习的系统替换为基于 Horizon 的版本之后,我们观察到,通知的相关性得到了改善,而发送通知的总数没有增加。与通过点击或单击通知来定义相关性不同,我们可以更广泛、更深入地查看信息以确保它们提供了真正的好处。

使任何人都可以在生产环境中部署 RL 的工具

这些好处突显了 RL 能为行业提供的东西,即能够直接从以前的次优策略下收集样本,并从中学习最优策略。尽管我们已经确定了非常适合 RL 的具体场景和应用程序,但这仅仅是激动人心的旅程的开始。鉴于人工智能社区的集体才华和创造力,我们迫不及待地想看到 Horizon 所激发的创意、功能和产品。


任何使用机器学习来做决定的人都可以试试 Horizon。第一步是记录倾向(采取行动的概率)和备选方案(其他可能的行动)。Horizon 使用倾向性和备选方案来了解何时可以采取更好的行动。第二步,定义并记录奖励(采取行动所获得的价值)。在收集到这些数据之后,就可以运行 Horizon 的训练循环,导出一个能够做出新决策并最大化总回报的模型。


Horizon 是我们致力于 AI 开放开发的一部分——它是 Facebook 的内部平台,我们现在正在开放源代码,它使用的工具我们已经提供给社区,包括 PyTorch 1.0 和 Caffe2。虽然 Horizon 已经针对在生产环境应用进行了优化,但我们使用该平台的经验也揭示了与 RL 集成到其他系统相关的重要研究。我们正利用 Horizon 平台探索基于模型的 RL 和“奖励塑造(reward shaping)”的新技术,并利用该平台在 Facebook 更广泛地挖掘其他应用,比如数据中心资源分配和视频推荐。我们还计划添加更多的模型和工作流,以帮助其他人将 RL 的长期承诺转化为即时行动。


有关详细信息,请阅读关于 Horizon 开发和内部用例的完整白皮书:https://arxiv.org/abs/1811.00260


除了对新应用程序产生影响外,Horizon 还可以改变工程师和 ML 模型协同工作的方式。不再通过编写难以理解和维护的规则来驱动模型,我们设想,在工程师和他们使用的模型之间有一个双向对话,工程师可以指定他们的高层目标,并与机器学习协同实现这些目标,把它们应用到一个不断变化的决策环境中。Horizon 是这个旅程的第一步,我们邀请您复制我们的 GitHub 库并进行试用。


查看英文原文:


https://code.fb.com/ml-applications/horizon/


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-11-08 22:041445
用户头像

发布了 1008 篇内容, 共 374.2 次阅读, 收获喜欢 341 次。

关注

评论

发布
暂无评论
发现更多内容

万物皆可集成系列:低代码对接Web Service接口

葡萄城技术团队

Meta Force 原力元宇宙公排系统开发详情

开发微hkkf5566

消息队列 RocketMQ 5.0:从消息服务到云原生事件流平台

阿里巴巴云原生

阿里云 RocketMQ 云原生

遭MQ连连干翻后的醒悟!含恨码出5本MQ学习手册助力秋招之旅

小二,上酒上酒

面试 RocketMQ 大厂 大厂面试

爆肝了!阿里出版的这份Spring Security源码手册,狂揽GitHub榜首

小二,上酒上酒

Java 面试 spring security 大厂 大厂面试

好家伙!阿里P8撰写的Java微服务架构全栈笔记GitHub一夜飞到榜首

小二,上酒上酒

Java 架构 面试 微服务

redhat运维-远程日志记录

阿柠xn

运维 日志 linux 文件权限控制 11月月更

终于有人把这份10 万字节详细面试笔记(带完整目录) 整理出来了

钟奕礼

Java java程序员 java面试 java编程 Java 面试题

极客时间架构训练营模块六作业

李晨

架构

【web 开发基础】PHP 自定义函数之函数的返回值-PHP 快速入门 (27)

迷彩

web开发基础 PHP基础 11月月更 return

低学历并不是阻碍职业发展的绊脚石

测吧(北京)科技有限公司

软件测试

Github上架3天星标55K,阿里最新产架构师速成手册成功颠覆了我的认知

程序员小毕

分布式 微服务 程序人生 架构师 Java后端

大数据培训和自学哪种方式更好

小谷哥

前端培训班中如何学习前端开发技术

小谷哥

阿里P8偷偷把内网分享的SpringCloud微服务架构精髓手册开源了

小二,上酒上酒

架构 面试 微服务 Spring Cloud

神了!阿里P8纯手写出了这份10W字的MyBatis技术原理实战开发手册

小二,上酒上酒

学习 编程 面试 mybatis

最新出炉!开源 API 网关的性能对比:APISIX 3.0 和 Kong 3.0

API7.ai 技术团队

kong api 网关 APISIX

3年测试经验跳槽成功拿下30W+年薪

测吧(北京)科技有限公司

软件测试

这些小技巧,让你的前端编程更优雅

好程序员IT教育

前端

深圳市数字经济指数发布:数字经济蓬勃发展,数字用户深度渗透

易观分析

数字经济 深圳

CSS修改单选框样式(element)

肥晨

11月月更 单选框样式修改 element单选框样式

2022开源之夏|EMQ三大开源项目开发圆满收官

EMQ映云科技

开源 物联网 IoT mqtt 11月月更

蚌住了!这份阿里P8写的Java多线程编程实战指南就这么容易开源?

小二,上酒上酒

Java 面试 多线程 阿里 大厂面试

为什么面试官狂问八股文?我已经被三家公司问到哑口无言……

程序知音

Java java面试 java架构 后端技术 Java面试八股文

低门槛上手快!火山引擎VeDI这样满足数据分析新需求

字节跳动数据平台

大数据 BI

Meta Force 原力元宇宙dapp系统开发(智能合约部署)

开发微hkkf5566

《深入理解JavaScript特性》学习总结1-ES6基础知识点总结

肥晨

箭头函数 11月月更 ES6基础知识点总结

java培训学习该怎么做?

小谷哥

为什么晶闸管能在大电流下工作?

元器件秋姐

元器件采购 元器件电商 元器件知识 华秋商城 晶闸管

大数据培训学习需要什么基础

小谷哥

自学前端技术怎么样,有必要去吗

小谷哥

Facebook开源Horizon:首个用于大规模产品和服务的强化学习平台_AI&大模型_JASON GAUCI_InfoQ精选文章