• 机器学习模型监控(Aporia)


    机器学习模型监控

    什么是机器学习 (ML) 模型监控?

    机器学习监控是一组用于观察生产中的 ML 模型并确保其性能可靠性的技术。 ML模型通过观察数据集中的示例进行训练,并将代表模型在训练任务中表现的好坏的错误最小化。

    生产 ML 模型在对开发中的静态样例集进行训练后,对来自不断变化的世界的变化数据进行推理。 开发中的静态训练数据与生产中的动态数据之间的这种差异导致生产模型的性能随着时间的推移而下降。

    image.png

    示例:

    假设您根据 COVID 之前的用户数据检测信用卡欺诈训练了模型。 在大流行病期间,信用卡使用和购买习惯会发生变化。 此类更改可能会使您的模型暴露于模型未训练的分布中的数据。 这是数据漂移的一个例子,是模型退化的几个来源之一。 如果没有 ML 监控,您的模型将输出不正确的预测而没有警告信号,从长远来看,这将对您的客户和您的组织产生负面影响。

    机器学习模型监控旨在使用数据科学和统计技术来持续评估生产中机器学习模型的质量。

    监控可以服务于不同的目的:

    1. 早期发现不稳定性
    2. 了解模型性能下降的方式和原因
    3. 诊断具体的故障案例

    此外,一些 ML 监控平台,如 Aporia,不仅可用于跟踪和评估模型性能,还可用于审查和调试、解释模型预测并提高生产中的模型性能。

    如何监控机器学习

    工程师监控软件是因为当今构建的系统在实际部署场景中容易受到不确定性的影响。同样,ML 模型是软件系统,但本质上,ML 模型只与我们提供给它们的数据差不多。因此,传统的软件监控技术在应用于 ML 模型时是无效的。

    有效的机器学习监控系统必须检测数据的变化。未能主动查看这些更改可能会导致模型静默失败。此类故障将对最终用户的业务绩效和信誉造成重大负面影响。找出您的 ML 模型在生产中可能表现不佳的 5 个最常见原因

    模型监控可以帮助维护和改进 ML 模型在生产中的性能,确保模型按预期执行。部署的 ML 模型与现实世界进行交互。因此,模型在生产中看到的数据是不断变化的。一旦部署到生产环境中,模型的性能通常会开始下降。

    监控性能下降将帮助您快速检测模型何时表现不佳。性能指标特定于模型和学习任务。例如,准确率、精确度和 F1 分数将用于分类任务,而均方根误差将用于预测任务。除了观察真实世界数据的性能指标外,数据科学团队还可以对输入数据进行检查,以进一步了解性能下降。

    此外,测量模型漂移是 ML 监控系统的重要组成部分。模型输入、输出和实际值会随时间发生漂移,通过分布变化来衡量。检查您的模型是否存在偏差,以确定它们是否过时、是否存在数据质量问题,或者它们是否包含对抗性输入。您可以通过使用 ML 监控检测漂移来更好地了解如何解决这些问题。

    全面的模型监控解决方案应包括:

    1. 数据漂移检测:跟踪每个输入特征的分布有助于揭示输入数据随时间的变化。您可以将此跟踪扩展到联合分布。
    2. 数据完整性检测:要检测输入数据结构的变化,请检查特征名称是否与您的训练集中的特征名称相同。 扫描输入中的缺失值将揭示数据收集流水线中的变化或问题。
    3. 概念漂移检测:了解输入数据中每个特征相对于输出的重要性是一种简单而有效的防止概念漂移的方法。 特征相关性的变化表明概念漂移。 我们可以评估特定特征的模型或随着时间的推移执行相关性研究。 这些技术还有助于了解模型性能的变化。 例如,您可能会发现某些特征的重要性与一年中的时间之间的关系。

    image.png

    检查输入数据会建立一个简短的反馈循环,以快速检测生产模型何时开始表现不佳。

    除了性能下降之外,生产模型还可能由于数据偏差或异常而表现不佳。

    1. 数据偏差:在有偏差的数据上训练你的模型将在生产中实现这种偏差。考虑训练一个模型来对猫和狗的图像进行分类。假设您的训练集的猫图像比狗图像多得多。在这种情况下,您的模型可能会通过学习将大多数图像分类为猫而不是学习猫和狗之间的实际边界来获得良好的准确性。为了防止生产中的模型输出有偏差,我们可以分析训练数据中目标变量和输入特征中的不平衡表示或偏差。
    2. 异常:异常是相对于训练样本分布的异常值的输入样本。对异常值进行推理几乎可以保证结果不准确。为了防止由于异常导致模型性能不佳,我们可以首先评估每个输入样本以确保它属于我们的训练数据的分布。

    机器学习模型中的漂移检测

    如何检测机器学习模型中的模型漂移

    检测模型漂移的一个明显方法是通过 ML 监控技术和 Aporia 等解决方案,它确保模型性能不会下降超过某个点。

    由于数据漂移和概念漂移是模型漂移的主要来源,因此需要具备检测数据和概念漂移的能力。

    如何检测机器学习模型中的数据漂移

    数据漂移是由于输入数据的变化而发生的。因此,要检测数据漂移,您必须在生产中观察模型的输入数据,并将其与训练数据进行比较。注意到生产输入数据和训练数据的格式或分布不同,这表明您正在经历数据漂移。例如,在数据格式发生变化的情况下,假设您训练了一个用于房价预测的模型。在生产中,确保输入矩阵与您在训练期间使用的数据具有相同的列。输入数据相对于训练数据的分布变化需要统计技术来检测。

    以下测试可用于检测输入数据分布的变化

    1. Kolmogorov-Smirnov (K-S) 测试:您可以使用 K-S 测试来比较您的训练集的分布与您在生产中的输入。如果分布不同,则拒绝原假设,表明数据漂移。在我们的概念漂移检测方法指南中了解有关此检测方法和其他方法的更多信息。
    2. 群体稳定性指标(PSI):随机变量的 PSI 是衡量变量分布随时间变化的指标。在房价预测系统的示例中,您可以测量感兴趣特征的 PSI,例如:平方英尺或平均邻里收入,以观察这些特征的分布如何随时间变化。较大的变化可能表明数据漂移。
    3. Z-score:z-core可以比较训练数据和生产数据之间的特征分布。如果计算的 z-score的绝对值很高,您可能会遇到数据漂移。

    如何检测机器学习模型中的概念漂移

    您可以通过检测给定输入的预测概率变化来检测概念漂移。

    在给定生产输入的情况下检测模型输出的变化可能表明您未操作的分析级别的变化。

    例如,如果您的房价分类模型没有考虑通货膨胀,您的模型将开始低估房价。 您还可以通过 ML 监控技术(例如:性能监控)检测概念漂移。 观察模型准确性或分类置信度的变化可能表明概念漂移

    image.png

    如何防止机器学习模型中的概念漂移

    您可以通过 ML 模型监控来防止概念漂移。 ML 监控将揭示模型性能的下降,这可能表明概念漂移,从而促使 ML 开发人员更新模型。

    除了这种基于观察的预防方法外,您还可以利用基于时间的方法,其中, ML 模型在给定退化时间范围内定期重新训练。 例如,如果模型的性能每四个月变得不可接受,则每三个月重新训练一次。

    最后,您可以通过在线学习防止概念漂移。 在在线学习中,您的模型将在每次有新数据可用时进行训练,而不是等待积累大数据集,然后重新训练模型。

    机器学习性能监控

    如何监控机器学习性能

    性能监控可帮助我们检测生产 ML 模型表现不佳并了解其表现不佳的原因。监控 ML 性能通常包括监控模型活动指标变化模型陈旧(或新鲜)和性能下降。通过 ML 性能监控获得的洞悉将建议进行更改以提高性能,例如:超参数调优、迁移学习、模型再训练、开发新模型等。

    监控性能取决于模型的任务。图像分类模型将使用准确性作为性能指标,但均方误差 (MSE) 更适合回归模型。重要的是要了解性能不佳,这并不意味着模型性能正在下降。例如,当使用 MSE 时,我们可以预期对异常值的敏感性会降低模型在给定批次上的性能。然而,观察到这种退化并不表明模型的性能越来越差。它只是在输入数据中有一个离群值,同时使用MSE作为度量的一个制品。评估输入数据是一种很好的 ML 性能监控实践,并将揭示此类性能下降的实例。

    在监控 ML 模型的性能时,我们需要清楚地定义什么是不良性能。这通常意味着将准确度分数或错误指定为预期值,并观察随时间推移与预期性能的任何偏差。在实践中,数据科学家明白模型在现实世界数据上的表现可能不如开发期间使用的测试数据。此外,现实世界的数据很可能会随着时间而变化。由于这些原因,一旦部署模型,我们可以预期并容忍一定程度的性能下降。为此,我们对模型的预期性能使用上限和下限。数据科学团队应与主题专家合作,仔细选择定义预期性能的参数。

    根据用例,性能衰减会产生非常不同的后果。因此,可接受的性能衰减水平取决于模型的具体应用场景。例如,我们可以容忍动物声音分类应用程序的 3% 准确度下降,但 3% 的准确度下降对于脑肿瘤检测系统来说是不可接受的。

    ML 性能监控是一种有价值的工具,可以检测生产模型何时表现不佳以及我们可以做些什么来改进。以下几点对于要修复表现不佳的模型中的问题非常有帮助:

    1. 将数据预处理和 ML 模型放在不同的模块中。当预处理流水线的更改足够时,将数据预处理和 ML 模型作为单独的模块可以帮助您更有效地修复退化模型。假设您构建了一个模型,该模型对美国邮局的邮件执行手写分类。在生产中,邮局决定使用低强度灯泡以节省能源。您的模型现在在更暗的图像上执行。在这种情况下,改变数据预处理模块以增加像素强度和增强边界就足以提高模型性能。与重新训练模型相比,它也大大降低了成本和耗时。

    2. 使用基线(baseline)。基线模型是一种更简单、更易解释的模型,可以得到很好的结果。您使用基线模型作为大型花式生产模型的健全性检查。例如,时间序列数据的 LSTM 的基线可以是逻辑回归模型。观察到生产模型的性能下降而基线模型具有良好的性能可能表明您的生产模型在训练数据上过拟合。在这种情况下,对正则化超参数的调整将提高模型性能。如果没有基线模型,您可能会得出结论,该模型由于数据或概念漂移而表现不佳,并重新训练或构建新模型。

    3. 选择易于重新训练的模型架构。神经网络是强大的 ML 算法,因为它们能够逼近任何复杂的函数。此外,它们特别适合生产,因为它只能训练神经网络的一部分。例如,遇到来自新类别的图像的图像分类模型不需要完整的端到端再训练。相反,我们可以迁移学习(仅重新训练网络的分类部分),使用额外的类并重新部署。

    为了从监控模型性能中获得进一步的洞察力,可视化与训练数据相关的生产输入数据并检测异常是很有用的,如“如何监控机器学习?”一节中所述。

    如何提高模型性能

    即使概念漂移和数据漂移得到控制,随着时间的推移,ML 模型的性能仍然可能会下降。数据科学家需要不断地在新的和更新的数据上训练 ML 模型来对抗这种现象(导致 ML 模型的性能再次下降),除非模型性能得到定期改进。

    以下是一些可用于提高模型性能的技术:

    1. 使用更先进的工具:更好的工具可能会提供更多功能来提高 ML 模型的性能,但必须考虑将这些新的 ML 模型工具实施到现有的 ML 系统中所需的时间。
    2. 使用更多数据:增加用于训练模型的数据量将有助于模型更好地泛化,从而保持更长时间的相关性。如果 ML 系统需要大量数据进行训练,这种解决方案可能变得不切实际。
    3. 使用 ML 模型集成方法:众所周知,ML 模型集成可以提高 ML 模型的性能,因为集成根据几个不同模型的预测来预测最可能的标签。集成可以帮助 ML 系统避免概念漂移,因为如果集成中的一个模型正在经历漂移,那么它对集成预测的贡献就会被集成中的其他模型所掩盖。这种方法是以维护集成(ensemble)本身为代价的。集成(ensemble)需要仔细监控,以免造成比性能改进更大的危害。
    4. 使用具有更高预测能力的 ML 模型:那些想要构建利用概念漂移和数据漂移的 ML 系统的人可以考虑使用通常更强大的 ML 模型,例如:随机森林或广义线性模型 (glm)。 ML 模型集成也可以使用高性能 ML 模型创建。模型特征选择可以被认为是提高模型性能的一种方法,尽管概念漂移会导致这种方法失败,从而导致 ML 开发人员使用更复杂的 ML 模型算法。

    机器学习模型管理

    什么是机器学习模型管理?

    模型管理是 MLOps 的一个子集,专注于实验跟踪、模型版本控制、部署和监控。在开发 ML 模型时,数据科学家通常会进行多次实验以找到最优模型。这些实验包括数据预处理、超参数调优和模型架构本身的变化。测试的目的是为特定用例找到最佳模型。在未来对次优配置进行实验之前,数据科学家通常不知道当前配置是否最优。因此,跟踪实验对于开发 ML 模型至关重要。

    在典型场景中,模型开发是一项协作工作。数据科学家经常使用同行的现有notebooks作为起点或进行实验。这种合作增加了重现预期结果的难度。

    模型管理通过以下方式解决这些挑战:

    • 跟踪指标、损失、代码和数据版本以促进实验可复制性
    • 通过以可重复配置交付模型来实现可重用性
    • 确保遵守业务和监管要求的变化

    版本控制系统用于 ML 模型管理,但仅提供部分必要功能。版本控制系统只跟踪系统源代码随时间的变化。一个实用的 ML 模型管理框架还必须利用以下内容:

    • ML 模型监控:一种系统,可让生产中的 ML 模型可见,并能够检测数据漂移、意外偏差、数据完整性问题等问题,这些问题会影响模型的预测和性能。
    • 可解释性:理解输入数据中的特征与模型预测之间关系的能力。
    • 数据版本控制系统:数据版本控制跟踪对数据集所做的更改,以进行试验、训练和部署。不同数据版本的原因包括数据预处理的变化和数据源的变化。有关数据版本控制的更多信息,请阅读我们的 MLOps 最佳数据版本控制工具帖子。
    • 实验跟踪:实验跟踪器记录每个训练或验证实验的结果以及产生这些结果的配置。记录的配置包括超参数,例如:学习率、批量大小或正则化等。
    • 模型注册表:部署中所有模型的注册表。

    除了在研究中开发 ML 模型之外,为生产构建机器学习系统是一门手艺。因此,生产 ML 需要自己的一套工具和实践来成功地大规模交付解决方案。从一开始就集成 ML 管理可确保您使用正确的工具来完成工作。

    请参阅有关从头开始构建 ML 平台的动手教程。

    image.png

    为什么在部署后管理和监视您的ML模型

    部署的模型暴露在不断变化的真实数据中。因此,部署模型后的 ML 管理对于确保模型继续按预期运行至关重要。 ML 管理的一个子集是 ML 监控,这是一组用于观察生产中 ML 模型的质量和性能的工具。拥有用于已部署模型的 ML 管理框架有助于团队跟踪性能指标、监控数据变化,并获得关于模型性能不佳原因的宝贵见解,这将为改进性能提供信息。例如,可视化生产中相对于模型训练数据的输入数据可以展示数据漂移,促使您的团队根据更新的数据重新训练部署的模型。

    ML 管理还可以帮助您跟踪部署中的所有模型。 ML 管理包括保存所有已部署模型的模型注册表和使用模型版本控制系统。模型注册表和版本控制与性能监控相结合,为生产中的 ML 模型提供了一个方便的全局健康仪表板。借助模型注册和版本控制系统,团队可以更好地查明哪些特性导致给定模型版本在某些设置中表现不佳。这使得改进部署的模型更加有效。

    最后,在部署后管理 ML 模型将有助于跟踪生产中的退化模型,并更好地安排诊断测试,以进一步了解不良性能。

    image.png

    可解释性 (XAI)

    什么是机器学习的可解释性?

    使 ML 模型可解释是关于建立理解输入数据中的特征与模型预测之间的关系的能力。 机器学习通常采用具有数千个可学习参数的架构,用于估计一个复杂的函数。 这使得很难描述模型内部发生的事情以轻松产生其输出。 这个问题为 ML 模型赢得了“黑匣子”的称号。

    确保 ML 模型可解释在现实世界中很复杂,因为:

    • 算法结果的解释取决于你有多少可用数据
    • 机器学习算法可能出错的方式有很多

    我们通过查看几个不同的方面来衡量模型的可解释性

    1. 决策过程是否可解释
    2. 模型预测结果的准确度(即准确率)
    3. 分类器的决定有多可靠

    试图了解机器学习算法出了什么问题需要大量调查,这可能具有挑战性。 特别是,如果用于训练模型的数据中存在偏差,我们无法判断这些偏差是由于训练中的错误造成的,还是仅仅是由于数据中固有的缺陷造成的。

    使 ML 模型可解释对于防止生产中的模型漂移至关重要,因为它消除了对性能不佳的模型进行故障排除所涉及的大量猜测。

    有关实现可解释 AI 的实践指南,请参阅 Aporia 关于可解释性的文档。

    机器学习实验跟踪

    什么是机器学习实验跟踪?

    ML 实验跟踪是保存所有实验结果和配置以实现这些实验的可重复性的过程。

    ML 研究人员进行了多次实验以找到最佳模型,并且很难跟踪所有实验及其相关结果。为了找到一个最佳模型,ML 研究人员对各种数据集、超参数、模型架构、包版本等进行了多次实验。

    实验跟踪很重要,因为它将帮助您和您的团队:

    1. 在一个地方组织所有 ML 实验。您可以在您的本地机器上运行实验,而队友在云端或使用 google colab 运行他们的实验。 ML 实验跟踪系统将记录来自任何系统或机器的实验元数据和结果。
    2. 比较和分析实验结果。实验跟踪系统可确保使用相同格式记录所有实验,从而可以在不增加成本的情况下比较不同的实验配置和结果。
    3. 加强与团队的协作。实验跟踪系统会记录每个实验的运行者。所有团队成员都可以看到其他成员已经尝试过的内容。他们还可以拉取其他人运行的实验,复制它,然后从那里继续构建。
    4. 实时观看您的实验。实验跟踪系统使开始实验并从仪表板远程观察它的运行变得简单。在实验运行期间,您将能够看到损失、epoch时间和 CPU/GPU 使用率等指标。这对于在难以可视化的环境中运行实验尤其有用,例如在远程机器上的云中。

    为了有效地跟踪 ML 实验,您需要跟踪:

    • 代码:这包括用于运行实验的脚本和notebooks
    • 环境:环境配置文件。
    • 数据:使用数据版本来跟踪实验中使用的数据版本
    • 参数:参数配置包括模型本身的超参数,例如学习率,还包括任何可编辑的实验选项;例如,数据加载器使用的线程数
    • 指标:训练、验证和测试损失是要跟踪的一般指标的示例。您可以跟踪特定于您正在训练的模型的指标。例如,您可能还想在使用深度神经网络时跟踪梯度范数。

    ML 模型监控与跟踪

    ML 模型监控和 ML 实验跟踪之间的根本区别在于,模型监控主要是在模型部署到生产环境之后进行的。 相比之下,跟踪在部署之前最为相关

    一旦模型投入生产,我们就会实施 ML 监控来维护和改进模型性能。 一旦模型投入生产,我们就可以对其进行监控,以观察真实世界数据的性能指标,并在它发生时注意到性能下降。

    另一方面,ML 实验跟踪涉及在 ML 系统投入生产之前将其研究和开发付诸实施。 ML 跟踪可帮助 ML 研究人员跟踪在 ML 模型开发周期中运行的所有实验的代码、环境配置、数据版本、参数和指标,以找到最佳配置。 ML 跟踪与仅进行 ML 研究而不进行部署的环境相关,例如:为了研究论文的目的。

    机器学习模型注册表

    什么是模型注册表?

    模型注册表是生产中所有模型的存储库。它提供了一个访问所有经过训练和可用的 ML 模型的中心点。这种方法的目的是通过提供一种访问、搜索和管理每个已部署模型的统一方式来提高模型的可重用性。与 ML 相关的生态系统(例如:OpenML、ModelZoo 和 MODL-Wiki)是社区努力开发此类模型注册表的例子。

    模型注册表的一个重要方面是所有模型都存储在一个中心位置,这意味着每个人都查看相同的模型。在一个项目上协作的人对每个模型都有一个引用。模型注册表绕过了本地计算机上版本略有不同的问题。

    模型注册表通过以下方式使 ML 项目的协作变得更加容易:

    1. 连接实验和生产生命周期:模型注册表提供了一种从开发生命周期中获取模型并将其分阶段用于生产部署的标准化方法。模型注册表通过 ML 模型的持续集成、交付和训练 (CI/CD/CT) 促进研究人员和 MLOps 工程师之间的交互。
    2. 为团队提供一个中央仪表板来处理模型。访问模型的集中位置使团队可以轻松搜索模型和检查模型的状态,例如暂存、部署或退役。在中央仪表板中,团队还可以通过实验跟踪器参考训练和实验结果,并通过 ML 监控查看模型在生产中的实时性能。
    3. 为其他系统呈现一个界面以使用模型。模型注册表可以提供用于与其他应用程序或系统集成的 API,从而可以将 ML 模型提供给第三方客户端应用程序。客户端应用程序可以拉取模型的最新版本,并自动了解由于模型退化而对模型所做的更改。

    原文链接:Machine Learning Model Monitoring 101

  • 相关阅读:
    视频太大怎么压缩变小?三分钟学会视频压缩
    如何使用idea往github上提交代码时使用emoji表情图标
    Vuex - 状态管理模式的配置和使用(state、mutations、getters)
    Nuxt3 的生命周期和钩子函数(二)
    玻色量子入选2022年北京市科协“企业创新联合体”建设支持名单
    pycharm远程连接Linux服务器
    如何使用“–format”和输出模板成为 Docker CLI 高级用户
    【Android知识笔记】性能优化专题(三)
    Windows OpenGL ES 图像阴影
    关于数字类型的字符串,或者double,或者integer 相除得到百分数 并四舍五入保留两位小数的通用方法
  • 原文地址:https://blog.csdn.net/scgaliguodong123_/article/details/125349664