未来已来,7000字详解机器学习平台

首先,本文所指机器学习平台是:为提升机器学习效率,降低机器学习应用门槛,提供从数据导入、模型训练到模型部署、模型监控功能的一站式机器学习平台。为避免概念混乱,特别说明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的创业公司。

 

按照以上机器学习平台的能力要求,以下是一个通用的机器学习平台产品功能架构图,目前而言各公司机器学习平台基本具备这些功能,在少数地方有差异而已。各功能详细说明如下:

未来已来,7000字详解机器学习平台_第1张图片

1 硬件资源,一般至少具备CPU和GPU硬件资源,TPU视情况配备;

2 资源调度,目前主流趋势是基于Kubernetes做资源调度策略【7】,支持自定义调度策略配置,也有基于Yarn做资源调度策略,但是Yarn对GPU的调度存在稳定性风险;

3 计算框架,需要支持主流的计算框架,如TensorFlow、PyTorch、Caffe、CNTK、MXNet、Spark等,具体支持哪几种计算框架视具体业务或客户而定,支持的计算框架当然越多越好,但后续部署服务时需要针对每种计算框架进行封装,工作量也随之上升;

4 存储,一般需要支持HDFS、对象存储、Mysql、Kafka等存储方式,结构化、半结构化的数据往往在HDFS中存储,非结构化的数据如图片、视频、文本等往往在对象存储中进行存储;

