未来交互:Facebook首次公开内部机器学习平台,启动AI帝国

1462928045-7172-5ef000937bdb7193a09

 

Facebook 现在在信息推荐、过滤攻击言论、推荐热门话题、搜索结果排名等等已经使用了大量人工智能和深度学习的技术。在Facebook上,还有许多试验能够从机器学习模型中获利,但是目前,对于很多没有深厚机器学习背景的工程师来说,想要利用这些机器学习基础设施,还是有很大的困难。2014年年末Facebook发布FBLearner Flow,决定重新定义自己的机器学习平台,把人工智能与机器学习中最先进的算法以最便利的方式提供给Facebook的工程师。

在早期运用人工智能与机器学习的试验中,Facebook 发现,准确度上最大的提升往往来自快速的试验、功能编程和模式调试,而非从根本上运用不同的算法。此前,在找到成功的新功能,或者一个超参数集时,工程师可能需要进行上千次试验。Facebook对传统的流水线系统进行评估发现,这一系统并没有很好的匹配Facebook的需求,大多数的解决方案并没有提供以不同的输入来重新运行这一流水线的解决方案;也没有提供机制来具体地分析产出和副作用;没有提供对输出的可视化;没有为参数扫描之类的任务提供条件步骤。

为了实现这些点,Facebook想要一个具备以下属性的平台:

  • 每一种机器算法都必须以一种可再使用的方式运行过一次。
  • 工程师应该能写出一个训练流水线,这些流水线可以在多种机器中平行切换,并被其他工程师再使用。
  • 对于具有不同机器学习经验的工程师来说,训练模型应该变得简便,并且,几乎每一步都应该是完全自动化的。
  • 人人都应该能够便利地搜索过去的试验和测试结果,并与其他人分享,并在特定的试验中尝试新的变量。

所以Facebook决定建立一个全新的平台——FBLearner Flow。这一平台要能方便地在不同的产品中重复使用多种算法,并可以延伸到成千上万种模拟的定制试验操中,轻松地对实验进行管理。这一平台提供了创新性的功能,比如从流水线定义和对Python 编码进行自动化平行移用中自动生成用户界面(UI)试验。

目前,超过25%的Facebook工程开发团队都在使用FBLearner Flow。创建以来,该平台已经训练了超过100万模型。Facebook的预测服务,已经发展到每秒产生超过600万次预测。

在编码上减少人工劳动,要求进行一系列的试验,允许机器工程师把更多的时间花在功能编码上,这反过来能够让准确度得到更大的提升,进而,工程师能够产生更大范围的影响,现在的workflow写作者有150个左右,他们的工作的影响力已经超越了他们自己和团队。

核心概念和组成部分

在近距离地接触这一系统前,有几个关键的概念需要理解:

工作流(Workflow):一个工作流是限于FBLearner Flow中的一个流水线,并且是其所运行的有机器学习任务的入口。每一个Workflow负责的都是一个具体的任务,比如训练和评估具体的模型。Workflows由计算符系统的术语进行定义,可以被移用。

计算符(Operator):计算符是workflows的建造模块。从概念上,你可以把计算符认为是一个程序里面的一种功能。在FBLearner Flow中,计算符是单个机器中运行和执行的最小组件。

通道(Channels):通道代表作输入和输出。输入和输出在工作流和计算符之间的流动。所有的通道都是由Facebook定义的归类系统进行归类。

这一平台由三个核心部件组成:一个定制的分布式工作流的写作和执行环境;一个用户界面试验管理,用于发布试验和检查结果;还有许多事前定义的流水线,用于训练在Facebook最常见的使用机器学习的算法。

写作和执行环境

FBLearner Flow 中所有的工作流和计算符都被定义为Python中的函数,并使用特殊的修饰器,来与平台进行融合。来看一个简单的场景,假设我们想要根据经典的鸢尾花数据集训练一个决策树,以根据花的花瓣和花萼来预言花的种类。假设我们可用的数据集是在蜂巢(Hive)矩阵中,并且有5列,每一列分贝代表了花瓣宽度、花瓣长度、花萼宽度、花萼长度以及样本种类。在这个Workflow中,我们将会以对数损失(log loss)的方法来评估模型的表现,并且预测一个未加标签数据集的种类。

一个要处理的样本工作流可能会是这样的:

1462928051-7736-5f100093383fd3f0516

让我们更深入地查看这一工作流,以理解FBLearner Flow是如何工作的。

首先,工作流的修饰器会告诉FBLearner Flow,鸢尾花函数不是一个常见的Python函数,而是一个工作流。

