机器学习模型管理
什么是机器学习模型管理?
模型管理是 MLOps 的一个子集,专注于实验跟踪、模型版本控制、部署和监控。在开发 ML 模型时,数据科学家通常会进行多次实验以找到最优模型。这些实验包括数据预处理、超参数调优和模型架构本身的变化。测试的目的是为特定用例找到最佳模型。数据科学家通常不知道当前的配置是否是最优的,直到未来对次优配置进行实验。因此,跟踪实验对于开发 ML 模型至关重要。
在典型场景中,模型开发是一项协作工作。数据科学家经常使用同行的现有notebooks作为起点或进行实验。这种协作增加了重现预期结果的难度。
模型管理通过以下方式解决这些挑战:
- 跟踪指标、损失、代码和数据版本以促进实验可复制性
- 通过以可重复配置交付模型来实现可重用性
- 确保遵守业务和监管要求的变化
版本控制系统用于 ML 模型管理,但仅提供部分必要功能。版本控制系统只跟踪系统源代码随时间的变化。一个实用的 ML 模型管理框架还必须利用以下内容:
- ML 模型监控:一种系统,可让生产中的 ML 模型可见,并能够检测数据漂移、意外偏差、数据完整性问题等问题,这些问题会影响模型的预测和性能。
- 可解释性:理解输入数据中的特征与模型预测之间关系的能力。
- 数据版本控制系统:数据版本控制跟踪对数据集所做的更改,以进行实验、训练和部署。不同数据版本的原因包括数据预处理的变化和数据源的变化。有关数据版本控制的更多信息,请阅读我们的 MLOps 最佳数据版本控制工具帖子。
- 实验跟踪:实验跟踪记录每个训练或验证实验的结果以及产生这些结果的配置。记录的配置包括超参数,例如:学习率、批量大小或正则化等。
- 模型注册表:部署中所有模型的注册表。
除了在研究中开发 ML 模型之外,为生产构建机器学习系统是一门手艺。因此,生产 ML 需要自己的一套工具和实践来成功地大规模交付解决方案。从一开始就集成 ML 管理可确保您使用正确的工具来完成工作。
请参阅有关从头开始构建 ML 平台的动手教程。
为什么在部署后管理和监视您的ML模型
部署的模型暴露在不断变化的真实数据中。因此,部署模型后的 ML 管理对于确保模型继续按预期运行至关重要。 ML 管理的一个子集是 ML 监控,这是一组用于观察生产中 ML 模型的质量和性能的工具。拥有用于已部署模型的 ML 管理框架有助于团队跟踪性能指标、监控数据变化,并获得关于模型性能不佳原因的宝贵见解,这将为改进性能提供信息。例如,可视化生产中相对于模型训练数据的输入数据可以展示数据漂移,促使您的团队根据更新的数据重新训练部署的模型。
ML 管理还可以帮助您跟踪部署中的所有模型。 ML 管理包括保存所有已部署模型的模型注册表和使用模型版本控制系统。模型注册表和版本控制与性能监控相结合,为生产中的 ML 模型提供了一个方便的全局健康仪表板。借助模型注册和版本控制系统,团队可以更好地查明哪些特性导致给定模型版本在某些设置中表现不佳,这使得改进部署的模型更加有效。
最后,在部署后管理 ML 模型将有助于跟踪生产中的退化模型,并更好地安排诊断测试,以进一步了解不良性能。
模型可解释性 (XAI)
什么是机器学习的可解释性?
使 ML 模型可解释是关于建立理解输入数据中的特征与模型预测之间的关系的能力。 机器学习通常采用具有数千个可学习参数的架构,用于估计一个复杂的函数。 这使得很难描述模型内部发生的事情以轻松产生其输出。 这个问题为 ML 模型赢得了“黑匣子”的称号。
确保 ML 模型可解释在现实世界中很复杂,因为:
- 算法结果的解释取决于你有多少可用数据
- 机器学习算法可能出错的方式有很多
我们通过查看几个不同的方面来衡量模型的可解释性:
- 决策过程是否可解释
- 模型预测结果的准确度(即准确率)
- 分类器的决定有多可靠
试图了解机器学习算法出了什么问题需要大量调查,这可能具有挑战性。 特别是,如果用于训练模型的数据中存在偏差,我们无法判断这些偏差是由于训练中的错误造成的,还是仅仅是由于数据中固有的缺陷造成的。
使 ML 模型可解释对于防止生产中的模型漂移至关重要,因为它消除了对性能不佳的模型进行故障排除所涉及的大量猜测。
有关实现可解释 AI 的实践指南,请参阅 Aporia 关于可解释性的文档。
机器学习实验跟踪
什么是机器学习实验跟踪?
ML 实验跟踪是保存所有实验结果和配置以实现这些实验的可重复性的过程。
ML 研究人员进行了多次实验以找到最佳模型,并且很难跟踪所有实验及其相关结果。为了找到一个最佳模型,ML 研究人员对各种数据集、超参数、模型架构、包版本等进行了多次实验。
实验跟踪很重要,因为它将帮助您和您的团队:
- 在一个地方组织所有 ML 实验。您可以在您的本地机器上运行实验,而队友在云端或使用 google colab 运行他们的实验。 ML 实验跟踪系统将记录来自任何系统或机器的实验元数据和结果。
- 比较和分析实验结果。实验跟踪系统可确保使用相同格式记录所有实验,从而可以在不增加成本的情况下比较不同的实验配置和结果。
- 加强与团队的协作。实验跟踪系统会记录每个实验的运行者。所有团队成员都可以看到其他成员已经尝试过的内容。他们还可以拉取其他人运行的实验,复制它,然后从那里继续构建。
- 实时观看您的实验。实验跟踪系统使开始实验并从仪表板远程观察它的运行变得简单。在实验运行期间,您将能够看到损失、epoch时间和 CPU/GPU 使用率等指标。这对于在难以可视化的环境中运行实验尤其有用,例如在远程机器上的云中。
为了有效地跟踪 ML 实验,您需要跟踪:
- 代码:这包括用于运行实验的脚本和notebooks
- 环境:环境配置文件。
- 数据:使用数据版本来跟踪实验中使用的数据版本
- 参数:参数配置包括模型本身的超参数,例如学习率,还包括任何可编辑的实验选项;例如,数据加载器使用的线程数
- 指标:训练、验证和测试损失是要跟踪的一般指标的示例。您可以跟踪特定于您正在训练的模型的指标。例如,您可能还想在使用深度神经网络时跟踪梯度范数。
ML 模型监控与 ML 实验跟踪
ML 模型监控和 ML 实验跟踪之间的根本区别在于,模型监控主要是在模型部署到生产环境之后进行的。 相比之下,跟踪在部署之前最为相关。
一旦模型投入生产,我们就会实施 ML 监控来维护和改进模型性能。 一旦模型投入生产,我们就可以对其进行监控,以观察真实世界数据的性能指标,并在它发生变化时注意到性能下降。
另一方面,ML 实验跟踪涉及在 ML 系统投入生产之前将其研究和开发付诸实施。 ML 跟踪可帮助 ML 研究人员跟踪在 ML 模型开发周期中运行的所有实验的代码、环境配置、数据版本、参数和指标,以找到最佳配置。 ML 跟踪与仅进行 ML 研究而不进行部署的环境相关,例如:为了研究论文的目的。
机器学习模型注册表
什么是模型注册表?
模型注册表是生产中所有模型的存储库。它提供了一个访问所有经过训练和可用的 ML 模型的中心点。这种方法的目的是通过提供一种访问、搜索和管理每个已部署模型的统一方式来提高模型的可重用性。与 ML 相关的生态系统(例如:OpenML、ModelZoo 和 MODL-Wiki)是社区努力开发此类模型注册表的例子。
模型注册表的一个重要方面是所有模型都存储在一个中心位置,这意味着每个人都查看相同的模型。在一个项目上协作的人对每个模型都有一个引用。模型注册表绕过了本地计算机上版本略有不同的问题。
模型注册表通过以下方式使 ML 项目的协作变得更加容易:
- 连接实验和生产生命周期:模型注册表提供了一种从开发生命周期中获取模型并将其分阶段用于生产部署的标准化方法。模型注册表通过 ML 模型的持续集成、交付和训练 (CI/CD/CT) 促进研究人员和 MLOps 工程师之间的交互。
- 为团队提供一个中央仪表板来处理模型。访问模型的集中位置使团队可以轻松搜索模型和检查模型的状态,例如:暂存、部署或退役。在中央仪表板中,团队还可以通过实验跟踪器参考训练和实验结果,并通过 ML 监控查看模型在生产中的实时性能。
- 为其他系统呈现一个界面以使用模型。模型注册表可以提供用于与其他应用程序或系统集成的 API,从而可以将 ML 模型提供给第三方客户端应用程序。客户端应用程序可以拉取模型的最新版本,并自动了解由于模型退化而对模型所做的更改。