机器学习生命周期阶段的最佳实践
数据收集
数据整合与准备
特征工程
模型训练
模型验证
人工智能/机器学习合规性的其他注意事项
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
构建机器学习模型是一个迭代过程。为了成功部署,大多数步骤都需要重复多次才能达到最佳效果。模型部署后必须进行维护,并适应不断变化的环境。接下来,我们将详细了解机器学习模型的生命周期。
数据收集
-
机器学习工作负载开发的第一步是确定训练和评估机器学习模型性能所需的数据。
-
在云环境中,数据湖通常用作集中式存储库,使您能够存储所有结构化和非结构化数据,而无需考虑规模。
-
AWS 提供多种方式从各种来源批量或实时地提取数据。您可以使用 AWS Direct Connect 和 AWS Storage Gateway 等服务将数据从本地环境迁移到云端,还可以使用 AWS Snowball 和 AWS Snowmobile 等工具大规模迁移数据。
-
您还可以使用 Amazon Kinesis 来收集和摄取流式数据。此外,您还可以选择使用 AWS Lake Formation 和 Amazon HealthLake 等服务来快速搭建数据湖。
-
以下是数据收集和整合方面的最佳实践建议:
- 详细记录提取数据所需的各种数据源和步骤。这可以通过 AWS Glue Catalog 实现,它能够自动发现和分析您的数据,并生成 ETL 代码,将源数据转换为目标模式。AWS 最近还发布了一项名为 AWS Glue DataBrew 的新功能,它提供了一个可视化的数据准备界面,使数据分析师和数据科学家能够轻松地清理和规范化数据,以便进行分析和机器学习。
- 定义数据治理——明确数据的所有权、访问权限、数据的合理使用方式,以及按需访问和删除特定数据的能力。数据治理和访问管理可以使用 AWS Lake Formation 和 AWS Glue Catalog 来实现。
数据整合与准备
-
机器学习模型的性能取决于用于训练的数据质量。劣质数据通常被称为“垃圾进,垃圾出”。数据收集完成后,下一步是整合、准备和标注数据。AWS 提供多种服务,数据工程师和数据科学家可以使用这些服务来准备用于机器学习模型训练的数据。
-
除了提供传统 ETL 功能的 AWS Glue 和 Amazon EMR 等服务外,AWS 还提供 Amazon SageMaker 中的工具,这些工具专为数据科学家设计。这些工具包括:
- Amazon SageMaker Ground Truth可用于数据标注
- SageMaker Data Wrangler简化了数据准备和特征工程流程。
- SageMaker 功能库,可用于存储、更新、检索和共享机器学习功能。
-
此外,SageMaker Processing 允许您在完全托管的环境中运行预处理、后处理和模型评估工作负载。
-
我们建议实施以下数据集成和准备方面的最佳实践:
- 跟踪数据沿袭,以便在后续处理过程中追踪和了解数据的位置和来源。借助 AWS Glue,您可以直观地绘制数据沿袭图,从而了解数据所经历的各种数据源和转换步骤。您还可以使用 AWS Glue Catalog 提供的元数据来建立数据沿袭。SageMaker Data Wrangler 数据流 UI 提供了端到端数据沿袭的可视化地图。
- 数据源和处理工作流的版本控制——对数据源和处理工作流进行版本控制,可以维护数据集成流程变更的审计跟踪,并重新创建数据管道的先前版本。AWS Glue 提供版本控制功能,这些功能包含在 AWS Glue Catalog 和 AWS Glue Schema Registry(用于流式数据源)中。AWS Glue 和 Amazon EMR 作业可以使用版本控制系统(例如 AWS CodeCommit)进行版本控制。
- 自动化数据集成部署管道——通过定义代码如何从开发环境升级到生产环境的管道,最大限度地减少部署管道中的人工干预点,确保数据集成工作负载能够持续稳定地部署。AWS 开发人员工具允许您构建 CI/CD 管道,将代码升级到更高级别的环境。
特征工程
-
特征工程是指在预测模型开发过程中选择和转换数据属性或变量。Amazon SageMaker Data Wrangler 可用于特征的选择、提取和转换。
-
您可以将使用 Data Wrangler 设计的数据流导出为 Data Wrangler 作业,或者导出到 SageMaker Pipelines。
-
可以使用 Amazon EMR 和 AWS Glue 等 ETL 服务进行特征提取和转换。最后,您可以使用 Amazon SageMaker Feature Store 来存储、更新、检索和共享机器学习特征。
-
以下是一些推荐用于特征工程的最佳实践:
- 确保特征标准化和一致性——企业内部对类似特征的定义往往存在差异。使用 Amazon SageMaker 特征库可以实现特征标准化,并有助于确保模型训练和推理的一致性。
- 如果您使用 SageMaker 进行特征工程,则可以使用 SageMaker Lineage Tracking 来存储和跟踪有关特征工程步骤(以及在 SageMaker 中执行的其他 ML 工作流步骤)的信息。
模型训练
-
模型训练步骤包括选择合适的机器学习算法,并使用输入特征来训练机器学习模型。除了训练数据(在特征工程阶段准备的输入特征)之外,通常还需要提供模型参数来优化训练过程。
-
为了衡量模型在训练过程中的性能,AWS 使用多种指标,例如训练误差和预测准确率。算法报告的指标取决于业务问题和所使用的机器学习技术。
-
某些模型参数(称为超参数)可以进行调整,以控制模型的行为和最终的模型架构。模型训练通常涉及一个迭代过程:训练模型、根据相关指标评估其性能,并调整超参数以寻找最优的模型架构。
-
这个过程通常被称为超参数优化。AWS 建议在模型训练阶段应用以下最佳实践:
- 遵循模型测试计划并跟踪您的模型实验——Amazon SageMaker Experiments 使您能够组织、跟踪、比较和评估 ML 实验和模型版本。
- 利用托管服务进行模型调优——SageMaker 自动模型调优和 SageMaker Autopilot 可帮助机器学习从业者探索大量组合,从而自动快速地聚焦于高性能模型。
- 监控训练指标,确保模型训练达到预期结果——SageMaker Debugger 可用于此目的,它旨在分析和调试训练作业,以提高机器学习模型的性能。
- 确保模型训练在机器学习生命周期中的可追溯性——SageMaker Lineage Tracking 可用于此目的。
模型验证
-
模型训练完成后,需要对其进行评估,以确定其性能和准确性是否能够帮助您实现业务目标。数据科学家通常会使用不同的方法生成多个模型,并评估每个模型的有效性。
-
评估结果为数据科学家提供决策依据,以便他们微调数据或算法,从而进一步提高模型性能。
-
在微调过程中,数据科学家可能会决定重复数据准备、特征工程和模型训练步骤。AWS 建议采用以下最佳实践进行模型验证:
- 跟踪使用不同特征集和算法训练模型所进行的实验——如模型训练部分所述,Amazon SageMaker Experiments 可以帮助跟踪不同的训练迭代和评估结果。
- 在模型存储库中维护模型的不同版本及其相关的元数据,例如训练和验证指标——SageMaker 模型注册表使您能够对生产模型进行编目、管理模型版本、管理模型的审批状态以及关联元数据,例如模型的训练指标。
- 对于监管机构而言,了解模型如何得出预测结果至关重要,因为他们需要深入了解模型的决策过程——AWS 建议您使用模型可解释性工具,这些工具可以帮助解释机器学习模型如何进行预测。SageMaker Clarify 提供了实现模型可解释性所需的工具。
- 数据偏差会导致机器学习算法出现偏差,从而显著降低模型的有效性。这在医疗保健和生命科学领域尤为重要,因为性能不佳或存在偏差的机器学习模型会对现实世界造成严重的负面影响。SageMaker Clarify 可用于对机器学习模型进行训练后偏差分析。
人工智能/机器学习合规性的其他注意事项
- 其他需要考虑的因素包括:
- 可审计性
- 可追溯性
- 可重复性
- 模型监测
- 模型可解释性
可审计性
-
另一个对管理良好且安全的机器学习环境的考虑因素是拥有强大而透明的审计跟踪,该跟踪记录对数据和模型的所有访问和更改,例如模型配置或超参数的更改。
-
AWS CloudTrail 是一项服务,它会记录、几乎持续地监控并保留与您的 AWS 基础设施相关的账户活动。CloudTrail 会记录每一次 AWS API 调用,并提供您的 AWS 账户活动的事件历史记录,包括通过 AWS 管理控制台、AWS 开发工具包、命令行工具和其他 AWS 服务执行的操作。
-
另一项服务 AWS Config 使您能够几乎不间断地监控和记录 AWS 资源的配置更改。更广泛地说,除了日志记录和审计功能外,AWS 还建议采用纵深防御的安全策略,在应用程序和环境的每个层面应用安全措施。
-
AWS CloudTrail 和 AWS Config 可用作检测控制措施,负责识别潜在的安全威胁或事件。
-
由于侦探控制功能可以识别潜在威胁,您可以设置纠正控制措施来应对和减轻安全事件的潜在影响。
-
Amazon CloudWatch 是一项用于监控 AWS 资源的监控服务,它可以触发 CloudWatch Events 来自动执行安全响应。有关设置检测和纠正控制的详细信息,请参阅 AWS Glue 中的日志记录和监控。
可追溯性
-
有效的模型治理需要详细了解建模过程中使用的数据和数据转换,以及几乎持续地跟踪所有模型开发迭代。
-
重要的是要记录使用了哪个数据集、对数据应用了哪些转换、数据集存储在哪里以及构建了哪种类型的模型。
-
此外,还需要跟踪其他变量,例如超参数、模型文件位置和模型训练元数据。任何用于消除批量推理过程中预测偏差的后处理步骤也需要记录。
-
最后,如果一个模型被提升到生产环境中进行推理,则需要记录生产环境中使用的模型文件/权重,并且需要监控生产环境中的模型性能。
-
版本控制是可追溯性的一个方面,它有助于确保您了解哪些组件或工件进入生产环境,以及它们如何随着时间的推移以更新和补丁的形式演变。
-
机器学习解决方案开发过程中涉及的不同类型组件的版本控制由三个关键组件提供:
- 使用 GitHub 等工具进行软件版本控制,可以跟踪处理、训练和推理脚本的更改。AWS 提供了一个原生版本控制系统 AWS CodeCommit,可用于此目的。或者,您也可以使用自己的 GitHub 实现。
- 利用模型版本控制功能,可以跟踪在迭代训练过程中创建的不同模型版本。SageMaker 模型注册表与 SageMaker 的其他功能原生集成,可用于此目的。
- 使用容器存储库来跟踪不同的容器版本,这些版本在 SageMaker 中用于处理、训练和推理。SageMaker 与 Amazon ECR 原生集成,后者维护着每个容器更新的版本信息。
可重复性
-
机器学习中的可复现性是指通过保存机器学习工作流程中每个阶段(包括数据集)的足够信息,生成完全相同的模型工件和结果的能力,以便在以后某个日期或由不同的利益相关者进行复现,同时尽可能减少过程中的随机性。
-
为了符合 GxP 标准,客户可能需要重现和验证 ML 工作流程的每个阶段,以降低出错的风险,并确保 ML 解决方案的正确性和稳健性。
-
与传统软件工程不同,机器学习具有实验性、高度迭代的特点,并且包含多个阶段,这使得结果的可复现性极具挑战性。一切都始于数据。确保数据集在机器学习工作流程的每个阶段都可复现至关重要。
-
数据集的变异性可能是由于子抽样方法的随机性、训练集/验证集/测试集的划分以及数据集的打乱造成的。
-
数据处理、特征工程和后处理脚本的变更也可能导致结果出现差异。这些阶段中任何环节的不一致都可能导致无法复现的结果。
-
有助于确保数据集和数据处理脚本可重复性的方法包括:
- 数据集版本控制
- 代码库中所有库都使用固定的种子值。
- 对代码进行单元测试,以确保对于给定的一组输入,输出保持不变。
- 代码库的版本控制
-
机器学习工作流程的核心组件是机器学习模型,它由模型参数和超参数组合而成,需要跟踪这些参数以确保结果的一致性和可重复性。
-
除了这些参数之外,许多机器学习算法的随机性(不确定性或随机性)也增加了复杂性,因为相同的数据集和相同的代码库可能会产生不同的输出。
-
这一点在深度学习算法中更为明显,因为深度学习算法能够高效地近似复杂计算。使用相同的数据集、相同的代码库和相同的算法,可以近似地复现这些结果。
-
除了算法之外,底层硬件和软件环境配置也会影响结果的可复现性。有助于确保可复现性并减少机器学习建模中非确定性行为来源的方法包括:
- 模型参数初始化的一致性
- 基础设施(CPU 和 GPU)标准化
- 配置管理以确保运行时、库和框架的一致性
-
当解决方案并非完全确定时,量化模型预测不确定性的需求就显得尤为重要。不确定性量化 (UQ) 在优化和决策过程中降低不确定性方面发挥着关键作用,并有助于提高 GxP 合规流程的透明度。
-
《深度学习中的不确定性量化综述:技术、应用和挑战》一书对深度学习中的不确定性量化技术、应用和挑战进行了综述。
-
量化不确定性的方法不多,其中包括:
- 集成学习技术,例如深度集成,具有跨机器学习模型的通用性,并且可以集成到现有的机器学习工作流程中。
- 温度缩放是一种有效的后处理技术,用于恢复网络校准,使预测的置信度与真实似然度相匹配。请参阅有关神经网络校准的参考文献。
- 贝叶斯神经网络结合蒙特卡罗dropout。有关这些方法的更多信息,请参阅“深度学习中不确定性估计方法”。
-
Amazon SageMaker ML 血缘跟踪功能允许您创建和存储有关机器学习工作流中每个阶段的信息。在 GxP 合规性方面,此功能可通过跟踪模型血缘关系工件以进行审计和合规性验证,从而帮助您建立模型治理。
-
SageMaker ML 血缘跟踪功能可跟踪由 SageMaker 自动创建的实体,或由客户自定义创建的实体,以帮助维护 ML 工作流每个阶段所有元素的表示。
模型可解释性
-
可解释性是指人类理解决策原因的程度。机器学习模型的可解释性越高,模型的预测结果就越容易理解。可解释性有助于:
- 理解
- 调试和审核机器学习模型预测
- 偏见检测以确保决策公平
- 稳健性检查,以确保输入中的微小变化不会导致输出的显著变化
- 为受模型预测不利影响的人提供补救措施的方法
-
在 GxP 合规性的背景下,模型可解释性提供了一种机制,通过提高模型预测以及底层算法行为的透明度,来确保 ML 解决方案的安全性和有效性。
-
提高透明度是患者中心方法的一个关键方面,对于基于人工智能/机器学习的软件辅助医疗设备(SaMD)来说尤其重要,因为这类设备可能会随着时间的推移而学习和改变。
-
模型预测的结果(模型性能)与模型做出该预测的原因(模型可解释性)之间存在权衡。
-
对于某些解决方案而言,模型的高性能就足够了;而对于另一些解决方案而言,能够解释模型所做的决策才是关键。当错误预测的代价巨大时,尤其是在高风险应用中,对可解释性的需求就更加迫切。
-
根据模型的复杂性,模型可解释性方法可以分为内在分析和事后分析。
- 内在分析可用于解释低复杂度模型(输入变量与预测值之间的关系简单)。这些模型基于:
- 诸如线性回归之类的算法,其预测结果是输入值的加权和。
- 决策树,其预测基于一组“如果-那么”规则。
-
输入和输出之间的简单关系使得模型具有较高的可解释性,但往往导致模型性能较低,因为算法无法捕捉复杂的非线性交互作用。
- 如前所述,事后分析既可用于解释较为简单的模型,也可用于解释更为复杂的模型,例如能够捕捉非线性交互作用的神经网络。这些方法通常与模型无关,并提供基于输入和输出预测来解释已训练模型的机制。事后分析既可在局部层面进行,也可在全局层面进行。
- 局部方法允许您放大到单个数据点,并观察模型在该区域内的行为。它们是调试和审核机器学习模型预测结果的重要组成部分。局部方法的示例包括:
- 局部可解释模型无关解释(LIME)提供了一种稀疏的、线性的模型行为近似方法,用于描述数据点周围的模型行为。
- 沙普利加性解释 (SHAP)是一种基于沙普利值的博弈论方法,它计算每个投入变量对产出的边际贡献。
- 反事实解释描述了输入变量的最小变化如何导致模型预测结果的变化。
- 整合梯度提供了一种机制,可以将模型的预测结果归因于特定的输入变量。
- 显著性图是一种像素属性方法,用于突出显示图像中的相关像素。
- 全局方法能够帮助您从宏观角度审视模型,提供整体视角,从而解释模型的整体行为。这些方法有助于验证模型的稳健性,并尽可能减少模型偏差,以确保决策的公平性。全局方法的示例包括:
- 将先前定义的局部解释汇总到多个数据点
- 排列特征重要性,它通过计算输入变量排列组合引起的模型预测变化来衡量输入变量的重要性。
- 偏依赖图,用于绘制输入变量与模型预测之间的关系及其边际效应。
- 代理模型方法是使用更简单、更易于解释的模型,通过训练来近似模拟原始复杂模型的行为。
-
建议从简单易懂的模型开始机器学习之旅,该模型既要具有可解释性,又要能提供足够的模型性能。
-
在后续迭代中,如果需要提高模型性能,AWS 建议增加模型复杂度并利用事后分析方法来解释结果。
-
同时选择局部方法和全局方法,可以让您能够解释模型对单个数据点的行为,以及对数据集中所有数据点的行为。
-
验证模型解释的稳定性也至关重要,因为事后分析方法容易受到对抗性攻击,输入中的微小扰动可能会导致输出预测发生巨大变化,进而导致模型解释发生巨大变化。
-
Amazon SageMaker Clarify 提供用于检测机器学习模型偏差和理解模型预测的工具。SageMaker Clarify 采用与模型无关的特征归因方法,并提供可扩展且高效的 SHAP 实现。
-
要运行 SageMaker Clarify 处理作业以创建 ML 模型预测的解释,请参阅 Amazon SageMaker Clarify 的可解释性和偏差检测。
模型监测
-
机器学习模型部署到生产环境后,需要根据以下几点对模型进行监控:
- 基础设施——确保模型拥有足够的计算资源来支持推理工作负载。
- 性能——确保模型预测结果不会随时间推移而下降
-
监控模型性能更具挑战性,因为数据集中的潜在模式不断演变,这会导致静态模型随着时间的推移而性能下降。
-
此外,在生产环境中获取数据的真实标签既昂贵又耗时。另一种方法是监控数据的变化,并根据基线模型来建模实体。
-
Amazon SageMaker 模型监控器可以帮助几乎持续地监控生产中 ML 模型的质量,这可能在医疗器械软件 (SaMD) 制造商的上市后监管中发挥作用。
-
SageMaker 模型监控器能够监控数据质量、模型质量、模型偏差和特征归因方面的漂移。当生产环境中数据的统计分布偏离模型训练期间的数据分布时,就会出现数据质量漂移。
-
这主要发生在选择训练数据集时存在偏差的情况下;例如,模型训练所用的数据样本的分布与模型推理期间的分布不同,或者在数据分布随时间变化的非平稳环境中。
-
当模型做出的预测与实际真实标签之间存在显著偏差时,就会出现模型质量漂移。
-
SageMaker 模型监控器能够创建基线来分析输入实体,定义指标来跟踪偏差,并基于这些指标几乎持续地监控生产环境中的数据和模型。此外,模型监控器还与 SageMaker Clarify 集成,用于识别机器学习模型中的偏差。
- 对于模型监测,请执行以下步骤:
- 将模型部署到 SageMaker 端点后,启用该端点以捕获来自传入请求的数据,该请求指向已训练的 ML 模型以及由此产生的模型预测结果。
- 从用于训练模型的数据集中创建基线。基线会计算各项指标并提出相应的约束条件。模型的实时预测结果将与这些约束条件进行比较,如果超出约束范围,则会被报告为违规。
- 制定监测计划,明确规定要收集哪些数据、收集频率、分析方法以及生成哪些报告。
- 检查报告,其中将最新数据与基线进行比较,并留意报告的任何违规行为以及来自 Amazon CloudWatch 的指标和通知。
- 数据或模型性能的偏差可能是由多种原因造成的,技术、产品和业务利益相关者必须诊断出导致偏差的根本原因。
*及早主动地检测模型漂移,可以采取纠正措施,例如重新训练模型、审核上游数据准备工作流程以及解决任何数据质量问题。
如果其他条件不变,则是否重新训练模型取决于以下因素:
- 根据用例重新评估目标绩效指标
- 模型性能提升与重新训练模型所需的时间和成本之间存在权衡
-
是否有足够多的带标签的真实数据来支持所需的重训练频率
- 模型重新训练后,您可以根据冠军/挑战者设置或 A/B 测试来评估候选模型的性能,然后再重新部署。
希望本指南能帮助您了解机器学习生命周期各阶段的最佳实践。
请在评论区留言告诉我你的想法👇
如果你还没有关注我,请务必关注我的以下账号:
👋在领英上关注我
🤓在推特上关注我
🐱💻在GitHub上关注我
✍️也欢迎浏览我的博客
点赞、分享并关注我🚀,获取更多内容。
👨💻加入我们的云技术 Slack 社区
👋在LinkedIn / Twitter上关注我们,获取最新资讯
💻查看我们的GitHub 代码库,了解更多项目信息
✍️访问我们的网站
文章来源:https://dev.to/cloudtech/best-practices-for-ml-lifecycle-stages-4g9b