输入图式和返回参数表明了工作流所期待的输入和输出类型。执行框架将自动地在运行时间内核实这些类型,并且强制Workflow接收它所期待的数据。参照下面的例子,输入的带标签数据被标注为一个数据集,并以分四列输入。如果在所提供的数据集中,其中一列缺失,系统会提出输入错误的警告,因为这一数据集与工作流是不相符的。

工作流的架构看起来像一个常规的Python函数,可以调用若干计算符,这些计算符执行的是真正的机器学习工作。虽然看起来很普通,但是FBLearner Flow采用了一个预测系统(system of future),在工作流内实现平行化迁移,让没有共享数据属性的步骤也可以同时运行。

Workflows的运行并不是连续性的,它分为两个部分:1,DAG编译部分;2,计算符执行部分。在DAG编译部分,工作流的计算符并不实际执行任务,而是反馈Futures。Futures指的是代表了计算延时模块的东西。所以在上文的例子中,dt变量其实是一个furure,它代表还没有发生的决策树训练。在DAG编译部分,FB Learner Flow记录了所有操作中的调用,还有一系列在进行操作开始前的futures。

比如,ComputeMetricsOperator和PredictOperator都把dt.model作为输入,这样以来,系统就知道,在操作运行前,nn必须要被计算,所以他们必须等待,直到 TrainDecisionTreeOperator完成。

完成了DAG编译部分后,FB Learner Flow就建立一个DAG 计算符,在这个计算符中,边界代表了数据的依赖性。这一个DAG随后能够被列入执行计划,在这儿,一旦它的父程序完全成功,计算符就能够开始执行。在这个例子中, ComputeMetricsOperator 和 PredictOperator的调用之间,不存在数据依赖性,所以这两个计算符的运行能够平行切换。

1462928049-6618-5f100093384256b94e4

在计算符执行部分,每一个计算符在它的依赖计算符完成后,就开始运行。每一个计算符都有自己对CPU、GPU和内存要求,并且,FBLearner Flow将会分配机器的一部分,与计算符对任务的要求相匹配。FBLearner Flow 自动地处理,分配相关编码给机器,在输入和输出之间进行切换。

用户界面试验管理

在Facebook中,有好几百个不同的工作流,在执行无数的机器学习任务。Facebook面临的一个挑战是建立一个通用的UI,能够与Facebook的工程师所使用的一系列工作流共同工作。使用通用的类型系统,可以建立一个UI,能以一个不了解工作流的方式阐释输入和输出,也就是不需要理解每一个工作流实施的细节。对于未来的定制化,FBLearner Flow用户界面提供了一个插件系统,能够被不用的团队尝试定制化体验,并且融入Facebook的系统中。

FBLearner Flow UI提供一些额外的体验:1)发布工作流 2)对结果进行可视化和比较3)管理试验。

发布工作流

此前,Facebook曾发现,每一个工作流都要求一个类型输入图式。工程师发布一个工作流时,UI能够读到这个输入图式,并自动地生成架构表格,并且把具体的输入与工作流进行匹配。这允许机器学习工程师在一行前端代码都不用写的情况下,能够为他们的工作流获得丰富的UI。这将能让UI渲染复杂的输入要素,比如为分类和选择数据集。

1462928052-7544-5ef000937be308d4257

输出的可视化和比较

在用户界面上,工程师能够检查每一个工作流,观察输出,以修改标签和其它的元数据,并采取行动,比如配置模型,进行生产。Workflow中输入和输出可以进行对比,让工程师根据基线评价试验的表现。Facebook把对输出进行可视化的技术用于渲染输入,也就是用于提供具体类别,对每一个输出进行渲染的分类系统。

1462928050-5248-5ef000937bfb7cd32f6

管理试验

Facebook的工程师每天要进行几千次试验,FBLearner Flow UI提供了管理这些试验的工具。所有的workflow都在Elasticsearch中编了索引,所以可以通过多种维度搜到,并且,系统的支持把搜索词条存到更容易被发现的试验中。在进行模式调试时,工程师经常会运行复杂的参数扫描,通过特定的渲染,可以看到哪一个基阵产生了最好的结果。

1462928049-1214-5ef000937c0eb52d71f

机器学习图书馆

FBLearner Flow平台的一个核心原则是,它不跟任何的算法进行捆绑。结果便是,平台能够支持大量的机器学习算法,以及结合了这些算法的创意。平台还很容易扩展,任何工程师都能写一个新的工作流来让整个公司的人都可以使用他或她最喜爱的算法。开放资源应用的算法能够便利地在工作流中使用,并融入Facebook 的基础设施中。

Facebook的应用机器学习算法团队在运行那些提供普通使用的算法可以扩展化的Workflow,其中包括:

  • 神经网络
  • 梯度推进的决策树
  • Lambda MART
  • 随机梯度递减
  • 逻辑回归

