说起大数据,很多朋友都听说过。但大数据具体是什么东西,它对我们究竟有哪些意义,可能很多人并不是特别知道。
带着这些问题,我和戴金权老师进行了深入沟通。他是英特尔的院士、大数据技术全球CTO,也是大数据领域的国际知名专家。通过这次对谈,让我对大数据的发展和落地有了新的认识。
我把我们的对话进行了整理和采编,以飨读者,希望大家也能从中获益。
大数据究竟是什么?
顾名思义,大数据的关键核心,就是大量的数据。但同样重要的是产生大量数据以后,对数据的存储、分析处理、计算建模、人工智能等等一系列应用,都可以算在大数据的范畴里。
大数据的“大”,首先指数据量比较大,最简单也最有挑战的问题是:当我有这么大的数据,怎样进行存储?除了数据量大,对数据处理和计算的要求其实也是非常大的。这些都代表了大数据的大。
人工智能与大数据:先有鸡还是先有蛋?
人工智能本身不是一个新概念。最近一次人工智能从某种意义上的复兴,可能就是在2010年前后开始,以深度学习为代表的一系列的算法,能够在很多原来做不到的应用上带来非常好的效果。其中一个很大的促进作用,就是今天有了大量的数据,在大量数据的基础上去学习非常大的深度学习的模型,可以提高模型的准确率,从而使得模型从原来的可能不能用,到今天可以被用了,它的准确率达到一定的程度,这样就推动了人工智能的发展。
AI与大数据:落地更重要?
(老石:之前人工智能更关注性能,但最近人们更关注它的落地。对于大数据,是否也存在类似的思维方式的转变?)
如何把人工智能技术从实验室应用到真实生产生活环境中,意味着两点:
第一,它需要能够和整个端到端的数据流很好的结合在一起,这样才能真正对现实的生产生活产生影响;
第二,性能并不是孤立的,而要考虑整个端到端的性能,因为很多时候你的瓶颈在你的端到端数据流里面的不同的地方,怎样把整个端到端的性能进行优化,这是很关键的。
举个例子,我们和韩国SK电讯有个合作,他们要对通讯网络进行分析,了解网络质量如何,并用人工智能的模型来进行判断。他们可能在一个很大的城市里有几十万个基站,基站设备每秒钟会产生非常多的网络数据。这些数据在产生之后,要从分散在城市中的各个基站进入到数据中心的大数据平台里,然后进行数据整理、分析、特征处理,然后去建模、训练,再根据模型去进行推理,推理之后根据出来的结果,可能会得出某个地方的网络质量有问题等等。
在这里,“端到端”是从开始到结束,而且它是动态的、每秒都会产生,并不是产生一次就结束了。
英特尔BigDL的作用及开发难点?
(老石:您在行业的代表性工作,就是关于大数据的平台BigDL。能否请您简单介绍一下BigDL到底是什么?)
用一句话来说,BigDL是英特尔开源的一个“端到端”的大数据到AI的平台、或者流水线。如我刚才所说,人工智能真正成功的重点,是怎样把实验室的算法、模型真正应用到生产环境中。这就需要一个“端到端”的软硬件平台,能够让用户很方便地做这件事情,这是做BigDL的目的。
开发这样一个“端到端”大数据AI平台,当然也遇到了一些重要的挑战。
第一,需要把AI和现有的大数据生态系统进行无缝连接。传统上,用户很多时候要从大数据平台里进行数据拷贝,然后移到另外一个深度学习的集群上,但这样其实非常不高效。因此需要AI和大数据平台的无缝连接。
第二,如何从单机的环境转到分布式的计算环境。大规模的分布式计算是支撑AI或大数据的关键,但这对于一般的数据科学家是一个非常大的挑战。
通常来说,数据科学家写完代码,要把代码扔过一堵无形的“墙”,墙那边可能有个产品团队或工程团队,根据实际场景进行代码重写。
而我们希望做到代码不用重写,原来能在笔记本上运行的代码,只需改一两行代码就能无缝地在大规模分布式的环境中进行运行,而实现这种方式有着极大的挑战。
什么是开发与部署中间的“墙”?
大多数情况下,数据科学家或者AI研究人员所使用的编程的模式和硬件环境,与大规模部署的现实环境是并不一致的。作为数据科学家或AI研究者,我喜欢在自己的电脑上面把数据拷过来,然后在上面跑,并且在单机上把它的性能跑到最好、模型调得最好,这些是我关心的问题。
但在生产环境中,数据来源非常多,可能有不同的数据系统接入进来,形成大数据流水线。然而,模型怎样应用到大数据流水线上,并不是研究人员关心的问题。比如我有一个大规模的至强集群,我的数据、数据处理都在其中,此时怎样把AI接入到这上面,很多时候研究人员是不关心的。这就导致了原型开发和最终生产部署环节的脱节,因此对开发人员非常不友好、非常不高效。
大多数情况下,我们在公司里会有一些数据科学家或AI研究人员是专注于研究先进的算法;还有团队负责生产系统。这个生产系统包括软硬件,很大程度上还是软件应用、大数据系统或APP,整个应用要非常高效、非常稳定、非常可扩展,大规模地部署。
研发和部署很多时候一开始注的点并不一样,有很多厉害的AI研究人员,他们做了非常多的AI模型。但在下一步把模型运行在生产系统或生产数据上看效果的时候,突然发现并没有办法很好的去对接生产系统,于是这时候他就开始关心这件事情了。所以,这个问题对两边都存在。目前,还没有一个特别好的软件平台,能够把这两边整个的需求统一在端到端的流水线上。
芯片公司,为何要做开源平台?
英特尔在开源的社区和开源的研发方面都有长久的投入,从操作系统Linux,再到虚拟化,再到大数据、AI,其实英特尔在开源方面做了非常大的工作。
开源的目的是,一个健康活跃的开源生态系统,对整个的技术发展有非常大的推动。BigDL的目的也是这样,我们希望能够帮大数据和AI 的生态系统做一个桥梁,帮助用户更好地将大数据和AI的技术运用在软硬件平台上。
今天来说,构建这样一个基础软件生态系统,最好的方式是通过开源,大家在里面可以有非常多创新和沟通交流。从BigDL的角度来说,我们作为一个开源的项目,也是希望能够把大数据生态系统和深度学习的生态系统做一个连接。
大数据、AI与超异构
(老石:异构计算目前非常火热,您觉得底层计算平台应该具备哪些特点、并且如何支撑大数据的处理呢?)
这个问题我觉得可以从两方面来回答。
第一,BigDL希望做的是把大数据生态系统和AI人工智能生态进行结合。我们针对分布式的至强CPU服务器集群来进行大数据AI平台的构建,并在硬件上其实有非常多的优化。虽然英特尔的至强CPU是一个通用处理器,但是里面其实有非常多的硬件指令是针对AI优化的,比如在低精度INT8上的VNNI或者DL Boost,在下一代至强可扩展处理器中的AMX的矩阵加速硬件。当它成为通用CPU计算的一部分之后,用户可以利用软件进行加速,从某种意义上获得免费的加速能力。从一些实践中可以看到,这种软硬件的结合,可以帮助用户免费得到十倍甚至更高的性能提升。
另外一方面,我们看到一个很重要的趋势——异构,事实上我们认为这是一个“超异构”的趋势,因为有着非常多的芯片类型,从FPGA到GPU再到ASIC加速器到IPU等等。所以怎样通过一个非常好的软件的抽象(比如英特尔的oneAPI就开放了标准的软件抽象),能够将不同XPU硬件加速和计算集成在统一的界面下,也让上层软件开发更高效。这两方面的工作我们都在进行中。
BigDL的演进
BigDL的开源是在2016年12月30日,在过去五六年的时间里,我们和社区里的很多用户、合作伙伴做了非常多的合作。比如大规模的推荐系统,大规模的时序分析的应用,当然也有很多计算机视觉、自然语言处理等等方面的应用
举一个和万事达卡的合作案例,他们有差不多20亿的用户和交易数据,在大数据平台上可能有几千亿的交易的记录。当他们使用非常大规模的CPU至强集群构建大数据平台之后,他们希望能够在这些数据上构建AI应用,并对他们的交易数据进行挖掘,产生各种各样的模型等等。
利用BigDL,万事达卡的工程师得以在其大规模的企业数据仓库上构建了非常多“端到端”的AI应用,从数据仓库端对数据进行分析、抓取、特征处理、建模、训练,最大的应用在几百台至强服务器上进行大规模分布式的训练,差不多在5小时内训练出一个大规模的AI模型,并提高他们各种AI的能力。
那么英特尔BigDL是否只能运行在英特尔平台上呢,答案是否定的。严格来说,BigDL并不是只运行在英特尔平台上,而是运行在大数据的生态系统上。但大数据生态系统基本上都是运行在X86的平台上。当然BigDL会为英特尔的至强服务器等做更多的优化,来提高它的执行效率。
大数据的发展愿景
从计算加速角度来说,面对硬件加速器,我们或许低估了软件优化的能力。很多软件优化的技术,包括像低精度、多核多线程计算、量化方式等等,能够很好地对AI整个计算效率带来非常大的提升。
其实我们今天也做了很多工作,我们甚至愿意把他们称之为软件的AI加速器,这个“免费加速器”如何与BigDL这种大规模分布式的环境相结合,不只是很好地做scale out水平扩展,还可以很好地提升每个节点的计算效率,这是我们正在进行中的大部分的工作。这件事情是非常重要的,一个生态系统,必须要将各种技术能够有机统一在一起,然后最终的目标是给用户带来最大的价值。
我们有一个愿景叫AI Everywhere ,就是AI无所不在。在将来的很多生活应用中,都会使用大数据和AI来进行分析,从而提升体验和生产效率。
从数据的角度来说,深度学习较大的局限在于进行大量的监督学习。很多人说:人工智能,有多少人工就有多少智能 —— 因为要对大量数据进行标签、清洗。逐渐的大家意识到这个问题,于是大量向自监督学习、弱监督学习、或者说语言学习这样的方式进行转移,并研究这些新的学习范式,怎样提高数据的效率、减少人工干预。
在算法本身,一方面大模型是明显的趋势,超大参数的模型能够得到更好的效果;但是另一方面,这也会给计算带来非常大的挑战。当模型变大以后,计算的整个效率其实是降低了。我觉得非常重要的点是如何利用迁移学习、或者利用新的学习范式,来把这种非超大规模的模型更好地利用到下游的任务上去,从而减少计算量并提高效率。
除了刚才提到的计算、数据和算法之外,还有一个很多人会忽视的关键地方,那就是开发效率。不只是计算效率或数据效率,而是作为一个数据科学家、机器学习工程师或大数据工程师,他们的效率也是非常重要的,因为很多时候到最后人比机器更贵。
怎样提高开发人员的开发效率,不管是今天所谓的低代码、无代码的开发方式,都值得探索。我可能更感兴趣的是,作为一个写代码的人,怎样能够有非常好的开发环境。我们在BigDL做的工作可以说是初步的尝试,怎样更好地让今天的数据科学家和工程师在大规模的、非常复杂的算法、非常复杂的数据的这样一个环境中非常高效地进行开发,这也是非常重要的对人工智能大数据推动的一个方向。
大数据技能是否会成为未来程序员的标配?
我觉得大数据处理今天已经是程序员的标配了,基本上大多数开发者、特别是在云端进行应用开发的人,都会接触到怎样对数据进行处理。只是怎样把整个技术平台和软件平台做得更加易用,这是一个难点。
另外一个难点就是说今天的数据计算、人工智能、机器学习的算法,很多会成为标准化或者大家都需要使用的工具,但是新的技术的发展还是刚需。虽然人工智能、大数据很有用,但是还有很多缺陷,怎样在新的技术方向上进行突破,仍然是非常重要的一点。
彩蛋:英特尔院士对大数据学习的建议
大数据、人工智能是一个非常复杂的系统,其实有很多不同的技术方向。给大家的建议来说有三条。
第一,Linux创始人林纳斯的一句话,“Talk is cheap,show me the code。”很多时候当你看到一个感兴趣的方向,第一步应该考虑怎样能够真正扎实地做点东西出来。哪怕去复现一个算法,在上面进行一些改动,进行一些改进,做一些新的东西,这些都可以。作为第一步,就是真的能够扎实的把这个东西做出来。
第二,当你做了好几个项目之后,需要思考如何把这些工作展现给别人。要思考工作的体系是什么,整个趋势是什么,能不能把我做的事情说清楚,我做了什么,为什么做这个,我解决什么问题 —— 这些思考很重要
第三,有一句话和大家共勉:我们通常会来高估自己一年能做什么,但低估自己十年能够完成什么。很多人就会觉得,我认认真真做了一年、做了好几个月,但并没有太大进展。其实只要你能够按照这个方向真正坚持做下去,过了五年,过了十年,你会发现你有非常大的收获。
来源:老石谈芯
文:老石