购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 深入理解机器学习项目全流程

为了进一步熟悉机器学习项目,我们有必要深入机器学习项目全流程的各个环节,了解各环节的目标、涉及的角色及其工作内容,进而了解机器学习项目的挑战及MLOps需要解决的问题。

如图3-7所示,机器学习项目生命周期分为两个大的阶段:一个是方案调研阶段,即以数据科学家为核心的调研阶段,在这一阶段,数据科学家需要结合业务实际情况进行必要的业务分析,制定项目优化目标,并通过反复试验寻找合适的解决方案并固化;另一个是方案投产阶段,即以工程师为中心,将调研方案转换为生产可用方案后完成投产,并持续监控各项指标是否符合预期。

图3-7 机器学习项目生命周期

3.2.1 方案调研

在方案调研阶段,以数据科学家为核心,与业务专家、工程师一起定义项目目标,将业务问题转化为机器学习问题,并通过不断探索试验,形成可投产的原型方案。

1.业务分析与目标定义

通常来讲,一个机器学习项目解决一个实际业务问题,这里通常认为某些工作是可以通过机器学习来优化改进的。而业务问题被提出来,数据科学家就需要评估它是否可以利用机器学习来解决。

此环节的工作如下。

首先,业务专家和数据科学家等角色结合实际业务进行分析,辨别机器学习是否可以被应用在该场景中,明确该业务问题是不是一个机器学习问题以及优化目标是什么。

其次,业务专家和数据科学家等角色进一步结合业务和系统现状进行分析,利用机器学习解决问题,明确需要什么数据,这些数据应该以什么方式获取并标记。比如将一个App首页内容推荐规则转化为一个机器学习二分类问题,优化目标是提高点击率,用户看到App推荐的条目是曝光数据(也就是总样本),用户点击的条目是负样本。

再次,业务专家和数据科学家等角色需要考虑机器学习模型如何集成到现有的业务系统中。通常,模型预估结果并不能直接使用,需要一定的转换、加工变成业务系统可以理解并消费的形式。

最后,业务专家和数据科学家等角色评估最终模型效果是否达到预期,分析业务稳定性。

2.数据处理

对于一个机器学习项目,数据准备与处理是所有工作的开始。在这一环节中,AI科学家通常需要不断迭代探索,从而获取真正有效的数据集。虽然这一过程并不是机器学习的核心环节,但它最耗时、耗力,并且直接影响接下来的模型开发和优化。如何加速数据处理,避免数据问题给下一阶段带来问题,是这一阶段要解决的痛点问题。在这一阶段,我们根据工作流程可以细分为以下几个环节。

(1)数据收集

在调研阶段,AI科学家通常可以获得一些便利,不需要直接从线上业务系统收集数据,一般从现有的大数据系统获取历史数据。但是,他们仍有一些数据收集工作需要处理。比如,用来分析的数据可能是分布在不同的存储系统中以及数据格式不同,这样AI科学家就不得不对数据进行解析、转存。另外,对于一些数据积累不够的场景,AI科学家还不得不通过一些手段生成数据,以满足样本数据需求。

(2)数据探索与验证

在该环节中,AI科学家在不改动数据本身的前提下分析数据,并通过可视化的方式呈现数据中隐含的规律。这些规律对于后续特征工程等环节是很重要的。在该环节中,AI科学家主要关注数据质量、数据特征。

● 数据质量:简单来说就是收集到的数据好不好,能不能满足后续使用需求,比如数据缺失值、重复值、异常值、歧义值、正负样本比例(样本不平衡)等都会直接影响模型的学习效果。如果数据质量不佳,我们往往还需要重新收集数据,再进行分析。

● 数据特征:内在的数据规律可以说是数据的元信息。在该环节中,AI科学家会对单个变量特征进行统计分析,比如单个变量的均值、中位数、众数、分位数、方差等;也会对两个或多个变量特征进行统计分析,这里主要探索任意两个变量特征统计分布之间的关系,例如相关系数等;还会对某个字段或某些字段分布进行统计分析,如某数据是数值还是非数值,是连续的还是离散的,是否具备时序性,有无空间意义等。

为了进一步直观地呈现数据的内在规律,AI科学家往往会通过一些图表将其可视化。常见图表有直方图、箱线图、柱形图、茎叶图、折线图、条形图等。

(3)数据清洗和转换

在这一环节,基于数据探索与验证得到的数据信息,以及满足模型训练和预估需求的样本要求,AI科学家需要对数据进行清洗和转换处理,处理掉之前发现的可能存在质量问题的数据。另外,通常情况下,实际数据可能并没有标签这样的数据列,AI科学家就需要结合业务标记数据,形成原始样本,供后续环节使用。

可以看出,数据处理需要在数据管理、数据版本化、大数据任务编排和管理方面有工具的支撑,而这就是MLOps擅长的。

3.特征工程

特征工程同样是围绕数据展开的,只不过特征工程是基于数据处理后的原始样本展开的,为建模服务。特征工程做得好不好对模型效果有很大的影响,甚至有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