未来计划

有了FB Learner Flow,AI会变成编程团队的一个组成部分,并为Facebook的工程师提供通过简单的API调用,紧跟AI的发展潮流。Facebook一直努力地提升FBLearner Flow,来让工程师变得越来越有生产力,并在越来越多的产品中使用机器学习。这些改进包括:

效率:过去的四月,在一个包含了几千台机器群集里,运行了超过500000 工作流。其中一些试验要求大量的计算资源,需要花掉好几天才能完成。Facebook着眼于提升这些试验的运行效率,来保证平台在把执行延迟最小化的同时,满足不断增长的需求。Facebook正在围绕数据局部性寻找新的解决方案,用来源数据共置计算,并且,Facebook也正在提高对资源要求的理解,来尽可能地让更多的试验在每一个机器中都能进行。

速度:FBLearner Flow是一个每天能吸收万亿数据的系统,每天训练的模型超过几千个,不管是离线还是实时,随后,把这些模型用于生活预测的服务器。工程师和相关团队,即便是没有什么专业知识,也能建立和允许试验,以更熟练前所未有的速度把AI支持的产品部署生产。Facebook正在努力把工作流完成的周期最小化,让产品能从最新的数据中进行学习,允许工程是快速地进行多次试验。

机器学习的自动化:许多机器学习算法都有很多可有优化的超参数。在Facebook,许多模型的准确度1%的提升都能产生许多有意义的影响。所以,有了Flow,Facebook为大规模的参数扫描和其它的自动的机器学习功能建立支持,利用闲置的循环来进一步提高这些模型。在这一领域,Facebook会进行进一步的投资,在Facebook的多种产品中提升Facebook AI和机器学习的专业性。

在接下来的几个月里,Facebook将会对一些特定的系统和应于保持高度关注,这些系统和应用能够利用FBLearner Flow来给工程师提供条件,让他们便利的在产品中使用AI 和深度学习,同时,也可以为Facebook用户提供更加个性化的体验。

Facebook核心机器学习小组的负责人Hussein Mehanna在接受媒体采访时说,Facebook在Flow上除了发表学术论文,可以做的还很多,公司最后会把这一平台开源。

文章译自:https://code.facebook.com/posts/1072626246134461/introducing-fblearner-flow-facebook-s-ai-backbone/

 

原创文章,作者:ioued,如若转载,请注明出处:https://www.iamue.com/14550/

(0)
iouedioued
上一篇 2016-05-10 09:02
下一篇 2016-05-11 09:01