5 机器学习全流程

  • 数据导入准备
  1. 支持多种数据源的数据导入;
  2. 可进行数据版本管理;
  3. 可对数据集进行可视化展示,大规模数据时支持数据抽样后的可视化展示;
  4. 提供数据标注系统,可选择开源的数据标注系统,也可以自建数据标注系统;
  5. 支持数据异常值处理、空值处理等数据清洗功能;
  6. 支持数据KS检验、相关系数、主成分分析、聚类分析、异常分析等数据探索功能;
  7. 支持特征工程,包括连续数据处理、离散数据处理、特征生成、特征选择、特征编码等;
  8. 支持数据共享,可在团队之间或团队成员之间进行数据共享,因此需要规范数据格式、可查看数据历史。甚至可以支持数据集市功能,在不同公司之间进行数据交易。
  • 模型构建训练
  1. Notebook建模,集成开源的Notebook,可让算法工程师在平台在线编辑代码构建模型,充分保证平台的灵活性。为保证用户体验和数据安全,最好能在Notebook上进行二次开发,以便解决数据读取、数据存储、多种计算框架以及模型存储方面的问题;
  2. 拖拉拽建模,从数据导入、数据处理、特征工程到模型构建均提供预置的算子,用户进行通过拖拉拽的方式即可构建模型,配置好相关算子的参数、自定义Loss参数等即可进入模型训练。这种方式可实现零代码模型构建,大大降低了机器学习的门槛,但对于没有机器学习基础的用户,这种方式仍然无法应用,因为用户不知道选择哪些算子、需要进行哪些数据处理等;对于算法工程师而言,价值也有限,可以用来做一些快速探索、验证性的工作,但是灵活度不够,很难真正代替代码编辑工作;
  3. 自动机器学习(AutoML),顾名思义即无需人工构建、调参,平台自动构建机器学习模型,用户只需提供数据,即可获得多个平台自动构建的模型指标,从而选择合适的模型,理论上将机器学习降低到了零门槛,因而前景广阔。但AutoML还技术不够成熟,效果还有待提升,目前NAS(Neural Architecture Search)算法使用成本较高;
  4. 模型训练,模型训练是非常核心的功能,也是难点所在。模型训练既要能支持不同规模的数据量,又要能支持各类计算框架。数据量可以分为小中规模数据量(维度-百级,行数-万级)、中大规模数据量(维度-十万级,行数-千万级)和超大规模数据量(维度-亿级,行数-十亿级),小中规模数据量适用单机训练,中大规模数据量适用Spark ML等框架,超大规模数据量往往采用参数服务器框架【3】。平台底层还需要集成TensorFlow、PyTorch、Caffe、CNTK、MXNet、Spark等框架,并屏蔽不同框架之间的差异,统一模型训练和资源分配。在训练过程中,一些重要节点的结果需要能够导出或可视化,并支持分享给其他用户。此外还需要支持多个模型同时训练功能,以便用户进行模型结构和模型参数实验对比。最后还有可能需要支持暂停训练并断点继续训练的功能,在暂停后有继续占有部分计算资源和暂停后释放计算资源两种技术方案可供选择;
  5. 镜像管理,平台支持内置镜像和用户自定义镜像,集成多种计算框架,以便用户快速搭建模型开发环境,也可以支持用户上传模型文件后配置镜像来实现模型预测部署;
  6. 模型评价,不同类的模型提供不同的评价指标,如分类模型、回归模型具备不同的评价指标体系;另外,需要提供不同模型的评价指标对比功能,以便用户择优选择模型;也要具备可视化展示模型评价指标和测试集预测结果功能;
  7. 训练可视化,模型训练时提供可视化展示,如训练时的参数变化、训练曲线、以及神经网络的图形化展示等,以便辅助用户调整模型结构、参数设置等,实现高效的模型调优;
  8. 模型共享,平台需要支持模型在团队之间和团队成员之间进行共享的功能,因此模型要有很清晰的数据说明、结构说明、效果说明等,其他用户调用时可以便捷使用,无需再自己费劲研究或要请教模型发布人员;
  • 模型部署监控
  1. 本地部署,将模型和MLDL(Machine Learning Definition Language)文件推送到业务方服务节点上,业务方通过本地接口的方式调用模型计算,比较适合单节点集中存放的小模型;
  2. 远程部署,将模型和MLDL(Machine Learning Definition Language)文件部署到在线计算集群中,业务方通过API(gRPC或Restful)调用在线计算服务进行计算【5】;
  3. 模型管理,提供模型版本、模型目录、模型数据配置、模型预警告警配置、模型上线、模型下线等模型管理功能,实现模型集中、精细化管理;
  4. 模型监控,模型监控包括模型服务异常监控、模型预测结果异常监控、模型占用计算资源监控、模型数据流异常监控等,保证整个平台模型的平稳运行,特别是很多业务是实时预测,数据流是实时的,经常会出现各类问题,需要监控每一步的数据流情况,以便模型预测出现问题时可以快速定位、解决问题;
  5. 模型更新,可分为手动更新和自动更新,即允许用户手动触发模型更新,以及达到预先设置的条件后进行模型的自动更新。在更新时有全量更新和增量更新方式。对于一些模型,可能需要达到分钟级的模型更新,也有些超大模型的更新,这会有一定的技术难度;
  6. ABtest,ABtest经谷歌提出后已经在业内广泛应用,一个新模型在上线时往往需要通过ABtest才可以,这样可以保证模型的上线效果,保持线上业务的平稳运行;
  7. 预测结果分析平台,能够汇总平台所有模型预测结果,可视化展示模型预测结果详细数据、预测指标统计结果、模型更新日志等,方便用户全盘、及时掌握平台模型预测情况,及时了解业务运行情况、排解业务异常、掌握业务运行趋势。

    6 应用场景

简单来说,能够应用到机器学习技术的场景均可作为机器学习平台的应用场景。目前主要的应用场景有智能推荐、智能语音、机器视觉、NLP、时序预测等,不同的应用场景需要的数据形式、数据规模、计算能力、预测时效等要求会有差异,导致机器学习平台的技术架构、性能要求不一致,因此在建设机器学习平台时需要根据目标用户的应用场景进行选择。

 

