前言:本文是团员Zain的第3篇输出,也欢迎有更多团员来分享你的实战干货:)
AI模型训练平台,基于核心模块和应用场景不同,又可以称作深度学习平台、机器学习平台、人工智能平台(以下统称做AI平台)。AI平台提供业务到产品、数据到模型、端到端,线上化的人工智能应用解决方案。用户能在AI平台能够使用不同的深度学习框架进行大规模的训练,对数据集和模型进行管理和迭代,同时通过API和本地部署等方式接入到具体业务场景中使用。简单的理解,即AI平台=AI SAAS+(PAAS)+(IAAS)。
以下是腾讯DI-X和阿里PAI平台的介绍:
DI-X(Data Intelligence X)是基于腾讯云强大计算能力的一站式深度学习平台。它通过可视化的拖拽布局,组合各种数据源、组件、算法、模型和评估模块,让算法工程师和数据科学家在其之上,方便地进行模型训练、评估及预测。
阿里云机器学习平台PAI(Platform of Artificial Intelligence),为传统机器学习和深度学习提供了从数据处理、模型训练、服务部署到预测的一站式服务。
使用AI平台,能够简化开发人员对数据预处理和管理、模型训练和部署等繁琐的代码操作,加快算法开发效率,提高产品的迭代周期。并且通过AI平台能整合计算资源、数据资源、模型资源,使用者能对不同资源进行复用和调度。开放AI平台后,也能有效的进行商业化,对企业所处领域的AI业务生态环境有一定的推动和反馈。
国内外相关的AI平台有:
基于一个企业整体系统的架构来看,AI平台可视为业务的技术支撑中台之一 (平行于数据中台),起到承上启下(承载业务,对接技术底层)的作用。若一个企业当前已有数据中台,则可将数据中台作为AI中台的数据输入和数据输出系统对象,AI中台作为业务前台的模型和算法供给平台。若业务前台有AI需求(如图像识别、语义识别、商品推荐等),算法运营团队则通过在AI平台对模型的训练迭代以支持。
根据企业不同的规模、资源和业务场景,其AI平台会有不一样的定位。例如AI和数据可同为一个中台、AI平台可视为业务中台一部分、AI平台整合进技术中台或后台等等。规模较小、资源有限的企业通常会选择使用第三方AI平台对业务进行服务而非自建(AI平台)。
#企业架构示例:AI平台作为AI中台
关于AI平台自身的架构设计,各第三方平台都大同小异,主要是技术架构上的不同,暂时没有必要去深入研究。这里以京东NeuFoundry神铸项目系统架构为例可初探一二:
#NeuFoundry平台架构图
NeuFoundry基础设施层采用Docker容器进行算力资源的池化,通过Kubernetes进行整体的资源管理、资源分配、任务运行、状态监控等,平台集成了MySQL、Redis、MQ等多种中间件服务,通过数据标注、模型训练、模型发布,生成自定义的AI能力,为各行各业的业务服务提供有力的支撑。
1、大数据处理问题:在当前阶段,AI底层技术原理决定了“有多少数据,模型能力就有多好”的情况。同时企业在日常业务运行中会不断的产生新数据,当数据需求和客观数据量都很大,大数据的管理和处理能力对于一个AI平台来说是最基础能力,开发人员需要结合AI模型训练任务的制定合理的数据调度方案,同时对数据进行生命周期的管理(如定期的删除冗余数据、不规则数据)。
2、分布式计算:大数据的处理、模型的训练都十分的消耗资源。如果业务场景复杂,模型训练时间长或者样本规模大,超过单台服务器能力时,需要支持分布式训练。微博深度学习训练集群的解决方式是:
以TensorFlow分布式运行方式为例进行说明,如图5所示。一个TensorFlow分布式程序对应一个抽象的集群,集群(cluster)由工作节点(worker)和参数服务器(parameter server)组成。工作节点(worker)承担矩阵乘、向量加等具体计算任务,计算出相应参数(weight和bias),并把参数汇总到参数服务器;参数服务器(parameter server)把从众多工作节点收集参数汇总并计算,并传递给相应工作节点,由工作节点进行下一轮计算,如此循环往复。
3、AI平台实现的最大瓶颈,其实在于企业对AI平台投产比的权衡(顶层、中层、执行层对AI平台的价值认知),这一点会在下文重点说明 。
AI平台不仅需要提供AI开发流程所需基础技能,还需针对不同的用户(产品经理、运营人员、算法工程师…)、不同的客户(大企业、中小企业、传统企业、科技企业…)提供对应所需服务。我将AI平台能力分为以下五类:
#华为ModelArts平台技能
在日常经营的过程中,每个新的商品都需要进行数据采集、标注,随后将数据扔进对应模型文件进行训练。其中涉及到非常多重复且繁琐的工作问题。将数据采集处理到模型训练部署的流程平台化,能够极大的提升开发效率,让运营人员和算法人员更好的分别针对场景和模型进行管理。
并且数据、模型(可线上使用)对于企业来说是最核心的技术资源,不过初期一直处在黑匣子状态,只有算法人员可接触和查看,所以在业务发展到达一定的阶段时,就需要开始对其进行有效管理。
本文的AI平台,主要服务零售行业商品模型训练的业务场景,故称作AI商品模型训练平台。
综合资源、场景、服务效率、商业化等多个维度去考量,作者设计的商品模型训练平台主要以数据中心和模型中心两大核心子系统组成,一方面可以以最小的开发资源实现涵盖了当前业务所需要的核心流程和个性化流程,另一方面也有利于平台后续的能力拓展和进行商业化。
#AI商品模型训练平台
数据中心主要服务3点数据管理业务需求:数据获取、数据处理、数据评估。其中涉及能力有数据集获取、数据集管理、数据增强、增强策略配置、数据标注、标注任务系统、半自动标注等。
模型中心主要服务3点模型管理业务需求:模型训练和验证、模型管理、模型部署。其中涉及能力有模型训练、参数配置、训练任务管理、训练状态可视化、模型文件管理、模型版本管理、模型状态管理、模型操作、模型处理、模型处理策略管理、模型部署、部署业务管理等。
接下来会针对核心的业务需求逐一说明解决方案。
AI模型训练的第一步是对数据的获取(此处的数据都为图片数据)。数据的采集可以通过线下构建对应业务场景需要的环境进行拍摄采集,也可以通过平台内已有数据(线上数据、旧数据)、第三方数据(通过开源、付费购买、爬虫爬取多多种形式)获取。
线上数据集的处理:多采用badcase,重新标注、增强。
爬取数据集:爬取公开渠道如百度图片的对应label数据集,并区分可用不可用。
因数据集都为图片数据,并且模型是基于深度学习技术构建,故涉及到数据ETL、特征工程等一些处理暂时不需要,后续可根据业务场景和应用技术的拓展,在技术架构和平台架构补充上对应的能力。
数据集获取完成后,可以将数据按照不同的类型存放,通过数据集管理页面进管理。数据类型可以按照不同的维度区分,例如:
1、以标品和非标品区分。
标品数据:标品静态状态数据、标品动态状态数据
非标品数据:标品多角度数据、标品静态状数据、标品动态状态数据、其他异常情况数据
2、以数据来源渠道区分。
线下:构建不同的场景(静态动态)进行拍摄采集
线上:平台内已有数据(线上数据、旧数据)、第三方数据(开源数据集、付费数据集、爬取数据集)
3、以数据格式区分。图片、视频、其他格式(2d、3d)。
4、以数据使用性区分。基本数据集、训练数据集(含标注)、验证数据集、异常数据集、自定义数据集。
数据集应当有生命周期的管理和备注信息,以免在运营一段时间后数据量杂乱冗余。
部分场景的模型训练前,需要对数据进行不同程度、不同方案的增强。运营人员或算法人员可以在数据增强的页面上,选择对应的数据集和数据增强策略,对数据进行增强,增强后的数据集将会同步以原数据的子文件形式,在数据集管理中以“增强数据集”类型展示。
同时,为适应多种业务场景和加快数据增强实验的有效性,可利用已实现的数据增强技术,配置出多重数据增强方案。如:
在数据集资源管理整合完成后,则可以在平台上对数据进行标注。运营人员可以对平台上已有数据集进行标注,也可以导入新的数据集文件进行标注。通常标注工作有:
1、对基本数据集(没有标注过的)进行标注或者半标注。
半自动标注:利用少量数据集生成的模型进行自动标注,减少人工标注的工作量。
2、对异常数据集进行重新标准。
3、对自定义数据集进行标注。
标注方式支持图像分类标注、方形框标注、圆形框标注、多边形标注、语义分割标注、3d标注。标注内容有标品和非标品,也有其他需要标注的内容信息如手、人脸。
数据评估工作贯穿数据获取到数据处理整个过程,其操作质量和流程严密程度直接决定了数据质量的好坏,间接决定了模型表现效果的好坏。
在获取数据以及对数据进行增强时,运营人员根据通用规则和经验进行数据评估是否可用,不确定的情况下需询问算法。但一般界定不确定的数据规则根据商品、当前模型、当前需求、算法认知和经验等多个因素确定,不确定性比较大,现实中还是多以“个人经验”为准则,这一部分随着相关员工经验和认知的增长,一定存在比较大的优化空间。
日常需要对已有的数据集进行定期检查、定量检查,对数据质量和标注质量有一定的回归验证。同样的,标注任务流程化(包括标注任务指派、标注任务完成的多重审核、标注人员的任务完成度和错误数据统计以及对应的奖惩机制)也是数据质量保证的重要环节。
确保数据提供到位后,运营人员或者算法人员可以在模型训练的页面上,选择模型,选择对应的数据集和对应的训练参数(如AI算法以及网络深度、训练step)即可开始进行增量或全量的模型训练。
如果涉及到GPU服务器运算量等考量,还可选择对应训练GPU服务器。训练过程中训练状态的可视化的展示可帮助运营人员对当前训练任务的进度有所了解,以便对损失度停止下降或者其他异常等不符合预期的模型训练任务进行暂停、取消等操作,解放算法人员的生产力。
#TensorBoard界面
模型训练完成后,可以对训练集的数据进行,得出模型MAP、精确率、召回率等指标,评估模型效果和质量。也可以选取未标注的验证数据集用模型进行识别,对模型的质量进行验证。
初始的模型资源可通过外部文件导入或者直接新增训练任务生成。通常来说,模型大部分时间处于“使用”的状态(线上的使用和更新的使用),故模型的管理主要针对模型的版本、模型的各种状态(服务状态、训练状态)、模型的操作记录、模型的详细参数等四个方面进行。
在模型有优化更新、替代、异常等情况下,通过“模型管理“:可以对模型进行操作,如暂停服务,复制模型、上线模型、删除模型等操作。
有一些模型可能需要在比较特殊的业务场景下运行(例如边缘端、硬件资源有限、网络延迟较高)进行,所以针对该种情况,也需要设计对模型进行压缩、调优等傻瓜式一键式处理方案,目的也是减少开发在繁琐工程上的工作量。
在完成模型的训练生成模型,并且对模型进行一定验证后,可在”模型部署”对模型进行部署上线,部署流程通常为灰度部署过渡到全量部署。
在边缘端应用场景下,也可以通过边缘端定期请求拉取最新模型文件或者通过边缘节点实现边缘端部署。
上文提到,AI平台实现的最大瓶颈,其实在于企业对平台投产比的权衡。作者团队内部经过多次沟通考量,集中回答了以下三个问题,最终才决定对平台进行1.0的初步开发(主要也是先验证效用为主)。
1、AI平台是否真的能支持业务,整体效率(开发效率、业务效率)能有多大提升?是否有潜在的实现后的未知成本(如算法人员需要花费大量时间教育运营人员使用某些模型训练功能)?能否使用数字对价值进行量化?就算能量化,是否又额外需要开发和沟通成本?
2、现有的第三方AI平台已支持大部分业务,是否能先使用第三方AI平台进行业务链条的孵化?个性化的数据处理和训练业务是否可依旧可通过开发手动处理?
3、AI平台的商业化价值在短期内能否体现(因为其他企业因数据安全问题不会安心使用,同时也极度依赖企业的知名度)?若短期无法体现,在什么阶段可以体现?
关于价值权衡考量的问题没有标准化答案,每个企业都以自身的资源、业务等多个因素综合去考量,相关决策者和执行者对AI平台也有不一样的认知,故主要是看不同企业各自最终讨论出的最优投产比是否能大于投入成本后决定是否开发AI平台。
不管是针对任何业务场景,AI平台的初衷永远是提高开发效率,加快算法迭代周期,通过产品化AI技术,让运营人员能够更贴近技术,更好的指导赋能业务场景,给客户带来更好的技术体验和产品体验。
不仅如此,企业从内部服务起完善AI平台,逐渐开放平台并对平台进行商业化,服务原来没有足够资源和资金撬动AI技术的外部客户,为互联网AI生态的发展也起到了推动的作用。
AI平台的发展和使用也是AI技术应用层面发展的重要节点,代表了AI技术开始产品化,更加落地,更加贴近业务层,也代表了企业有了更高效率的运用AI技术的方式。
附:团员Zain的历史文章汇总
1、《一文了解“智能货柜”(“新零售+AI”方向)_20190722》
2、《CV领域“识别错误”场景介绍及解决方案(以智能货柜为例)20190912》
-END-
以上内容,来自饭团“AI产品经理大本营”,点击这里可关注:http://fantuan.guokr.net/groups/219/ (如果遇到支付问题,请先关注饭团的官方微信服务号“fantuan-app”)
---------------------
作者:黄钊hanniman,图灵机器人-人才战略官,前腾讯产品经理,7年AI经验,10年互联网背景,微信公众号/知乎/在行ID“hanniman”,饭团“AI产品经理大本营”,分享人工智能相关原创干货,200页PPT《人工智能产品经理的新起点》被业内广泛好评,下载量1万+。