近年来,机器学习技术的发展归因于我们有极其庞大的数据用来训练算法。当企业需要落地大规模机器学习时,往往会面临很多难题,如何解决这些问题?如何系统了解大规模机器学习落地的技巧?其适用场景是什么?InfoQ 希望通过该选题解决这些问题,并推动企业在大规模机器学习方面的实践。本文,InfoQ 有幸采访了阿里云机器学习研究员林伟,听他分享自己的经验和见解。
何为大规模机器学习
毫无疑问,我们已经迈入人工智能时代,机器学习几乎渗透了我们日常生活和工作的方方面面,创建深度学习模型越来越容易,但大规模工业部署却依然没有那么容易,第一现在模型变得越来越大,越来越深,需要强大算力和海量的数据才能够支撑训练出更好的模型;第二模型训练出来需要在推理的时候高效的执行才能真正让模型落地,这个里面就需要非常多系统工程优化,以及模型和工程一起的协同优化。当然并不是模型越大,训练效果就会一定好,模型本身的提高以及训练方式都决定了最终模型实际效果,这就需要我们也在算法,训练手段层面的突破。
对众多深度学习开发者而言,只要拥有一张 GPU 卡,很多流行的 AI 模型都可以得以训练。但对公司而言,随着业务需求的提高、精度要求的提高,就会面临更大模型、更多数据训练的需求,此时就需要更强大分布式训练平台以适应大规模的训练的需求,同时因为数据量增加,我们需要让 AI 训练和大数据平台结合起来,从而满足算法研究者各种数据组合加工,尝试不同训练方式,从而能够快速迭代模型,提高模型的精度。
那么,何为大规模机器学习有明确的界定吗?
采访中,林伟表示,我们所说的“大规模”可以解释为需要几千台机器、几千个工作者一起协同训练,也可以理解为多硬件资源,比如 GPU。
在阿里巴巴内部,林伟所在团队训练过非常大规模的稀疏网络,这类模型很容易大,而且更多偏向于推荐、搜索等信息流类型,往往需要几千个工作者的协同训练。同时对于稠密网络,比如感知类的 AI 网络,比如视觉、语音、自然语言处理现在也在变得越来越大,也需要要几十张到几百张卡一起训练。
如何设计相对完善的机器学习平台
根据林伟介绍,一个大规模的机器学习平台首先要具备优秀的调度能力,并非所有任务每天都需要大量资源,但要保证极限情况下的承受能力足够强,而所需资源不多时又可及时释放。所以,大部分机器学习平台都是从小规模逐渐做起来的,这个过程会积累一些能力,比如沉淀一些框架和平台,或者帮助开发者做分布式训练等。
阿里最近推出了机器学习平台 PAI 的 DSW,其托管在云平台之上,非常方便,开发者可随时打开 IDE,该平台可自动保存工作内容,然后可以快速开发。如果开发者觉得模型基本完成,希望无感知提交到更大的集群中时就涉及关于模型的开发。
模型离不开数据,在数据处理中,开发人员需要有配套的大数据处理能力,需要对数据进行清洗和提纯,这就要求平台需要具备大数据能力,这也是为什么计算平台会把 AI 和大数据作为两大引擎,因为彼此之间需要交互。同时,平台上训练出的模型需要在业务中达到一定效果,比如让服务做到低延时、高吞吐,保证服务发布、更新、迭代、切换以及报警、监控等。
AI 需要大量的数据,而这些数据还得有标签,这意味着数据标注平台同样重要,可以帮助用户快速处理数据。其实,现在 AI 整个训练流程非常灵活,如果要在更大的范围内做一些训练,比如发布一个模型,可能会有一些 bad case 或者识别不好的负样本,我们要把这些 case 积累在一起,并帮助用户重新调整模型以提高最终效果。
事实上,AI 属于计算密集型任务,需要大量数据交互,所以分配资源的时候要根据任务大小来考虑如何对应到底层硬件的拓扑结构上,使之能够充分利用异构特性完成整个过程,我们能够充分利用系统对训练任务的理解,有效调度不同部分到不同的资源上面,充分地利用多种硬件资源,发挥系统的最高效率。
此外,要考虑容错,因为过大的集群经常容易发生错误,机器并不是永动机,随时可能出现问题,软件也不能保证没有 bug,容错需要和调度系统配合在一起。
在这个流程中,为了提高效率,还需要配备各种性能优化和加速工具,包括推理、量化、压缩、蒸馏等,这些工具彼此之间的连接也是平台需要做的事情。
总之,AI 工程非常复杂,牵涉很多环节。
阿里大规模机器学习实践
回顾阿里的机器学习研发之路,林伟表示,与所有事物的发展过程一样。起初都是希望通过各种技术手段提升商业效果,当时阿里内部各个部门都有自己的算法团队,从集团的横向层面来看,这种烟囱式结构是比较低效的,因此希望沉淀出一些通用能力,这就是 PAI 的前身。
那时,深度学习还没有火起来,更多的是传统机器学习、传统的训练模型或者统计算法,阿里希望能够复用这些算法,进而提高整个集团的研发效率,于是就推出了PAI-Studio,其实就是把算法沉淀为组件,在数据处理和算法之间做串联,使之能够图形化管理,这是 PAI-Studio1.0 时代,这个时代就是更好的把工作流程串成可视化的图。
随着深度学习的出现,业界开始出现形形色色的算法。此时,阿里希望可以把深度学习的能力做起来,因为阿里内部有大量数据,特别是核心电商领域,由于数据量过于庞大, 开源引擎的问题开始暴露出来,会遇到各种各样规模性问题,这促使阿里在这方面走得很快。
随着优化的逐渐深入,大家已经开始应用深度学习做感知类应用。在这种情况下,阿里自研的机器学习引擎在外面也是有市场的。阿里开始对外输出,服务更多的企业客户。
一直以来,林伟认为做系统的人可以分为三类:第一类是做出来的系统可以解决业务问题;第二类是做出来的系统可以在未来 5 年持续不断地在原来的设计上叠加新功能,并且具备一定可扩展性,这样的系统具备一定生命力;第三类是通过一些部分的重构和变革,可以让系统随着业务规模的增长持续发展,这一类是最强的也是最难的,基于这些想法,林伟整个团队不断迭代机器学习平台 PAI,并且在阿里巴巴内部业务和外部业务均取得了不错的效果。
机器学习 PAI 平台的目的是希望算法开发同学能够更加高效地开发应用算法,帮开发者做到更好的性能,更大规模和更低成本的训练。
在阿里巴巴内部,业务场景数量很多,数据规模也很大,这让我们能够训练出一些有效模型。但这些训练模型往往需要很多异构机器协同,我们会搭建一个很大的共享平台,让形形色色的任务都在平台上跑,最大的任务可能要处理 TB 级别的数据。如何让训练任务跑得起来,在需要共享的集群里面做好调度和系统配合,使得我们充分利用这些资源提高集群效率,是我们整个平台的愿景。
最开始,PAI 在 Studio 方面做得比较多,林伟整个团队将阿里巴巴的 AI 能力以 Studio 的模式开放出去。其中包括智能数据标注、可视化建模、在线预测部署等全托管的 AI 工程服务
机器学习 PAI Studio
最近这一年,PAI 更加注重云原生,与 K8s 等进行了紧密结合,使服务能够对云上的客户体系更加规则。包括云原生交互式开发平台 PAI-DSW,以及云原生分布式深度学习训练平台 PAI-DLC
机器学习 PAI DSW
机器学习 PAI DLC
另外,林伟带领团队在使用体验上不断投入,包括产品的易用性和敏捷性,以及 Open API ,希望可以帮助更多个人和小型企业慢慢成长。
PAI 同样是一个开放的平台,在深度学习框架这层一直是拥抱开源、兼容生态,比如会在开源的 TF 框架下面做优化,同时将更改及时提交到开源社区,也与 Facebook 形成战略合作,推动有关 Pytorch 的一系列优化想法。在开源开放层面,开源的 ALink 与 Flink 形成数据和算法的有效结合。如今,阿里在集群管理层面也开始参与到 K8s 社区,希望有更多贡献。
实践建议
如果企业希望内部实践大规模机器学习平台,林伟建议,在人才层面,想要构建大规模机器学习平台需要对业务有所理解,算法团队需要具备一些基本功,虽然现在的机器学习没有传统的机器学习对算法要求那么高,但迭代模型还是需要建立在对算法、数据、模型原理的理解上,并且需要具备一定数学基础。
在工程上面,林伟表示,工程是模型落地、产业化很重要的一环,企业需要深入考虑各种引擎的优劣,挑选适合自己需求的,可能是研发为主,也可能是效率或者模型很大的情况下需要分布式的训练、服务和推理平台等。
同时,AI 工程比较复杂,不仅局限于训练和推理,还需要关注数据的处理,现在业界也有很多做深度学习的企业,如果具备有算法团队,再加上开源框架,单机或许就可以训练模型,这种方式遇到大规模训练的时候,其实是有很多挑战的,最开始碰到的可能是数据问题,数据该怎么管,怎么样存、再往后可能就是训练的问题,所以是否可以有效管理并探索出适合自己的方向,可能是比较重要的事情。
“我不是打广告,我觉得选择云平台最终可以帮助企业提高效率、节省成本,并且开发人员应该把自己的关注点放在业务相关的算法层面,这一层其实有大量发展空间。同时,因为阿里云兼容各类生态和标准,因此也不存在绑定问题,不满意随时可以搬下去,但上云确实是业界的趋势。”
初始上云时,企业可能在考虑与使用物理机相比到底有没有竞争力,但从长远来看,云平台提供的弹性和灵活等特性会大大节省成本。而且,对于有技术梦想的公司来说,云平台其实有很多想象和实验的空间,企业可以根据自己的需求选择不同层次的 API,接入不同的能力,然后提高自己公司的生产效率,更好地应对业务发展。
结束语
在过往 15 年分布式系统的从业生涯中,林伟同样见证了开发者生产力被一步步解放的过程,自从云计算、人工智能等新兴技术出现,市面上不时就可以听到开发者对这些技术将取代人工的担忧。
对此,林伟表示,其实你从另一个层面来看就会发现技术的世界一直在更新换代,以操作系统为例,当 Linux 和 Windows 占据上风之后,其他操作系统都慢慢消失了,那曾经的这群开发者去哪里了呢?要么积极加入到 Linux 和 Windows 的开发中,要么拥抱新的技术变化,去看看下一个技术热点是什么。事实上,每一个业务场景发生变化的时候,都可能是新的机会,可以尝试做下一波要爆发的技术,从中获得的满足感将会很大。
对于做平台的研发人员而言,只要场景清晰了,就会开始沉淀,但肯定也会有一些混沌的、未知的领域,这些地方就会有大量新的思路和想法出现,身处其中的每个人都在发挥自己的长处,然后慢慢沉淀。
嘉宾介绍:
林伟,阿里云机器学习研究员,对大规模并发系统有 10 年以上的系统架构设计及研发经验,并在国际一流 ODSI、NSDI、SIGMOD 会议上多次发表论文。原微软大数据平台组的核心成员,曾在微软亚洲搜索技术中心和微软美国工作 10 年,一直从事分布式系统开发和大数据平台的相关工作。
评论