7月2日,2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以“智能云网边,可信创未来”为主题,由中国信息通信研究院主办。
下午13:30大会特设的智能云论坛活动正式开始,腾讯云AI平台专家产品经理余祖坤做了《AI建模平台的设计实践》的精彩演讲。
腾讯云AI平台专家产品经理余祖坤
谢谢大家!很荣幸跟大家一起分享一下腾讯AI建模平台的设计实践。
AI建模平台有很多,想分享一下腾讯在这个领域是如何思考的和整个产品的思路。
当数据量越来越大时,单机跑不到,需要分布式算力或一个工具,我们理解建模有点像电饭煲,把数据塞进去,怎么做成你想要的菜,最终输出的是模型,AI建模吃的是数据,输出的是模型。
建模这件事情一定离不开两件事情:算法工程师,现在市场上传言很多,一般说薪资很高,没有头发等等。也有人会说算法工程师主要工作其实有点像炼丹师,因为没有办法保证炼丹师一定能炼出想要的东西,客户说这个能达到多少性能指标吗?算法工程师没有办法说一定达到。
一般一个算法工程师首先会从数据开始,要输入一定数据,对数据进行预处理,比如异常值处理,另外要找一些特征,对原始数据和数据列的信息进行加工,取得一些特征之后,塞到他想要的模型里去,然后进行训练,训练时涉及到需要很大的计算集群,需要一些算力。得到一些模型之后,他要做这个模型的评估。评估好了之后才会把这个模型上线发布服务,在线预测,或者发布成这个服务之后,怎么样把这个模型发布成服务?原来可能会想把这个模型跑完了之后出一个图,但在模型应用的时代,非常关心怎么把这个模型发布成一个服务。
观察了炼丹师一般工作之后,我们认为有这些核心的环节,提炼之后,有数据、算法、算力、模型评估、模型怎么样部署服务、进行在线预测等。有了这些诉求之后,怎样去设计一个产品?究竟现在要不要这个东西?市场上有那么多框架,就要比较一下为什么我们需要一个一站式建模的平台。建模这件事情有一系列从下往上可关注的点,比如需要有计算资源,CPU、GPU,现在计算机体系结构迎来了第二春,从x86时代以来,计算机体系结构很长一段时间没有变化,现在这个时候底层计算机架构越来越多,计算资源越来越多,数据量越来越大时要选哪种,如果要自己解决成本很高。
现在计算框架非常多,没有达到统一阶段,在当下来看,框架维护还是很烦琐的,这也是一个痛点。算法,传统机器学习分很多算法,要去处理需要很多手工活。如果更多时间去处理工程性的活,经常会出现招人时用飞机大炮,进来时用小米加步枪。怎么解决企业这些困难呢?这里就存在平台可以做的一些价值。
模型怎么样调优是很需要水平和时间的,如果自己用一些框架去调,每种模型也可以调特点,每次都用手工去调,如果你的同事用另外一个框架,可能没有办法跟你交流。
模型如何发布?以前比较土的办法是把模型服务打包成一个任务,当量上去时,有很多痛点和不稳定性,没有办法达到企业级应用的需求,核心点是希望跟当下最流行的结构集群应用技术结合起来,是一个解决的方法。所以在此基础上,希望能做一些什么样的平台,能解决刚才我们谈到的折价问题,底层资源有一些管理、有一些优化,有些客户有跨地区的机房,跨地区机房怎么样搭建,是我们要考虑的问题,这是产品要解决的问题。
要集成这些主流的框架,不同框架在变化,怎么样吸收进来,它升级了,我们怎么样把它升级,集成到我们上面做的这些应用业务中来,这是工具型产品需要解决的问题。
算法,这个产品要解决什么样的东西?更多要解决的是沉淀。有些算子,比较大的模型提前做了预训练,预训练的算力对你来说是省了。
发布不同的模型可能会更新,它的更新要怎么样考量,后面会说一下这个产品我们关心的一些点。
所有框架是我们天然的竞品,我们得出这几个价值主张。
AI建模平台用户分析。
建模平台如果仅仅是为很专业的算法提供服务的话,这个平台用户会很少,而且现在我们也观察到了整个AI算法的应用不再是少数人的游戏,是整个行业都有诉求的点,我们把用户定义为三类,有可能是很资深的算法,以前就是一直在调参的专家,也有可能是刚开始入手,想了解清楚怎么样去建模。还有不是算法人员,但大家多在说,他也想去用一用。这三类用户有不同的诉求。
第一类用户更希望是交互式的,能够探索,给我更高的自由度,但计算资源要非常快,而背后算力希望是弹性的。希望是在性能和灵活度上有一定要求。
这些算法新手更多关心的是不要让我从头开始,能给我提供一些价值就好,我们关心的是给他提供更好、可视化的操作工具,甚至别人留下的一些算子,我们能够去复用。
在此基础上,我们考虑一下,希望能够搭建一站式机器学习的平台,把数据的接入、数据的处理、特征的提取、模型的训练、模型的发布和部署都解决掉,这是我们对这个产品的一些设想。
前面分析了用户,也分析了用户场景,这个产品要怎么造?首先是资源层的抽象,在资源层里,既关心本地资源,也关心云端的计算资源,因为不是所有客户都愿意用云端,也不是所有客户都愿意用本地,在我们分布式组件上能部分支持,在云端支持不同分布式存储,也支持一些对象存储,甚至现在在产业AI方面支持的数据库会逐渐向客户倾斜,去满足客户需求,更加接地气。在调度层上,之前用的技术,AI算力需要快速扩张,所以一定需要虚拟化的技术,需要大规模集群分布式的技术,所以我们是从云的整个虚拟池里抽取底层技术,抽象成我们AI建模平台的底层组件,核心特点是我们能够做到资源的虚拟化,这个虚拟化能做到1/10的级别。
在算法里,大类集中在客户需求量比较多,内部用的比较多的三类算法:传统机器学习,要自己提取特征;腾讯是做社交的,关系数据很多;深度学习算法,腾讯现在搞很多图像,我们关注这三大类算法,但算法扩充也会去关注。在此基础上搭建模型,然后发布出来。
说到AI,哪些AI是我们要自己建模的,有的丹要自己炼,有的市场上有卖,比如程序员必备的六味地黄丸,不需要去炼,买就行了。只有你自己吃的,市场上没有的,需要自己去炼,有些丹比较通用,比如人脸识别,都是那些脸,没有必要自己训练一次。我们希望为客户打造一个一站式的AI平台,所以把模型的管理能力也做进来,成为特性的一部分。
刚才提到几个点,分析了一下建模的用户,也分析了建模大概的流程和核心功能点的诉求,以及我们想做什么。刚才分析用户时也分析了一下客户,AI如果是个人来做,一定有一定的局限性,因为数据其实很多不在个人手里,个人产生的数据,比如在网上浏览的痕迹、在网上发帖不在自己手里,AI应用的主流有可能会是有这些数据的企业或个人。我们定义客户时,也会定义到有一些新的需求点,关心的点是这个人今天嫌工资低走了,新来的人怎么接,所以关心的点是怎么协作和分享。前面任务流设计和可视化、运营模式是我们前面已经提到的一些关注点。
设计产品特性,希望是一个可视化拖曳式设计,可以拖曳,这里有数据、组件、算法、模型,都可以往外拖,在建立工作流时可以根据需要去拖。可以把你的数据上传到数据里去,接下来在后面组件中处理。节点自动联线,我们在这里希望为客户解决一些问题,提高体验效果。我们做到节点的自动联线。
自由绘制工作流,这里有一个组件,是开放出来的东西,不想用上面的算力,或者找不着,在这里没有,把其他云的脚本上传到对应的组件里,可以帮助你处理你要做的处理,这个组件和我们一些算子之间可以自由拖曳,形成你想要的结果,为客户提供更高的灵活度。
可视化,中间结果的预览,每个节点输入什么、输出什么,我们关心的究竟是什么,当你放在那个节点上,能够查看这些结果。特征可视化,有一些模型希望能够看到这些特征的,尤其是对一些传统行业的客户,比如金融客户特别希望有一个解释、有一个说法,希望我们究竟在起作用的特征,可视化一下,让他看到。模型的可视化,希望能看到模型。结果的可视化,能看到模型的结果。
调度策略。定时调度策略,可以根据自己的调度策略、自己跑批的结果做一些定时的调度,定时会重新训练这些模型,然后再去发布它。
支持多种机器学习框架。我们在内部做了一个自定义模块的管理,可以通过管理员后台加入一些新的进项,通过框架的进项做一些处理时,把新的框架纳入进去。
这个平台本身究竟要提供什么样的价值,让客户全认可?我们也做了一些硬核科技,对它的性能做了一些优化。比如与Tensorflow原生框架相比,大规模GPU集群时的加速比提升明显。
节点扩展成本恒定,与系统中GPU的数量基本无关,可支持超大规模GPU集群扩展。
内置丰富的算子。现在做了很多机器学习、深度学习、通用模型的算子,还有自定义的组件,现在逐渐增加一些不同行业关心的算子。还有其他行业会有更多的关心,比如电视台,关心视频类的算法,我们会通过这种方式匹配不同的建模工程师。
对于高级用户支持Notebook,我们除了做实时监控之外,在这里写的脚本可以拿到前面我们写的自定义组件里面去的,实现这个脚本到这里的打通是无缝的,对算法工程师来说是一个很好的体验。
小白用户可能关心我什么都不想知道,你就告诉我结果,我们也做一些自定义AutoML的算子,把数据接进来以后得到他想要的结果,回头想看训练过程时,也会通过可视化方式让他去查看,对小白用户来说可以达到一定效果。
这个平台还要有一个模型部署,我们能够做到在页面上一键部署,把更多精力可以放到怎么把算法调好,可以实现算法流和业务流的结合,从而把算法的应用跟业务系统打通。
模型托管,外部导入、多种类型。通用模型可以从外部弄进来,自己特性的模型可以自己训练。
平稳上线,支持A/B Test,灰度升级。
团队协作。1.炼丹师炼了很多丹,可能会放在仓库里,同样我们也希望把这个模型放到仓库里,你自己训练的模型可以导到我的仓库里先不发布,等领导审批之后再发布,也可以从外面导这个模型,可以把它拿来,形成自己的存储,必要时把它拿上去或拿过来从而训练一下,放到模型仓库里,必要时进行发布。
2.不一定要自己训练的模型,有可能希望从外面搞的模型,我们有一些模型集市,你搞的模型希望大家都来买一买,可以放到集市上出售,希望打造一个AI模型生态社区。
站在客户角度如果有这样一个平台如何建模?
首先可以新建一些工作流,也可以从已有工作流中复制过来,然后去改一改,降低难度。另外去训练,用分布式算力去计算,训练好了之后可以保存到模型仓库中,甚至可以训练不同版本,当需要部署时可以选择部署不同版本,每个版本可以自己去部署后面的资源,可以选择Docker容器数量,部署之后,这个模型运行时去调度,过段时间差结果,结果不好可以重新创建一个。这是整个AI模型应用的一个闭环。
这个平台我们在内部也有一些使用,如腾讯视频在训练一些视频类数据,CDG搞一些广告算法大赛也会用我们的平台,理财通做金融类的场景。在外部客户里,有一些大的客户,除了内部在云端跑的数据之外,也有一些客户希望能够做一些新的应用,如海通证券,会用这个来做一些反洗钱或其他的动作,中国银行会用这个平台来做风控,还可能希望经常更新、优化,希望能够有自己的模型和迭代能力。
AI建模平台发展趋势展望。
在计算资源上,尤其资源架构上现在发展非常快,以前计算卡很少,现在计算资源越来越多,我们关注到正在发展到专有计算架构,一些新的AI计算在不断涌现,前面支持的深度学习、机器学习和图学习,往下来看,现在强化学习发展非常快,包括迁移学习,未来有人在提知识推理,都是AI模型关键的一些难点。随着产业互联网的发展,积累越来越多数据和应用之后,这块也不是没有可能。我们考虑平台上不断集成新的应用场景和技术。
以前人蛮少的,现在公司里越来越多了,很多学校毕业的硕士、博士都跑到公司去了。越来越多的公司人员去参加,我们开始关心怎么样去优化这些算法和算力,因为可以预见的是整个算法算力越来越多,如果我们做一点点性能优化的话,从整个大的角度来说,资源优化量非常大。
站在腾讯角度来讲,我们想推产业互联网,AI建模平台是以云端为导向,在云端AI算力跟我们产业AI平台之间有联动,未来也会跟我们生态联动,希望打造的是这些模型建模数据能够协同的生态型工具,最终助力产业互联网智能升级。
谢谢大家!