简而言之,特征工程就是一个把原始样本转变成特征的过程。这些特征可以很好地描述数据。从数学角度来看,特征工程就是人工地设计输入变量 X

特征工程一般包含特征预处理、特征生成、特征选择等几个环节。

(1)特征预处理

通常,经过处理的数据并不都能直接作为特征,AI科学家需要对数据进行加工,包括特征过滤(反常值平滑化)、特征无量纲化(标准化、归一化)、特征分箱、特征二值化、特征离散化、特征编码等操作。

(2)特征生成

在绝大多数场景下,简单依靠原始样本构成的特征来训练模型是不够的,AI科学家往往会结合对业务及数据的理解生成一些衍生特征来提升模型效果。生成方式大概分为两类:单特征变换、多特征组合。单特征变换常见的手段包括对特征进行编码、数学转换等。多特征组合是通过组合的方式将多个特征合并为一个特征,如两个特征分别是经度、纬度,合并起来就是坐标,而坐标较原来独立的两个特征更有价值。另外,特征组合可以是多阶的,组合形式也可以有很多,如两值相加、相减等。

(3)特征选择

所谓特征选择,就是找出对当前学习任务有用的属性(即相关特征),过滤掉没什么用的属性(即无关特征)。特征并不是越多越好,特征太多不仅会降低可解释性,还可能导致模型泛化能力变差,产生过拟合现象。另外,在工程层面,考虑到训练时间和资源等诸多限制,我们往往需要对特征进行筛选。其中,通过特征重要性来筛选特征是一个很重要的手段。

4.模型开发与优化

一旦样本构造完成,接下来我们进入模型开发与优化阶段。这一阶段的主要工作是基于样本选择合适的训练算法,并结合验证评估结果,不断优化模型的超参数,选择出最佳策略。这一阶段包含模型试验、模型评估、模型方案固化几个环节。

(1)模型试验

在调研阶段,模型方案本身并不明确。AI科学家需要结合问题类型、数据特征情况,选择合适的算法来训练模型,并且基于验证结果进行模型调优,最终获得合适的模型方案。在此环节,AI科学家通常使用一些建模工具,比如编程式建模工具、低代码建模工具和无代码自动建模工具等辅助建模。它们各有特点,有不同的应用场景,有效地集成它们,形成一个简洁、高效的工作平台,将给机器学习项目建设带来便利。

(2)模型评估

模型试验后,我们通常可以获得若干候选模型。在模型评估环节,AI科学家需要对这些模型进行评估,比较哪一种模型更能达成业务目标和效果指标。AI科学家会利用预先拆分的测试集验证模型效果,并结合业务目标判断是否能够满足业务需求。这一过程通常会和模型试验迭代进行,通过不断测试反馈,调整和完善方案,最终获得符合生产需要的方案。

(3)模型方案固化

模型方案最终是要投产的。通常,AI科学家需要将自己最终选择的模型方案按照与AI工程师约定的形式提供出来。一般来说,产出物包含数据处理、特征工程脚本,模型训练方案或者模型本身及相关的说明文档等。AI工程师需要基于模型方案构造管道,配置和管理相关服务,以便在生产环境中与上下游业务系统对接,并保证最终效果。

可以想象的是,这一过程存在很强的偶然性,需要结合经验进行大量的探索、构造、调参,这也使得模型优化变成一个门槛很高又耗费时间和精力的工作。如何提升AI科学家的工作效率,提高方案调研效率,成为MLOps领域关注的重点之一。当前,比较热门的自动机器学习技术的研究重点便聚焦于此。

3.2.2 方案投产

进入这一阶段,AI科学家已经确定了未来投产的模型方案,但一般来讲,这些方案并不能直接投产使用,因为一些重要的业务问题仍需要解决,比如:

● 如何正确、可靠地接入上游海量数据,并通过数据转换周期性地稳定训练并产出模型?

● 如何在保证性能和正确性的前提下将模型部署到生产环境,并稳定接入大规模流量?

● 如何及时观察模型的线上性能和效果表现,并及时收集反馈数据,形成数据闭环,不断迭代?

在方案投产阶段,以AI工程师为核心,AI科学家、运维、业务专家一起协作,保证方案成功落地。这一阶段大致可以分为3个环节:模型训练、模型应用、监控与数据回流。

1.模型训练

在模型训练环节,AI工程师拿到的一般是AI科学家在调研阶段获取的特征和模型方案。但实际业务中,AI工程师需要分析原始数据及目标数据的特点、原始数据到目标数据的处理逻辑并制订开发计划,还需要制订模型训练计划,确保稳定地产出模型。在技术层面,AI工程师需要重点关注以下两方面。

(1)管道

由于模型训练整体涉及的链条很长,通常为了提高开发效率和灵活度,AI工程师需要借助管道打通从数据接入、处理,到特征工程、模型训练,再到评估的全过程。如何更好地编排和管理底层的框架工具,为AI工程师提供友好的开发体验,是业界需要解决的关键问题。很多开源工具聚焦于改进开发体验。常见的开源工具有Airflow、Azkaban等。