建设一个兼容性强、运行稳定、性能优异的机器学习平台并非易事,将会遇到许多困难和挑战,需要做大量的工程处理和具备较强的技术能力,主要问题和挑战如下:

  • 数据多样,按数据形式有表格型数据、文本、语音、图片、视频,按数据规模有中小规模、大规模、超大规模,按数据来源有文件上传、离线数据库、实时数据库,这些差异对数据存储、数据读写、数据处理、数据可视化、数据计算等造成困难;
  • 框架、版本多样,不同框架对模型的定义、数据要求及各项特性相差很多,兼容多种框架会导致平台工作量上升,但作为平台而言,又需要兼容尽可能多的框架;
  • GPU调度管理,目前对GPU的调度和管理技术还未达到对CPU的调度和管理的成熟度,GPU虚拟化还不是很成熟;即便是同一厂商,比如Nvidia,对于不同型号的显卡,同一模型也不一定能正常运行【8】;
  • 分布式训练,随着数据规模、模型规模越来越大,平台需要具备能够加速分布式训练的能力,能够支持数据并行、参数服务器、RDMA优化、流式优化技术等,这些都具备一定技术难度和门槛;
  • 模型部署,模型可以以PMML(Predictive Model Markup Language)的形式解决跨平台预测的问题,但是PMML文件形式会导致模型性能的损失。另外,模型预测时很多场景下对预测速度要求很高,需要平台能够支持模型推理加速功能,由于模型的框架可能不同,要得到一个支持多框架的统一高速推理引擎需要较强技术能力,具备技术门槛;
  • AutoML,目前各大互联网公司均在发展AutoML技术并已集成到各自的机器学习平台上,但AutoML技术成熟度仍不够,需要的算力资源也较大,还需时日待其成熟完善;

 

无论是对公司内部服务的机器学习平台,还是面向市场对外服务的机器学习平台,平台功能清单相差不多,对公司内部服务的机器学习平台限于场景和预算,平台性能和场景相比而言会逊色一些。另一方面,虽然平台功能列表基本上没太大区别,但是侧重点还是不一样的。

类型

对公司内部服务机器学习平台

面向市场对外服务机器学习平台

代表

汽车之家、美团、爱奇艺、VIVO

BAT、华为、第四范式、美林数据

目标客户

本公司

需要通过机器学习赋能业务的公司

目标用户

本公司算法团队,技术能力一流

业务工程师、算法工程师,无机器学习背景到机器学习能力一流都有可能

核心目标

解决资源统一高效利用

减轻算法工程师工程方面事务

提升算法迭代上线效率

规范算法团队协作管理

满足公司业务应用机器学习

利用机器学习实现业务降本增效

降低机器学习应用门槛

降低机器学习应用人力成本、硬件成本

覆盖尽可能多的应用场景

实现公司间数据、模型协作共享

应用难度

容易,平台发起人往往就是算法团队负责人,保证平台一定的灵活性,在保证平台可用、稳定的情况下,迁移难度不大

困难,往往需要算法工程师等驻厂以项目的形式开展,先进行POC,达到目标后进行平台的真正采购部署,后续还可能需要支持培训、维护等工作,中间还有漫长的商务流程。

面向市场对外服务的机器学习平台可以分为两类,一类是BAT、华为等大型公司提供机器学习平台作为其云上面的一个产品,根据计算资源、存储资源、时长等计费;一类是第四范式、美林数据、九章云极、袋鼠云等中小型公司以机器学习平台作为公司核心产品,以项目咨询服务、软件部署等方式计费。从IDC的公开资料来看,2019年第四范式、美林数据、九章云极占据中国机器学习平台市场份额前三甲,这是应该是这三家公司投入更多项目咨询资源、销售资源相关,即当前阶段客户更加注重能否以项目的形式将机器学习在公司业务中真正落地。

未来已来,7000字详解机器学习平台_第2张图片

对于传统企业而言,不能仅向企业推销机器学习平台,AI咨询服务、AI项目建设、平台使用培训、平台运营是机器学习平台在企业真正用起来的必备条件,采购机器学习平台可能只是其数字化转型项目或智能化转型项目的一部分,从官网上看,第四范式应该是最注重这些配套服务的,因此第四范式能在市场份额中独占鳌头也是情理之中。可以看出这种以项目形式推进客户购买机器学习平台的方式,往往成本居高不下,包括销售商务成本、算法工程师人力成本、产品经理项目经理等其他人力成本、差旅成本等等,甚至导致很多项目实际上亏损严重,像第四范式也经常被吐槽为外包服务公司。

