首先,本文所指机器学习平台是:为提升机器学习效率,降低机器学习应用门槛,提供从数据导入、模型训练到模型部署、模型监控功能的一站式机器学习平台。为避免概念混乱,特别说明TensorFlow、PyTorch、Caffe、CNTK、MXNet、Spark等在本文中不是指机器学习平台,而是归为深度学习、机器学习计算框架。
那么机器学习平台离我们有多远呢?目前国内外各大互联网公司还有一些人工智能创业公司已经建立了机器学习平台并不断优化,有些在建立机器学习平台的路上或者规划中。其中,第四范式的Hypercycle、阿里的PAI、百度的BML、腾讯的智能钛机器学习平台、华为的ModelArts、美林数据的TempoAI、九章云极的APS、袋鼠云的AIworks、数澜科技的DeepWave等都是国内可以对外提供服务的机器学习平台;另外,像汽车之家【1】、微博【2】、爱奇艺【3】、VIVO【4】、美团【5】、滴滴【6】等都已建立或正在建立对本公司内部服务的机器学习平台,并在网络上公开自身构建机器学习平台的方案和思路。因此,目前国内公司离机器学习平台并不遥远,若采办外部机器学习平台,很快即可使用;若打算自建机器学习平台,在拥有一定人才、硬件资源的情况下,1年左右的时间可以完成2-3个版本的迭代,获得一个较为稳定可用的机器学习平台。
为什么需要机器学习平台呢?在没有机器学习平台的情况下,主要可能遇到以下问题或困难:
1 烟囱式开发,导致不同团队重复造轮子,各个团队独自负责自身机器学习框架、环境搭建、框架版本适配、特征工程、模型训练、模型在线预测,此模式在业务早期可以灵活适应业务需求,但是在团队较多、业务稳定后会造成算法迭代效率低下,算法工程师精力重复消耗在并不特别擅长的工程事务;
2 计算资源未充分利用,计算资源切割属于各自团队,导致有些计算资源闲置待用,而有些团队又等着计算资源来进行训练,导致公司硬件成本攀升;
3 算法团队协作困难,不同算法团队甚至同一团队的不同人员,在数据共享、模型共享方面均存在一定困难,人员的离职、调动又极可能导致之前的模型资产、经验累积丢失;
4 机器学习应用范围受到限制,很多公司或很多业务可能并不是以算法为核心打造业务,但是通过机器学习可以赋能或优化业务,但这样的公司或业务条线往往没有能力配备机器学习团队,导致无法在业务中应用机器学习或者需要排队等待算法团队档期。
一个机器学习平台应当具备哪些能力呢?为解决上述问题或困难,一个机器学习平台应当具备以下能力,实际上国内外各机器学习平台基本上均具备以下能力:
1 具备从数据导入、数据处理、模型构建、模型训练、模型部署、模型更新到模型监控的机器学习全流程的功能模块,支持各类主流机器学习计算框架,所有团队均在同一个平台上完成这些工作,让算法人员尽可能从工程事务中解放出来,专注于特征选择、模型构建优化等方面的工作;
2 具备统一的资源调度能力,能够弹性调度平台的CPU、GPU、TPU计算资源,提升计算资源利用率,降低企业硬件成本;
3 具备团队协作共享能力,方便团队之间或团队成员之间共享数据、共享模型,提供模型沉淀路径,经过验证或评审的模型可以成为平台的预置模型供其他人便捷调用;
4 具备低门槛或零门槛建模能力,业务工程师可以直接或简单培训后使用机器学习平台,因此平台除提供Notebook建模方式外,还提供拖拉拽可视化建模功能,业务工程师配置模型参数或直接采用自动模型参数的情况下即可构建模型并提交训练。更进一步,平台会提供自动机器学习(AutoML)功能,用户只需提供数据即可一键建模,将建模门槛进一步降低,不过目前AutoML仍然处在快速发展中,还有很多地方需要进一步完善,不过因为其广阔的应用前景,一旦AutoML获得重大突破,不但业务工程师将获得快速建模能力,也可以辅助算法工程师进行建模,提升建模效率,因此国内外技术实力强劲的公司均将AutoML作为机器学习平台的标配,目前也出现了一批专注AutoML的创业公司。
按照以上机器学习平台的能力要求,以下是一个通用的机器学习平台产品功能架构图,目前而言各公司机器学习平台基本具备这些功能,在少数地方有差异而已。各功能详细说明如下:
1 硬件资源,一般至少具备CPU和GPU硬件资源,TPU视情况配备;
2 资源调度,目前主流趋势是基于Kubernetes做资源调度策略【7】,支持自定义调度策略配置,也有基于Yarn做资源调度策略,但是Yarn对GPU的调度存在稳定性风险;
3 计算框架,需要支持主流的计算框架,如TensorFlow、PyTorch、Caffe、CNTK、MXNet、Spark等,具体支持哪几种计算框架视具体业务或客户而定,支持的计算框架当然越多越好,但后续部署服务时需要针对每种计算框架进行封装,工作量也随之上升;
4 存储,一般需要支持HDFS、对象存储、Mysql、Kafka等存储方式,结构化、半结构化的数据往往在HDFS中存储,非结构化的数据如图片、视频、文本等往往在对象存储中进行存储;
5 机器学习全流程
6 应用场景
简单来说,能够应用到机器学习技术的场景均可作为机器学习平台的应用场景。目前主要的应用场景有智能推荐、智能语音、机器视觉、NLP、时序预测等,不同的应用场景需要的数据形式、数据规模、计算能力、预测时效等要求会有差异,导致机器学习平台的技术架构、性能要求不一致,因此在建设机器学习平台时需要根据目标用户的应用场景进行选择。
建设一个兼容性强、运行稳定、性能优异的机器学习平台并非易事,将会遇到许多困难和挑战,需要做大量的工程处理和具备较强的技术能力,主要问题和挑战如下:
无论是对公司内部服务的机器学习平台,还是面向市场对外服务的机器学习平台,平台功能清单相差不多,对公司内部服务的机器学习平台限于场景和预算,平台性能和场景相比而言会逊色一些。另一方面,虽然平台功能列表基本上没太大区别,但是侧重点还是不一样的。
类型 |
对公司内部服务机器学习平台 |
面向市场对外服务机器学习平台 |
代表 |
汽车之家、美团、爱奇艺、VIVO |
BAT、华为、第四范式、美林数据 |
目标客户 |
本公司 |
需要通过机器学习赋能业务的公司 |
目标用户 |
本公司算法团队,技术能力一流 |
业务工程师、算法工程师,无机器学习背景到机器学习能力一流都有可能 |
核心目标 |
解决资源统一高效利用 减轻算法工程师工程方面事务 提升算法迭代上线效率 规范算法团队协作管理 满足公司业务应用机器学习 |
利用机器学习实现业务降本增效 降低机器学习应用门槛 降低机器学习应用人力成本、硬件成本 覆盖尽可能多的应用场景 实现公司间数据、模型协作共享 |
应用难度 |
容易,平台发起人往往就是算法团队负责人,保证平台一定的灵活性,在保证平台可用、稳定的情况下,迁移难度不大 |
困难,往往需要算法工程师等驻厂以项目的形式开展,先进行POC,达到目标后进行平台的真正采购部署,后续还可能需要支持培训、维护等工作,中间还有漫长的商务流程。 |
面向市场对外服务的机器学习平台可以分为两类,一类是BAT、华为等大型公司提供机器学习平台作为其云上面的一个产品,根据计算资源、存储资源、时长等计费;一类是第四范式、美林数据、九章云极、袋鼠云等中小型公司以机器学习平台作为公司核心产品,以项目咨询服务、软件部署等方式计费。从IDC的公开资料来看,2019年第四范式、美林数据、九章云极占据中国机器学习平台市场份额前三甲,这是应该是这三家公司投入更多项目咨询资源、销售资源相关,即当前阶段客户更加注重能否以项目的形式将机器学习在公司业务中真正落地。
对于传统企业而言,不能仅向企业推销机器学习平台,AI咨询服务、AI项目建设、平台使用培训、平台运营是机器学习平台在企业真正用起来的必备条件,采购机器学习平台可能只是其数字化转型项目或智能化转型项目的一部分,从官网上看,第四范式应该是最注重这些配套服务的,因此第四范式能在市场份额中独占鳌头也是情理之中。可以看出这种以项目形式推进客户购买机器学习平台的方式,往往成本居高不下,包括销售商务成本、算法工程师人力成本、产品经理项目经理等其他人力成本、差旅成本等等,甚至导致很多项目实际上亏损严重,像第四范式也经常被吐槽为外包服务公司。
那么未来机器学习平台的发展可能的方向是什么呢?我个人理解应该是从以下两个方面进行优化:一是继续提升机器学习平台性能,如更灵活更有弹性的资源调度、更快的分布式训练、超参数自动调参、更快的推理引擎、更高效透明的AutoML,这些性能优化能提升算法工程师工作效率、降低企业硬件成本,也是机器学习平台的技术门槛,是头部机器学习平台的必争之地;二是继续降低应用机器学习平台门槛,从平台功能上来说:除现在拖拉拽可视化建模外,还需要积累更多场景的算法模型,实现开箱即用,即用户只要提供符合格式的数据,选择平台预置的模型流程,即可训练得到新模型;积累更多场景的预训练模型,用户只需要提供少量数据,即可通过“预训练模型+小样本微调”的模式快速得到新模型;更清晰易懂的引导或咨询,帮助用户选择适合当前场景当前数据的算子或模型;提供隐私计算等功能,让用户对数据(或样本数据)接入平台的安全放心,算法工程师可以远程处理数据构建模型,而不是每次都需要驻场才能接触到数据,以减少项目实施的驻场次数和时间,缩减项目实施的成本;继续提升AutoML性能,真正让用户可以用较短的时间获得效果满意的模型;从配套服务来说,为客户提供整体的智能化转型咨询,提供落地机器学习的项目实施,提供面向业务工程师的机器学习和平台使用的线上及线下培训课程,提供平台后续使用运营服务等,这些配套服务是机器学习平台在企业落地的关键支撑,而一个落地的同类场景对吸引新客户而言胜过千页PPT,因此需要格外重视,但现阶段这些配套服务可能是亏损的,需要企业量力而行,即在能力范围内,在产品研发和项目实施平衡的条件下,尽可能提供这些服务。
另外未来还可以扩大活跃平台网络,构建拓展平台生态系统,让平台上的不同客户可以方便安全交易数据、模型,包括引入培训个体或团体算法供应商、不同客户数据\模型交流渠道、客户需求线上发单、单个模型购买调用等,这部分阿里PAI在产品架构中有明确规划,但是考虑到ToB的差异性、复杂性、安全性等,实现起来尤其是真正活跃起来并不容易,或者说现阶段这部分还处在探索、尝试阶段,离真正发挥网络效应、生态效应距离还很远。
最后,感谢各位前辈关于机器学习平台方面的资料分享,受益良多,这也是我写这篇文章的动力之一,希望读者能有所获益;也感谢大家的阅读,若文中存在理解有误的地方,还望指正。另外欢迎对机器学习平台建设有兴趣的朋友一起交流学习,共同进步。
参考资料: