(Facebook AML实验室负责人 Joaquin Candela)
雷锋网按:在Facebook,有两个实验室领导着AI发展方向,一个是Yann LeCun领导的FAIR实验室,偏向AI的基础研究;另一个,就是AML实验室,偏向机器学习应用,负责将AI技术落地在Facebook各种产品。本月初,AML实验室负责人Joaquin Candela在@Scale大会上发表了一次演讲,他讲述了Facebook在规模化应用AI技术的方方面面,包括Facebook人工智能母体FB Learner Flow平台、图像处理引擎Lumos、文本理解、语音识别、视频风格变换等各领域的应用。
下面是演讲文字版,由雷锋网亚萌和夏睿共同编辑整理。
我在Facebook已经工作了五年,这是令人愉悦的经历。今天,我想要跟大家分享一下Facebook是如何设计AI来改善人们每天的生活。
每次你使用Facebook、Instagram和Messanger的时候,可能你没有意识到,你的使用体验已经是由AI技术做支撑了。
而实际上,我想强调的一点是,Facebook如果没有AI,那就会失去存在根基。
我们在AI上面加入了双倍的投资,帮助用户彼此之间联系更加紧密,及时得知最关心的消息和内容。我们AML团队,与FAIR团队及公司内其它产品团队紧密合作。
我们面临的一个挑战就是,我们的工作是在Facebook这么大的一个规模上进行的。这周三,Facebook发布了统计数据:我们每天支持了12亿用户。也就是说,每一天就有12亿人使用Facebook 。而其中的11亿用户,都是在手机上使用Facebook 的。所以手机的使用,占据主导地位。
首先,我们需要回过头去,思考“工程”这件事情,好好思考“工程”对于Facebook的价值所在。其中有2个关键的价值:关注影响力(foucus on impact)和快速行动(move fast)。前者是指,要时刻清楚了解我目前所能解决的最重要的问题是什么。关于第二点,快速行动,Facebook对于“犯错”的容忍度极大,我们反复提醒自己,有时最危险的做法就是不去冒险,不去行动其实是非常冒险的一件事情。我们需要在Facebook这么大的体量上去快速行动。
这些价值观,启发了AML的战略,这个战略包括 3 大基本支柱:
推进最新技术,最大程度实现产品影响力。我们一直与FAIR实验室及产品团队合作,推进最新的技术。我们进入非常具体的问题领域,虽然我们可能起初并不知道如何去解决,但是我们知道,一旦我们攻克这个问题,其价值将异常巨大。
通过AI打造全新产品体验。当你在现今最前沿领域工作时,你往往会遇到别人从未想过的产品体验。待会后面,我会就此举一个具体的例子来说明。
使AI大众化。“规模化”是个大事情。对于Facebook来说,你需要不断地在平台、实验室和服务项目上进行创新,让整个公司都能用你的新技术。
很久之前,我还是一名Phd学生,当时致力于贝叶斯非参数法(bayesian nonparametric method),我在其中感受了一种类似于“巫师”的力量,当被给予一个任务时,比如在不同的域里做分类和递归任务,这种解决具体问题的感觉非常好。
之后,我去了工业界。我为此感到兴奋,因为工业界充满了亟待解决的诸多问题。但很快,我变得有点“被淹没”了,因为预测任务的类型、域的数量、训练数据的数量,这些比你所能想象的要庞大的多。
我意识到,巫师不知道如何“规模化”。当我在学术界的时候,关注点在于“准确度”,我能建造一个模型,以期比其它已经发表的研究成果,多出那么0.1%的AUC值。但是在工业界我发现,最重要的事情是“迭代速度”,是你每天可以运行多少次实验。因为,你无法忽视一个事实,那就是你所做的事情是融合各方利益的,如果你每周都可以将一个新的模型投入生产中(当然在我刚加入Facebook的时候这是很困难的一件事情),最终的成果是建立在一次又一次的尝试之上的。
如果你仔细想一想,你需要探索的参数、模型架构、输入值特征等如此庞大,实验的加速会产生非常非常大的影响。
所以,你必须建造一个“工厂”(就是后面要讲到的FB Learner Flow平台),成为一个巫师很酷,但是建造一个强大的“工厂”,让公司的每个人能够并行探索这个广阔的领域,将会让你以很稳定的节奏取得进步,不断地输出对产品的影响力。
当我们在设计一个“工厂”时,我们主要考虑五个方面的事情。
性能(performance)。我们必须加快速度,之前需要花几天时间进行的实验,现在要在一个小时内完成。这种速度的提升,对人们的心理状态会产生很大影响,当你工作到晚上回到家的时候,在这一天里你实际上已经完成了实验的一部分。而在之前,可能你一天里只能弄出一个模型,回家后可能就有点忘了,再过几天,这个模型可能会崩溃掉。
自动化(automation)。这非常重要,拖慢速度的永远都是人自己。比如,我曾经有一些系统,要进行转移到新的服务器等操作,但是运行不好,最后崩溃了,这浪费了我几天的时间。所以你必须将事情自动化。
重复使用(reusability)。这点非常重要,你必须得确保其中的工作内容,是可以一遍又一遍地使用。
成套系统(turnkey)。让整个系统变得容易使用,大部分工程师都是局限于一个小的领域,没有那么全面的知识和技术。
应用研究社群(applied research community)。对于建造研究社群这一点,我充满热情,我将会对此多谈一点,关于在整个公司内部打造“应用研究社群”的力量。
而我们建造的这个“工厂”确实是有效果的,而且效果很不错。
我们这个平台的建造工作,目前只进行了1%,也就是说,一切还是开始。整个Facebook公司使用这个平台的人数中,超过25%的人是该平台的活跃用户。而其中令人惊讶的是,如果你仔细观察这些工程师的背景,大部分人并不是AI或ML方面的专家。
另一件事就是,我们构建了一个非常强大的应用研究社群(applied research community)。我们为这个平台的“重复使用”性能感到兴奋,当一个工程师写了一个AI 工作流(workflow),可以被其它工程师拿过来接着使用。这有一个关于Instagram的例子。去年6月,Instagram开始对它的feed进行排序,几个工程师共同完成了这个功能,而这其中花费的时间之少令人惊讶。作为对比,Facebook的feed功能在前几年进行的,这在当时就是一个大工程,因为它是从无到有建立起来的。现在,Instagram的工程师,就可以进入一个公共的实验平台,找到其它产品类似功能实现时的工作流和模型。也就是说,工程师们可以借用前人的工作成果,“站在巨人的肩膀上”建立Instagram的feed功能,而且他们也能很快找到相关同事去请教。
其中有一个数据,我很骄傲。在过去的6个月时间里,这个平台的ML工作流的数量增长了6倍。
FB Learner Flow平台是一个非常有弹性的环境,用于书写和执行AI工作流。生产力是最重要的事。其中有一件很酷的事情,那就是如果你要运行某个任务,FB Learner Flow将会把一整个流程都规划好,比如硬件用什么、如何规模化等等。
FB Learner Flow平台设计之初,就把“重复使用”的理念植入其中。如果你是一个Instagram工程师,想要训练和部署你的排序模型,FB Learner Flow就像是一个放满了工作流的图书馆库(library),你可以在当中搜索、索引、发现各种工作流,然后对此重复利用。你还可以进入到算法里,你可以看到不同参数下的各种学习曲线,最重要的是,你可以看到某个特定工作流的作者是谁,这是最重要的,因为这时你就知道找谁去请教问题了。
FB Learner Flow非常综合,这里有一个有趣的故事。有一次,我对团队成员说:“伙计们,你们在这个平台上运行PyTorch、Caffe和Caffe 2,我们试试Tensorflow怎么样?”。三天后,他们跟我说,我们试了一下Tensorflow,可以运行。所以它是兼容各种语言的,这很重要。
接下来我会讲解一些关于基于FB Learner Flow平台的一些系统,包括计算机视觉引擎、文本和语言理解系统、语音等方面的内容。
更多雷锋网文章: