Facebook人工智能母体技术解析
者及定制分布工作流的实施环境,一个发布试验和查看结果的试验管理UI,以及无数预定义的流水线,用来训练Facebook大部分经常使用的机器学习算法。
作者和实施环境
平台上所有的工作流和操作员都定义为Python功能,使用独特的装饰器来整合进入平台。让我们来看一个具体的情景,我们想用经典的Iris数据集训练一个决策树,基于花朵的花瓣和萼片大小来预测花的品种。假设数据库是在Hive里面,有五个栏目,分布代表了花瓣宽度、花瓣长度、萼片宽度、萼片长度和花朵样本的品种。在这个工作流中,我们会用日记损失来评估模型的性能,预测一个未标记的数据库的品种。
要处理这类任务的工作流样本大概长这样:
图片来源:Facebook Code
让我们来仔细看看这个工作流,理解FBLearner Flow到底是怎么运作的。
首先,@workflow装饰器告诉FBLearner Flow,iris功能不是一个普通Python功能,而是一个工作流。input_schema和returns参值说明了工作流的输入类型及输出类型。实施框架会自动确认这些类型,确保工作流收到的数据是符合其预期的。这个例子中,labeled_data输入标记为有四个栏目的数据库输入。如果在数据库中有一个栏目缺失,那么就会提出一个TypeError异常,因为数据库与这个工作流不兼容。
工作流的本体看起来相应普通的Python功能,连接到几个操作员来实施机器学习工作。虽然看起来普通,FBLearner Flow使用一个future系统来在工作流内提供平行化,如果有若干个步骤不共享一个数据相关性,就可以同时运行。
工作流不是线性执行,而是分两个步骤:1)DAG编译步骤,2)操作员执行步骤。在第一部中,操作员并没有执行,而是返回future。future代表了延迟的计算。因此在上述例子中,dt变量实际上是一个future,代表了还没有发生的决策树训练。FBLearner Flow在DAG编译阶段的所有操作员撤销行为都留有记录,并且记录所有必须在操作之前搞定的future。例如,ComputeMetricsOperator和PredictOperator将dt.model作为输入,因此系统知道nn一定要在操作员运行之前计算,因此必须等到TrainDecisionTreeOperator完成。
DAG编译阶段完成时,FBLearner Flow将打造一个操作员DAG,可以预定何时进行执行,每个操作员只要上一级成功完成就可以开始执行。在这个例子中,ComputeMetricsOperator和PredictOperator之间没有数据相关性,因此这两个操作员可以同时平行运行。
图片来源:Facebook Code
在操作员执行阶段,每个操作员有自己的CPU、GPU和存储要求。FBLearner Flow会分配一个匹配操作员任务要求的机器部分。平台自动将相关的代码分配给机器,在操作员之间传送输入和输出。
试验管理UI
在全公司有几百个不同的工作流,进行着无数个机器学习任务。我们面临的一个挑战是打造一个通用的UI界面,可以匹配多元的工作流使用。利用定制类别系统,我们打造了一个可以不需要理解每个工作流的实施细节、就能够解读输入和输出的UI。为了进一步定制化,平台UI提供了一个插件系统,可以用来为具体的团队和整合Facebook系统提供定制化体验。
FBLearner Flow UI还提供了一些额外体验:发布工作流;将输出视觉化并进行比较;管理试验。
发布工作流
我们之前看到,每个工作流规定了一个输入纲要。工程师发布工作流的时候,UI读取到了输入纲要,自动生成一个结构化表格,来确认具体的工作流输入。这让ML工程师可以不用写一行前端代码,就可以使用丰富的UI。定制类别系统有丰富的类别用于描述数据库、特征和许多其他共同的机器学习数据类型。这让UI可以描绘复杂的输入元素,例如功能输入提示和数据库选择条。
图片来源:Facebook Code
视觉化输出并比较
工程师可以看到每一个工作流的输出,来修改标签和其他超数据,并采取行动,例如将模型导入生产。工程师可以比较工作流的输入和输出,来基于基准评估试验的性能。我们使用了一项类似的技术来将输出视觉化,类似于渲染输入形式的技术——系统用此来为每种具体类型的输出提供渲染。通过一个插件系统可以加入额外的定制视觉化和行动。例如,新闻流(News Feed)团队可以为他们的模型增加实时系统量度。
图片来源:Facebook Code
管理试验
Facebook工程师每天发布几千个试验,平台UI提供了管理所有实验的工具。所有的工作流运行都在Elasticsearch记录索引,因此可以用无数的维度来进行搜索,系统支持保存搜索,方便寻找试验。当调试模型时,工程师经常运行细分的复杂参数扫描分析,很
- 机器学习算法盘点:人工神经网络、深度学习(07-02)
- 自动驾驶技术到底什么时候能成熟?(09-12)
- AI/机器学习/深度学习三者的区别是什么?(09-10)
- 人工智能与机器学习差别与联系(10-07)
- 一文汇总大数据四大方面十五大关键技术(10-11)
- 关于人工智能这篇文章最易懂:原理、技术和未来(11-06)