学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端
from:https://baijia.baidu.com/s?id=1587367874517247282&wfr=pc&fr=_lst
为应对新型 AI 应用不断提高的性能需求,近日 Michael Jordan 等人提出了一个新型的分布式框架 Ray,主要针对当前集群计算框架无法满足高吞吐量和低延迟需求的问题,以及很多模拟框架局限于静态计算图的缺点,并指出强化学习范式可以自然地结合该框架。
人工智能在一些现实世界应用中正逐渐发展为主力技术。然而,到目前为止,这些应用大部分都是基于相当受限的监督学习范式,其中模型是离线学习的,然后提供在线预测。随着人工智能领域的成熟,使用比标准的监督学习设置更宽泛的设置成为必需。和仅仅做出并提供单个预测不同,机器学习应用必须越来越多地在动态环境中运行,对环境变化做出反应,执行一系列动作以达到目标。这些更加宽泛的需求实际上可以自然地在强化学习(RL)的范式内构造,强化学习可以在不确定的环境中持续学习。一些基于 RL 的应用已经达到了引人注目的结果,例如谷歌的 AlphaGo 打败围棋人类世界冠军,这些应用也正在探索自动驾驶汽车、UAV 和自动化操作领域。
把 RL 应用和传统的监督学习应用区分开来的特征有三个。首先,RL 通常高度依赖模拟来探索状态、发现动作的后果。模拟器可以编码计算机游戏的规则、物理系统的牛顿动力学(如机器人),或虚拟环境的混合动力学。这通常需要消耗大量的算力,例如构建一个现实的应用可能需要经过几亿次模拟。其次,RL 应用的计算图是异质、动态演化的。一次模拟可能需要几毫秒到几分钟不等,并且模拟的结果还会影响未来模拟中使用的参数。最后,很多 RL 应用,如机器人控制或自动驾驶,需要快速采取行动以应对不断变化的环境。此外,为了选择最优动作,这些应用需要实时地执行更多的模拟。总之,我们需要一个支持异质和动态计算图的计算框架,同时可以在毫秒延迟下每秒执行百万量级的任务。
已有的集群计算框架并不能充分地满足这些需求。MapReduce [18]、Apache Spark [50]、Dryad [25]、Dask [38] 和 CIEL [32] 不支持通用 RL 应用的高吞吐量和低延迟需求,而 TensorFlow [5]、Naiad [31]、MPI [21] 和 Canary [37] 通常假定计算图是静态的。
这篇论文做出了如下贡献:
指出了新兴 AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
除了任务并行的编程抽象之外,还提供了 actor 抽象(基于动态任务图计算模型)。
提出了一个可水平伸缩的架构以满足以上需求,并建立了实现该架构的集群计算系统 Ray。
论文:Ray: A Distributed Framework for Emerging AI Applications
论文地址:https://arxiv.org/abs/1712.05889
下一代的 AI 应用将具备持续和环境进行交互以及在交互中学习的能力。这些应用对系统有新的高要求(无论是性能还是灵活性)。在这篇论文中,我们考虑了这些需求并提出了 Ray,一个满足上述需求的分布式系统。Ray 实现了一个动态任务图计算模型(dynamic task graph computation model),该模型支持任务并行化和 actor 编程模型。为了满足 AI 应用的性能需求,我们提出了一个架构,该架构使用共享存储系统(sharded storage system)和新型自下而上的分布式调度程序实现系统控制状态的逻辑集中。我们的实验展示了亚毫秒级的远程任务延迟,以及每秒可扩展至超过 180 万任务的线性吞吐量。实验证明 Ray 可以加速难度高的基准测试,而且是新兴强化学习应用和算法的自然、高效选择。
图 7:该系统利用 GCS 和自下而上的分布式调度程序,以线性方式实现的端到端可扩展性。Ray 用 60 个 m4.16xlarge 节点可以达到每秒 100 万任务的吞吐量,在 1 分钟内处理 1 亿任务。鉴于代价,我们忽略 x ∈ {70,80,90}。
图 8:Ray 保持平衡负载。第一个节点的驱动程序提交 10 万个任务,全局调度程序在 21 个可用节点中平衡这些任务。
图 9:对象存储写入的吞吐量和输出操作(IOPS)。对于单个客户端,在 16 核实例(m4.4xlarge)上大型对象的吞吐量超过 15GB/s(红色),小型对象的吞吐量超过 18K IOPS(蓝绿色)。它使用 8 个线程复制超过 0.5MB 的对象,用 1 个线程复制其他小型对象。条形图代表 1、2、4、8、16 个线程的吞吐量。以上结果是 5 次运行的平均值。
图 10:分布式任务的全透明容错性。虚线代表集群中节点的数量。曲线表示新任务(蓝绿色)和重新执行的任务(红色)的吞吐量。驱动程序持续提交和检索 10000 个任务。每个任务耗时 100ms,依赖于前一个回合的一个任务。每个任务的输入和输出大小为 100KB。
图 11:actor 方法的全透明容错性。驱动程序持续向集群中的 actor 提交任务。在 t = 200s 时,我们删除了 10 个节点中的 2 个,使集群的 2000 个 actor 中的 400 个在剩余节点中恢复。
图 12:Reference ES 和 Ray ES 系统在 Humanoid-v1 任务中得到 6000 分的时间 [13]。Ray ES 实现可以扩展到 8192 个核。而 Reference ES 系统无法运行超过 1024 个核。我们使用 8192 个核获得了 3.7 分钟的中位耗时,比之前公布的最佳结果快一倍。在此基准上,ES 比 PPO 快,但是运行时间方差较大。
图 13:MPI PPO 和 Ray PPO 在 Humanoid-v1 任务中得到 6000 分的时间 [13]。Ray PPO 实现优于专用的 MPI 实现 [3],前者使用的 GPU 更少,代价也只是后者的一小部分。MPI 实现中每 8 个 CPU 就需要 1 个 GPU,而 Ray 至多需要 8 个 GPU,每 8 个 CPU 所需的 GPU 不超过 1 个。
表 3:低延迟机器人模拟结果
本文为机器之心编译, 转载请联系本公众号获得授权 。
学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。的更多相关文章
- 取代 Python 多进程!伯克利开源分布式框架 Ray
Ray 由伯克利开源,是一个用于并行计算和分布式 Python 开发的开源项目.本文将介绍如何使用 Ray 轻松构建可从笔记本电脑扩展到大型集群的应用程序. 并行和分布式计算是现代应用程序的主要内容. ...
- kafka高吞吐,低延迟的分布式消息队列
核心概念 broker是kafka的节点,多台broker集群就是kafka topic消息分为多个topic partition分区,topic划分了多个partition分区,存在负载均衡策略 每 ...
- kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统
一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...
- 高性能分布式执行框架——Ray
Ray是UC Berkeley AMP实验室新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室阶 ...
- 学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群
学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群 机器之心发表于机器之心订阅 499 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等 ...
- 框架Ray
高性能最终一致性框架Ray之基本概念原理 一.Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案. 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且 ...
- 解析分布式应用框架Ray架构源码
摘要:Ray的定位是分布式应用框架,主要目标是使能分布式应用的开发和运行. Ray是UC Berkeley大学 RISE lab(前AMP lab) 2017年12月 开源的新一代分布式应用框架(刚发 ...
- DeepMind提出新型超参数最优化方法:性能超越手动调参和贝叶斯优化
DeepMind提出新型超参数最优化方法:性能超越手动调参和贝叶斯优化 2017年11月29日 06:40:37 机器之心V 阅读数 2183 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...
- (四):C++分布式框架——状态中心模块
(四):C++分布式框架--状态中心模块 上篇:(三):C++分布式实时应用框架--系统管理模块 技术交流合作QQ群:436466587 欢迎讨论交流 版权声明:本文版权及所用技术归属smartguy ...
随机推荐
- Android FrameWork 学习之Android 系统源码调试
这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...
- Android基础TOP3:Activity的线性,相对,帧和表格布局的概括
线性布局 LinearLayout: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
- 64位windows系统如何显示32位dcom组件配置
在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Microsoft Excel程序,这主要是64位系统的问题,excel是32位的组件,所以在正常的系统组件服务里是看不到的 ...
- 比较简单的替换配置文件的shell脚本
作为测试,日常更新部署测试版本,修改配置文件是每天必不可少的一个工作.特别是如果需要更改的配置文件存在于多个文件里,更是繁琐不堪. 找了一下Linux shell脚本里有个sed 命令可以实现这个需求 ...
- python发送文本邮件
#!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 import time import smtplib from email.mime.text ...
- mysql_基础2
创建数据表:
- Gradle与Makefile构建工具的对比
随着Android Studio的普及,越来越多的Android开发者也要开始了解和学习Gradle这款强大的代码构建工具了.我们在学习和了解一项新事物的时候,最快速的方法往往是与已知的事物进行比较, ...
- C# 把时间 月 //把第一个0替换为空
string str = "2019-01"; //name: "2019-01月" str = str.Substring(str.Length - , ); ...
- django 加日志
LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 指定输出的格式,被handler使用. 'formatters': { ' ...
- android 数据存储之SQLite
使用嵌入式关系型SQLite数据库存储数据 除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据 ...