那么未来机器学习平台的发展可能的方向是什么呢?我个人理解应该是从以下两个方面进行优化:一是继续提升机器学习平台性能,如更灵活更有弹性的资源调度、更快的分布式训练、超参数自动调参、更快的推理引擎、更高效透明的AutoML,这些性能优化能提升算法工程师工作效率、降低企业硬件成本,也是机器学习平台的技术门槛,是头部机器学习平台的必争之地;二是继续降低应用机器学习平台门槛,从平台功能上来说:除现在拖拉拽可视化建模外,还需要积累更多场景的算法模型,实现开箱即用,即用户只要提供符合格式的数据,选择平台预置的模型流程,即可训练得到新模型;积累更多场景的预训练模型,用户只需要提供少量数据,即可通过“预训练模型+小样本微调”的模式快速得到新模型;更清晰易懂的引导或咨询,帮助用户选择适合当前场景当前数据的算子或模型;提供隐私计算等功能,让用户对数据(或样本数据)接入平台的安全放心,算法工程师可以远程处理数据构建模型,而不是每次都需要驻场才能接触到数据,以减少项目实施的驻场次数和时间,缩减项目实施的成本;继续提升AutoML性能,真正让用户可以用较短的时间获得效果满意的模型;从配套服务来说,为客户提供整体的智能化转型咨询,提供落地机器学习的项目实施,提供面向业务工程师的机器学习和平台使用的线上及线下培训课程,提供平台后续使用运营服务等,这些配套服务是机器学习平台在企业落地的关键支撑,而一个落地的同类场景对吸引新客户而言胜过千页PPT,因此需要格外重视,但现阶段这些配套服务可能是亏损的,需要企业量力而行,即在能力范围内,在产品研发和项目实施平衡的条件下,尽可能提供这些服务。

 

另外未来还可以扩大活跃平台网络,构建拓展平台生态系统,让平台上的不同客户可以方便安全交易数据、模型,包括引入培训个体或团体算法供应商、不同客户数据\模型交流渠道、客户需求线上发单、单个模型购买调用等,这部分阿里PAI在产品架构中有明确规划,但是考虑到ToB的差异性、复杂性、安全性等,实现起来尤其是真正活跃起来并不容易,或者说现阶段这部分还处在探索、尝试阶段,离真正发挥网络效应、生态效应距离还很远。

最后,感谢各位前辈关于机器学习平台方面的资料分享,受益良多,这也是我写这篇文章的动力之一,希望读者能有所获益;也感谢大家的阅读,若文中存在理解有误的地方,还望指正。另外欢迎对机器学习平台建设有兴趣的朋友一起交流学习,共同进步。

 

参考资料:

  1. 汽车之家机器学习平台的架构与实践,CSDN,https://blog.csdn.net/hellozhxy/article/details/107210015
  2. 微博推荐算法实践与机器学习平台演进,CSDN,https://blog.csdn.net/m0_37586850/article/details/116465255
  3. 爱奇艺机器学习平台的建设实践,爱奇艺技术产品团队,https://mp.weixin.qq.com/s/Np4w7RC2JFlB7ZGIduu71w
  4. 一站式机器学习平台在vivo AI的实践,InfoQ,https://www.infoq.cn/article/THlkStomYLRgXL2hzm8w
  5. 一站式机器学习平台建设实践,美团技术团队https://mp.weixin.qq.com/s/ZDRD0vAxkSqe4UeXi9avKQ
  6. 再见,Yarn! 滴滴机器学习平台架构演进,AI前线,https://mp.weixin.qq.com/s/iTfHv8EFx4O4G1sNxsuMkg
  7. 机器学习平台建设指南,51CTO,https://blog.51cto.com/u_15127595/2728751
  8. 为什么我们需要机器学习平台?,ThoughtWorkshttps://zhuanlan.zhihu.com/p/270170289

你可能感兴趣的:(机器学习,开发平台,数据挖掘,产品设计)