相关推荐

  • 想做动效,可是你的需求写清楚了么?

    精美的动画对于提升产品体验有很大帮助,如促进用户理解功能,缓解用户情绪,调动用户积极心理,为产品提供亮点等等。诸如此类的文章相信各位已经看过不少了,不少人已经开始越来越重视动效在产品中的应用了,还没有看过的同学不用急,谷歌官方的动效指南讲解得很详细,建议只看这个就够了,配合一些动画理解起来更容易。说明:

    1.优化直播间分享面板,增加特效

    2.当用户点击分享按钮时(*包括传统直播间主播面板的分享按钮和上方分享按钮,手机直播间的分享按钮*),从下方弹出分享面板,逐个弹出分享icon,并淡入显示分享奖励。

    3.用户关闭分享面板时,分享icon从右到左依次下落淡化消失
    相关参数:

    1.分享面板减速弹出,运动时间225ms
    2.分享icon从左到右依次弹出,运动时间225ms。带有奖励图标的,当对应分享icon弹出后,分享图标淡入显示(时间225ms),第二个图标比第一个迟100ms开始运动

    eg:如图第一个为qq图标,当用户点击分享按钮,分享面板弹出后,qq图标开始弹出(时间225ms),100ms后第二个图标(qq空间)弹出,当qq图标完全弹出时,淡入显示分享奖励图标,时间225ms。
    3.分享icon从右往左依次收回,分享面板收回,所有运动的时间减少30毫秒,如分享面板收回时间195ms,分享icon收回时间195ms。

    andorid端动画曲线采用系统自带:AccelerateDecelerateInterpolator(在动画开始与结束的地方速率改变比较慢,在中间的时候加速)

    iOS端动画采用系统自带:kCAMediaTimingFunctionEaseInEaseOut (在动画开始和结束的时候速度稍慢些)
    具体效果可参考附件视频

    2017-05-08
  • APP小红点如何使用与实现逻辑

    作者:APP君   我们现在已经习惯小红点的不断的骚扰了,每天都不知道要点掉多少个手机APP上的小红点。有些童鞋点击 APP小红点 都已经成瘾。只要看到有小红点就会自然而然去触摸一下。 所以,APP的交互设计已经影响…

    交互专题 2017-08-07
  • 长大的用户体验不好,想退货了

    来都说:本周,小编的桌上多了一盆仙人球,世界各地还发生了这些小事情:钻石兄弟情、无声面包店、「自杀式」教学、午夜「决斗」、从天而降的小女孩、我明白得有些晚、长大的用户体验……01钻石兄弟情近日,美国印第安纳波利斯市一处停车场内,一位 80 岁的老爷爷遭遇抢劫。由于行动不便,拄拐杖的老爷爷只能任凭灰帽衫劫匪的摆布……这时,一个身影冲过来,朝着劫匪的后背就是一拳,劫匪被打得踉跄了几步,脑袋也有点蒙了。这个身影是 80 岁老爷爷的哥哥,今...

    2018-04-13
  • 如何编辑交互设计说明书

    当你搜索并查阅了很多网上资料后,仍可能不会编辑交互设计说明书。那么究竟该怎么编辑交互设计说明书呢?在编辑的过程中又有哪些要点和注意事项呢?

    2016-08-05
  • 留白这种设计手段的4大必要功效

    留白不只是空白的画布,它是一个功能强大的设计工具。留白是很难掌握的,留白的应用是包含艺术与科学。真正了解多少空白位置才足够创造一个良好的布局需要多实践。你设计得越多,你就会学得越多。“Whitespace is to be regarded as an active element, not a passive background” — Jan Tschichold
    “留白不单单是一个被动的背景,而是一个活跃的元素。”Properly using whitespace between paragraphs and in the left and right margins can increase comprehension up to 20%
    适当的运用段落之间的留白和左右边距的留白能有效增强理解力高达百分之20.The more whitespace around an object, the more the eye is drawn to it
    越大的留白空间包围一个物件,越多的目光就会集中在这个物件身上。As designers, it’s our responsibility to create usable communication vehicles.
    “作为设计师,我们职责就是去创造“沟通手段””Let the products speak for themselves
    让产品自身为自己说话。

    2017-04-28
  • 【科普】给想学交互设计的同学的一些建议

    最近在知乎上,有很多人问我,交互设计有什么好的学校?出国读研和在国内读研应该怎么选择?就业怎么样?其实在行业内和行业外,信息存在大量的不对称,很多同学都不太清楚怎么入门和学习交互,我觉得有必要专门开个文章聊下这个话题,算是一个有工作经验的人给新入行或者将要入行的同学的建议。1. 交互设计是否需要读研?我的答案是:看你的情况。每个人情况不同,自然对应不同的选择。情况A:如果本科就受过交互设计方面系统的训练(学校课程、实习等),有一定天赋和...

    2018-02-11
  • 交互设计申请关注度最高的5个问题,第一个就头疼.. | 大咖说

    说到交互设计很多同学的第一反应就交互思维、交互体验...准备申请交互专业的同学也是非常心焦!说起来容易做起来难,我们还是多和专业老师取取经。伦艺学姐回答的5个交互专业问题,收好哦~Q1:转专业学生申请应该注意什么?我觉得需要看这个问题怎么定义转专业,因为在一个设计类的学科,很多设计的思维方式和实践能力是共同的,我们可以通过设计的方式去解决问题。如果想要转到交互或者用户体验的专业,其实提供的是一种用交互的方式和研究结果解决现有用户的问题。...

    2018-04-26
  • 提示信息的情感化设计,做一个有故事的淘宝

    未来的故事还可能会将情感化设计延伸到不仅仅是异常的场景中去,从而覆盖整个淘宝,真正地实现做到一个“有故事的淘宝”。

    2017-05-05
  • 牛X的交互设计稿应该具备的特点

    转自:UIUX设计工作坊(ID:UIUX-HUANG)作者:弘毅道还没有跨入交互设计的门槛时,总是想明确的知道一些客观、确定的事情。比如,想知道交互设计的具体流程是什么,交互稿到底长什么样子,Axure中的Case用例怎么用…

    2017-08-01
  • 简约而不简单,谈一谈移动开发中的那些极简设计

    设计是一件用户驱动很强的工作。随着用户越来越偏好更简洁的交互界面,如何剔除多余的元素,保留最基础最重要的元素是极简设计的关键。极简设计形式和功能完美结合。它最大的优点是极简的表现形式,简洁的线条,大方的留白,简约的图形化元素,就算是很复杂的内容,在这样的设计下也会显得很简洁和干练。当然,如果能有效的利用这些元素。

    2017-05-20