导读:6月22日,腾讯“云+未来”峰会进入到各专场的环节。来自腾讯技术工程事业群(TEG)的领导及员工作为演讲嘉宾参加了政企、AI大数据、开发者3个专场,并向行业合作伙伴介绍了TEG在该领域的沉淀和探索。TEG数据平台部负责人蒋杰为AI大数据专场致辞,来自TEG数据平台部的智能学习组及海量计算组组长、T4专家黄明发表了演讲。以下为现场内容的整理报道。
TEG数据平台部负责人蒋杰提到,在过去的一年里面腾讯云开放了腾讯数智方略1.0产品,这个产品包含了腾讯10年的大数据能力和经验。开放出来给政府或企业进行部署,能够帮助大家避免初涉的问题。在这过程中,腾讯大数据的能力也在不断的提升。就在去年,腾讯大数据参加了具有全球计算奥运大会之称的Sort Benchmark全球排序竞赛,夺得GraySort和MinuteSort的冠军,刷新了4项世界纪录,腾讯大数据的运算能力达到世界级水平。今年腾讯大数据将继续抱着开放的心态,在腾讯云上把轻量的数据服务能力、实时的多维分析能力、EMR的托管服务能力开放出来。更为重要的是,腾讯的智能服务、数字营销服务这样的重量级服务也会一并开放,让整个行业真正感受到数据的价值。
演讲主题:DI-X:腾讯云上的深度学习平台
演讲嘉宾:TEG数据平台部智能学习组及海量计算组组长、T4专家黄明
大家好,今天由分享的是由腾讯TEG数据平台部和腾讯云联袂合作的打造的产品,DI-X。这是腾讯云上的深度学习平台,对腾讯云升级为AI云有着重要的意义。
今天是AI大数据的专场,大家都知道在过去两年,人工智能得到了迅猛的发展,这主要是因为三个要素:第一个是大数据,从2010年—2015年,互联网行业有了丰富的大数据积累,这给人工智能提供了一个充分的训练数据。第二个是大计算,在过去两年,基于GPU的计算能力突飞猛进,给人工智能提供了一个非常好的加速器。第三个就是深度学习,在2015年到2017年,各种深度学习的框架、算法和模型纷纷涌现,改变了人工智能的派系格局和研究的方向。基于这三个要素,在过去两年期间,人工智能得到了迅猛的发展。
参考这三大要素,我们来对标一下腾讯云的产品。 首先腾讯云有COS,这是一款比较经典的产品,目前它的存储量已经达到了1000P+,这是非常可观的数字,大数据我们已经有了。其次我们有GPU云服务器,这是我们今年刚刚推出的产品,在上面用户可以进行GPU的申请,获得一个单机实例,并进行GPU的计算,这样大计算我们也有了。那接下来就是深度学习平台了,我们推出了DI-X,通过它把COS和GPU连接到一起,打通这两个产品,形成合力。
我们来看一下DI-X这个平台的架构。首先我们可以看到DI-X是接入到COS存储的,在上面有丰富的用户数据,包括各种各样的文本、图片、语音和视频。而在DI-X的底层,我们通过GaiaStack这个资源管理器,对底层的CPU、GPU、内存和硬盘进行统一化的管理。在上面是框架层,我们结合了三大框架,包括TensorFlow、Caffe和Torch,基本可以满足大部分用户的需求。再上一层是算法层,目前我们集成了RNN、LSTM、CNN、DBN这几类,在上线之后,我们会根据用户的反馈做进一步的丰富。再上面是模型层,用户对数据计算之后会产生一系列的模型,包括图形模型、语音模型、时序模型、视频模型和NLP模型等等,这些我们会在DI-X里面进行一个统一的管理。整体基于这个平台,我们给上层的用户,包括其它中小企业提供更好的AI服务,包括图像识别、语音识别、精准推荐、实时风控等等。
有些用户可能会觉得,有了COS和GPU之后,我们其实并不需要这样一个DI-X平台,用户也可以在上面玩深度学习,有一个平台反而会束手束脚。那DI-X到底会带来什么样的变化呢?接下来,我从6个方面来介绍一下DI-X带来的变化,包括资源、框架、调度、调参、模型和预测这6个方面。
首先我们来看一下资源,如果没有DI-X的话,它的资源申请是一个用户到实例的级别,在GPU云服务器上,现在有两个类型,一个是G2,一个是G2large,用户申请之后是要按月付费的,这是一个比较粗的力度。有了DI-X之后,我们现在是基于GaiaStack,它使用docker和Kubernates的技术,能够对GPU底层的资源进行优化和管理,这样分配资源的粒度就按照工程和GPU卡数的关系来分配的,它的粒度更细,也更灵活,而且后续也可以做到按照运行时长来收费。
第二部分我们看看框架,在没有DI-X的情况下,从运行一个实例到跑出一个算法,如果是没有经验的人折腾一两天是很正常的事情。我们可以看到,在整个的过程,包括了系统准备、Docker安装,安装Cuda、安装深度学习框架、对接COS存储,也就是需要把你的代码和COS存储做一个对接,当这些打通了之后,算法规程师才可以上传算法,然后启动一个脚本,把这个任务运行起来。这个过程中只有一个是红色的,只有这一步是算法工程师是擅长的,其它几步对工程能力弱的人来说都无疑是很难的,分分钟会可能卡住走不下去,而且这都是重复性的事情,A用户做了,B用户还要继续做,他们的工作不能被复用。
有了DI-X,这个事情就非常简单了,基于一个可视化的拖拽过程,用户只需要拖一个组件出来,然后设置一下参数,包括算法参数和资源参数,点一下运行就可以了,省去了大量重复的劳动,目前我们支持Caffe、TensorFlow和Torch三个组件,算法方面我们也支持这样的方式,让用户做到即拖即用,释放一个算法工程师的生产力。
第三方面我们看一下调度,如果没有DI-X的话,用户可能写完了一个算法之后,调试好了,它需要定期运行。很传统的做法是用一个CronTab或者它的增强工具,这个工具是很灵活的,它有很复杂的配置语法和条件,配合一些奇怪的需要的脚本,其实它是能做很多事情的。但它的缺陷也是很明显的,就是它的可维护性是非常差的,需要人工大量的干预。为此我们DI-X在调度上有4种驱动方式,除了正常的手工驱动之外,我们还支持定时驱动、重调驱动和参数驱动这三种方式,每种方式都有良好的调试界面可调节,用户可以自主设置三种驱动方式的并发度,让用户得到一个最大的便利性。
第四是调参。我们刚刚留意到有一种调度方式就是叫参数,这是为了深度学习的调参功能,在DI-X之前,用户需要写脚本,进行各种各样的参数调节,通过多种循环来进行参数的组合,然后传给具体的任务,达到调参的目的,但是这种方式其实是风险比较高的,对于写脚本的人来说,对他的能力有一定的高要求。而且一旦习惯了这种方式,很多人就会对平台有一个奇怪的要求,希望我们平台DI-X可以去支持一个组件,在这个组件里面写一个循环来调Caffe、TensorFlow或者Torch,这是非常危险的方式,会让系统形成一些黑洞,这是不好的。为此di-x增加了一个自动化的调参工具,它有4个步骤,第一个是它能够进行多参数的循环组合,第二是它会预生成实例,因为参数形成组合之后,它会有很多的组合产生,这时候是预生成的,当系统的并发度满足条件的情况下,我们才会进行这个参数的真实替换,并且生成多实例并发运行。
这里我们举一个简单的例子,在机器学习中是非常简单的,类似于超参数调节的东西,它有两个参数,第一个是数字型的,第二个是字符串型的,DI-X提供这样的功能,经过这样调参之后,可以方便用户进行比较。这是DI-X目前的自动化调参,后续我们会针对深度学习的超参数调节进一步优化。
第五个模型。在DI-X之前,其实用户训练完了之后会有一个模型文件的生成,Caffe、TensorFlow和Torch都有自己的格式。用户为了把这个模型进行一个同步和上线,其实有一种最常见的方法就是用SCP,在不同的用户之间SCP来,SCP去,在这里面它没有版本的管理,同时它也依赖具体运维人员的靠谱程度,决定模型的命运,包括它如果覆盖错了,有可能一个效果好的模型,就会被效果差的模型覆盖掉,这时候效果是非常难以把控的。
为此我们推出了一个模型的概念,在DI-X中对模型进行了针对性的设计,我们把这个设计叫做小尾巴,目的就是把一个模型具像化,在一个深度学习算法里面,它的左边有一个小尾巴,里边有一个小沙瓶,在算法模型运行的过程中,这个小烧瓶不停地冒泡泡,代表它是在运行,在炼丹,这在机器学习中是一个非常常见的名词比喻。当算法结束之后,这个小烧瓶也就满了,代表机器学习过程完成了。这是一个把模型从抽象到具像的过程,当这个模型训练完之后,它有丰富的行为,我们可以把这个模型进行收藏、导出和分享。收藏模型之后,这个模型就会被收到个人模型这里,成为一个模块,它可以被拖拽出来到画布,而分享模型,你可以把它分享给你想要合作的同事,你的模型就会出现在他的共享模型里面,他也可以直接把它拖拽出来使用。
第6个就是预测。其实就是一个训练和预测分离。我们知道深度学习里面,预测是一个非常重要的概念,模型训练完之后只是走了第一步,模型的使用,也就是预测才是更加重要的一个工作。目前我们这样一个模型拖拽出来之后,它会变成一个圆圆的一个大节点,可以对数据进行Offline的预测(推理),关于模型的在线预测(online-inference)功能,我们正在加紧上线中。
那综合以上6点,我们来看一个di-x预发环境的线上任务流:第一个是六边型数据节点,它会去检查COS路径上的数据在不在,并将路径传递给下一个节点作为输入;第二个是长方形的算法节点,带着一个模型训练的小尾巴,跑完之后,它的输出继续传给下一个节点;第三个是圆形的模型节点,它是之前训练好模型,用于对上游节点的数据,进行直接批量的预测,得到最终的结果;整体上看,这是一个多元素的任务流,有点复杂,但是相当灵活。门槛不高,用户熟悉了之后,很容易上手。
整体来看,DI-X是一个融合了深度学习的框架、算法、模型训练、模型推理和协作的一站式深度学习平台,在它上面可以完成一个深度学习的闭环,直接对之前存储在COS上的数据快速的进行挖掘,而得到的模型又能够快速的部署,降低人工智能的门槛。