(2)存储

选择合适的存储工具对于工程师来讲也很重要。由于机器学习项目涉及的数据类型很多,包含数据表、特征、样本、模型、脚本等,它们不仅容量大,通常还有版本区别,有很强的血缘关联性,怎样更好地管理这些元数据及业务数据至关重要。选择的存储不合理将带来不小的麻烦,甚至带来难以排查效果和性能问题的困难。MetaServer、FeatureDB等产品可用来解决存储问题。

2.模型应用

在模型应用环节,AI工程师聚焦于如何将模型变成服务,并将服务与业务系统对接,然后逐步接入真实流量、稳定服务。为了达成这一目标,AI工程师一般需要做以下工作。

(1)部署改造

在这一环节,AI工程师需要从模型仓库中根据一定策略(比如效果最优,或是某种自定义的业务规则等)拉取模型,将其部署成模型服务。这里需要结合模型大小预估匹配流量,选择合适的部署模式和资源规模,通常会结合性能测试来判定服务是否满足需求。另外,由于模型服务需要对接真实上游业务,此环节存在类似数据流对接的问题。这里涉及两个层面的工作:在线特征工程、接口及规则逻辑定制。

对于在线特征工程来讲,考虑到模型训练中批量特征处理、在线请求处理特点和数据存储的差异,AI工程师无法套用批量处理特征的脚本,需要结合特征离线处理逻辑改写能够实时构造特征的逻辑代码。通常,对于AI工程师来讲,这一环节准入门槛很高,一方面要理解AI科学家提取特征的思路和逻辑,另一方面要考虑性能等工程层面的要求,这也导致耗时很长,且常常因为编程不当而出现上线效果不如预期且难以排查原因的情况。业内将其称为“线上线下一致性”问题。

对于接口及规则逻辑定制来讲,它具有很强的业务性。对于一个模型服务,它的输入和输出都是固定的,但如何映射到业务概念上,比如二分类模型输出是一个得分,如何根据得分设置阈值,形成对应的具有业务判断意义的返回结果,这就需要AI工程师进行处理。另外,在实际业务中,模型和规则常常一起出现。数据经过模型后可能还需要若干规则流处理。如何灵活地处理业务逻辑,也是这个环节需要考虑的问题,比如在线管道化就是一个很好的思路。

另外,考虑到部署环境要求以及持续交付要求,AI工程师需要将模型服务容器化,从而使得生产环境获得敏捷弹性部署和运维能力。

(2)切流发布

所谓切流,就是将线上流量切换到模型服务。这一过程发生在最初投产阶段,也可以发生在新老模型切换阶段。对于一个生产服务来讲,切流是一件很重要的事情,需要有相关的运维部署策略保障(常见的部署策略有蓝绿发布、金丝雀发布等),以保证流量能够安全进入,不至于因为流量或者版本问题而使发布失败,继而引发生产故障。对于机器学习项目,效果问题尤为突出。虽然新的模型能够正常对外提供服务,但是如果效果很差,发布也是失败的。为了避免这一问题发生,在服务发布时通常还引入A/B测试。在A/B测试中,业务专家、AI科学家等角色先引入一部分流量,对比新老模型的实际生产表现,继而选择全量发布还是下线继续改进。近年来,A/B测试不仅是在新功能发布时使用,还逐渐被引入日常运营工作。通过实验的方法快速寻找最佳运营策略,成了数字化运营强有力的武器。

3.监控与数据回流

在模型顺利部署并且投产后,工作并没有结束,还需要日常运维、监控服务的稳定性和性能。对于机器学习项目来讲,AI工程师需要密切关注业务状况及模型效果。这是因为机器学习的效果与数据高度相关,随着时间的流逝,数据的变化、业务的变化等会导致模型效果衰退。为了应对这种衰退,AI工程师就需要定期更新模型方案。为了实现不断迭代的闭环,数据回流是关键一步。AI工程师负责收集实际的反馈数据,比如在推荐领域,收集用户基于推荐列表是否发生点击的数据,通过新数据的不断上传,迭代生成新的模型,这样就能保证模型的敏感度。这里需要补充说明的是,当业务和数据发生巨大变化时,通过原有方案训练的模型不一定能够真的起作用,AI工程师需要重新进行方案调研,产出新的模型方案。

从完整过程可以看出,方案调研和方案投产在一定程度上还是比较割裂的。如何让系统自动根据实际情况产出或调整模型方案呢?一些机器学习研究者正在研究将方案调研、投产全过程融合成一个完整的机器学习闭环,这就是自动机器学习平台的研究重点。 f5y9JmL63YJ/ls6Qv0C9M3Adk5dfyZrNCYRRnEL0bF5Y83d+jj94e4QEFW7JQzyg

点击中间区域
呼出菜单
上一章
目录
下一章
×