演讲人:贾扬清
演讲主题:一个AI开发者的奇幻漂流
活动:2021阿里灵杰AI工程化峰会
对于绝大多数人来说,这一波AI浪潮兴许是从深度学习开始的。
2011年谷歌发表的一篇文章讲到,用16000个CPU和11个参数的连接来训练一个能够识别猫的模型。
今天AI算法和应用百花齐放,给我们带来了非常多的梦想;而这几年整个行业的起起伏伏,背后也有许多弯路和故事。今天我们已经习惯了刷脸支付,但是似乎有一些更加高冷的梦想,比如像无人驾驶,都还只在路上。
我叫贾扬清,今天是一个消费网红的年代,所以我们起了一个名字叫奇幻漂流。如果可以的话,我想把自己描述成一个AI老兵。在人工智能的上半场当中,我们的体验可能没有那么奇幻,因为基本上我们就像拓荒者一样,身兼多个角色,在尝试着把AI 算法跟应用能够逐渐落地。
我们做过算法研究员,从AlexNet开始到ResNet ,到LSTM 到Transformer ,各种各样的模型,我们都希望逐渐把它落地。
我们做过软件工程师,从各种各样的框架,像Torch、Theano、Caffe开始,到今天大家耳熟能详的Tensorflow和Pytorch,我们相当于在不断重新设计一套又一套语言,让我们能够把算法高效地实现出来。
我们做过数据工程师,把图片、语音、自然语言、用户各种行为等数据做清洗做标注,把它放在无论是磁盘还是数仓的各种地方,然后再输入到各种算法当中去来做应用。
最后。我们也做过系统工程师,从GPU开始到各种各样嵌入式的系统。我们搭了大大小小的系统,让我们这些模型能够简单更高效地跑起来。
当然我们也在不断地看应用,搭一个webserver ,做一个open API,把上面训练出来的模型能够实际的做成一个像刷脸,或者说hopefully 自动驾驶这样的应用。
但是我们就在想,老兵们遇到的挑战是什么?今天事情越来越多,各种组件越来越复杂。我们会发现,要把全链路问题都像以前这样人拉肩扛地解掉会累死也不可能。今天AI的应用已经不是一个模型,一个算法那么的简单。
回到技术的角度,数据、算法、模型、以及最重要的人,我们有了怎样的一些变化?我们希望能够做什么样的进一步思考?我想从这几个角度来比较过去和今天有什么样的区别。
我们先说数据,以前我们在做图片存储的时候,我们就把图片都放到一个磁盘上面去。
会发现速度比较慢,于是我们又把它放到一个,比如说类似LevelDB数据库上面,回过头来看,我们会发现这些就是非常标准的KV数据库。
在洞察用户行为的时候,我们首先要从Hive的数仓里面做各种各样的处理,把数据从Java的环境里搬出来。再到Python的环境里做训练,而这个训练底层的实现又是C++的,类似这样的拉通,以及AI的模型标准等等,这一系列的问题都变得非常麻烦。
而在AI应用当中,怎么样把数据回流下来,进一步地再做新的训练,这些数据链路的质量都会决定了最终应用的质量。今天我们就会非常需要一个大数据和AI 一体化的平台来解决数据的全生命周期当中各种各样的问题。
软件就更是一个备受关注的领域。如果往回倒8年,我们经常听到“我的框架比你的快”这样的比较。那么多年过去之后,今天为止我们依然看见有很多框架在走着老路,重新设计一套语言,重新设计一个开发环境等等。我觉得今天我们不需要来重复地造轮子。软件,或者说框架,核心主要在于两个,一个是往下如何来兼容各种各样的硬件、不同的处理器、不同的新的芯片,另一个是往上如何实现更好的分布式开发。
尤其是当超大规模的模型变得越来越受关注,往下我们需要有更加好地AI编译环境,让软件和硬件更容易地迭代和开发。往上我们会需要有更好的系统和模型,或者说系统和算法工程师更好的相协同工作模式,让我们构建起分布式的模型以及规模化训练。在今天接下来的讲座当中,我们就会讲到在AICompiler 以及在分布式框架Whale等等上面做的工作和思考。
当有了数据和算法,我们怎么样来找到最需要的AI模型?最简单的方式是直接训练一个。但是图片、语音、自然语言处理等等领域有太多的模型,我们不可能每一个都从零开始自己训练。学术界有一个Model Hub ,我们经常可以在网上找到偏向学术的不同领域的模型。但这些实验模型怎样部署,会是个难题。工业界我们能够看到各种各样的AI服务,比如说像OCR 、语音识别等,但要把它们连接起来,好像又比较难。开发者自己也多多少少有一些自己的模型,我们怎么样来自己部署一个模型,怎么样实现所需要的弹性、稳定性、免运维的能力,怎么样把模型从非常大的训练结果到逐渐做量化、做蒸馏、做压缩,到变成一个可以在不同平台上部署的模型,这些都是我们在平台层面需要解决的问题。
最后我们来说人的故事。我们以前在做代码开发的时候,有GitHub等非常成熟的模式。AI要管的东西更多,有数据、有算法代码、有模型、有计算资源、有训练跟推理的资源。怎么样来让一个开发平台从以前的单机,到今天的多机多卡多个数据中心的情况下,依然能够高效地管理调度这些资源。今天后面会跟大家讲到,我们在AIdesigner 或者说AI 工作空间上的思考,用一个统一的空间来拉通我们的算法迭代,数据管理、模型训练和最后模型上线。
AI 的痛苦在于本质上今天AI还没有范式。AI 不是一个产品,这句话有两层含义,一方面它不光是一个单点的产品,而是一系列能力的组合;AI 今天非常强烈地需要标准软件和定制化服务的协同。
我们在云栖大会推出的阿里灵杰就是这样的一个大数据和AI一体化的产品体系。为什么要推出灵杰呢?我们非常强烈地意识到,我们需要把软件、定制化服务、以及开发者效率都结合起来。灵杰做的一件事情是,它将可以标准化的部分标准化,将没法标准化的部分用一系列工具和组件的方式提供出来,让开发者在定制上层服务的时候,能够更加便捷易用。
我们可以把灵杰理解为四层产品的有机组合。它的最底层是基于云基础设施,比如像计算、存储、网络等等这一些我们耳熟能详的基础产品。和以前不同的是,我们并不需要思考,从资源视角怎么样搭一个集群、加一堆GPU、或者装一个硬盘。今天我们可以从需求视角来考虑,需要多大存储、怎样的异构计算、怎样通过云原生容器化等等方式把资源简单地链接起来。这是最底层基础设施给我们提供的简单化、便捷化的能力。
在上面是大数据和AI一体化的平台。我觉得它是灵杰的核心部分。首先它给我们提供了大数据跟AI结合的能力。比如MaxCompute平台已经可以调用10万台集群来支持2000万张表跟千万级任务调度,它的Serverless模式代表着我们可以在非常小的,例如一张表、一个数据集、一个GB、一个任务开始就用零公摊成本来使用几乎无限的弹性。
和大家分享一个数字。过去我们经常有一个感觉,觉得大数据和AI是分开的。当我们在看阿里集团内自己的应用情况时,在大数据平台上,有超过30%的数据计算都已经应用于AI模型训练,这里都还没有计入AI推理这块。通过AI Compiler和Whale软件框架,我们今天也在进一步提升AI计算效率。 当然平台的另一个重点是提升开发效率。在今天后面的分享中,我们会向大家介绍在大数据和AI一体化的平台上,如何用AI 工作空间这样的轻量化平台,以及PAI-DSW、PAI-DLC、PAI-EAS等组件来打通数据、训练、资源管理、推理和服务等等这一系列挑战。 工程平台最终目的是为了实现算法创新。想象一下8年前我们要做一个AI应用的时候应该怎么办?基本上就是我们自己去搜集数据,然后训练一个模型,再非常痛苦地把这个模型在自己手工搭建Web Server里面透出出来。还要时刻担心,如果没有人来访问这个模型,是不是资源就浪费了,如果太多人来访问,是不是服务稳定性又会打折扣。
今天很多AI能力,比如说像OCR、语音、自然语言处理等等,都已经是标准化开箱即用的状态了。因此阿里云的工程师和达摩院的算法同学们合作,在10多种场景下的开放服务层,提供了上百种标准化的算法模型和服务,来解决AI落地应用最后一公里的问题。无论是OCR、语音、还是文本的理解,我们希望能够通过一个标准的模式来实现AI 模型的开通、接入和使用流程,就像下载和使用一个APP那么简单。 在灵杰之上我们搭建了非常多应用,今天大家可能都经常听见,像城市大脑、医疗大脑等等这样的概念。今天后面分享当中,我们想跟大家分享在互联网领域一个非常典型的应用,就是像在电商这类业务中,如何实现更高效地增长。它的本质就是怎么样把用户和他们所感兴趣的内容结合起来,最终达到用户体验和商业结果双赢的局面,后面的分享会有更细节地呈现。 总结一下,8年前我们说能够训练一个图像识别模型然后搭一个小的demo,就已经是一个顶级的AI开发者了。今天我们所面对的需求是将AI 的数据、算法和场景结合起来,去构建一个完整而且更加复杂的解决方案,来解决各行各业当中的实际问题。 从开发的角度来说,从我们想写第一行代码开始,到写下第一个AI模型需要多久?从应用的角度来说,从我们看到一个需求到prototype上线和服务需要多久? 这是我们今天一直在考虑的问题。阿里灵杰解决这个问题的思路,就是让不同的开发者们都能够按需取用、开箱即用。从最底层的基础产品,到中间的开发平台,到上层的开放服务,来帮助各行各业的科学家们和开发者们在云上一起画出人工智能增长的第二曲线。