下一层次的自动化

412 阅读5分钟

一个先进的MLOps生命周期

机器学习是探索性和数据驱动的[1]。它是关于从数据中提取模式并将这些模式重新应用于新的数据。如果一切顺利,你会得到很好的预测。探索性的部分是为你打算进行预测的数据找到正确的模式。

当数据没有很好的结构化或可预测性时,MLOps的生命周期可能看起来与主流的DevOps非常不同。然后我们看到一系列专门针对MLOps的方法出现了**(图1**)。

图1:图片来自Seldon/CC BY-SA 4.0许可

让我们依次看一下每个阶段的情况。我们将看一下发挥作用的方法,并看看MLOps需要什么来激励每种方法。

培训

训练是为了找到从训练数据中提取的最佳模式。我们把这些模式封装在模型中。训练运行的参数可以被调整以产生不同的模型。将最佳模式封装在模型中是探索性的**(图2**)。

图2:图片来自Seldon / CC BY-SA 4.0许可证

为了探索最佳模型的参数,平行运行多个作业是有意义的。这是在一个运行专业培训平台的托管培训环境中进行的。然后,需要选择和打包部署的最佳模型。

数据是这些平台被托管而不是在数据科学家的笔记本电脑上运行的一个重要原因。数据量可能很大。而数据很少开始就准备好用于训练模型。这意味着需要对其进行大量的准备工作。这可能需要大量的时间和硬件资源。出于管理和可重复性的原因,准备操作可能也需要被跟踪。

部署

当我们选择了一个新的模型后,我们需要解决如何让它运行。这意味着确定它是否真的比已经运行的版本更好。它可能在训练数据上表现得更好,但实时数据可能是不同的**(图3**)。

图3:图片来源:Seldon / CC BY-SA 4.0许可证

MLOps的推出策略往往是谨慎的。流量可能在新模式和旧模式之间分割,并监测一段时间(使用A/B测试或金丝雀)。或者流量可以被复制,以便新模型可以接收请求,但只是跟踪其响应,而不是使用(影子部署)。然后,只有当新模型被证明表现良好时,它才会被推广。

我们需要知道一个模型正在安全地执行,以便推广它。这意味着部署需要监控的支持。我们还可以发现,部署可能需要支持一个反馈机制,以实现最佳监控。有时,一个模型做出的预测结果是对的还是错的,例如,客户是否选择了一个建议。为了利用这一点,我们需要一个反馈机制。

为优化而分割流量的一个高级案例是使用多臂匪徒。在多臂匪徒中,流量是以一种持续调整的方式进行分割的。表现最好的模型获得大部分流量,其他模型继续获得一小部分流量。这是由推理图中的一个算法路由器处理的。如果后来数据发生了变化,那么一个表现较差的模型可能会转变为主导模型。

部署可以与监控紧密联系在一起。因此,Seldon等部署工具不仅支持部署阶段的功能,而且还集成了监测阶段的MLOps需求。

监测

只有当你有反馈时,监测模型的准确性才有可能。这是一个监测功能需要部署阶段功能的好例子。在某些情况下,实时准确性可能是关键指标,在其他情况下,自定义的业务指标可能更重要。但这些只是监控的一部分。


图4:图片来源:Seldon / CC BY-SA 4.0 license

ML监控的另一面是看到为什么一个模型表现得好或坏。这需要对数据的洞察力。

模型性能可能下降的一个首要原因是实时数据的变化。如果数据分布偏离了训练数据,那么性能就会下降。这被称为数据漂移或概念漂移。

即使整体分布与训练数据保持一致,一些预测仍然可能出现巨大的错误。如果一些单独的数据点超出了分布范围,就会发生这种情况。在预测需要全面可靠的情况下,这些异常值可能会造成损害。

完全理解一个模型为什么会做出某种预测,可能需要研究一个模型如何做出预测,而不仅仅是输入数据。解释技术可以揭示一个模型的预测所依赖的关键模式,并告诉我们哪些模式适用于一个特定的案例。实现这种水平的洞察力本身就是一个数据科学挑战。

有不同的方法来实现高级监控。在Seldon,我们大量使用了请求的异步记录。记录的请求可以被送入检测器组件,以监测漂移或异常值。请求也可以被存储起来,用于以后的分析,例如解释。

了解MLOps的生命周期

在实践MLOps项目的过程中,有很多东西我们在这里没有涉及。我们还没有谈及估算、日程安排或团队组成。我们甚至还没有深入了解工具的情况[2]。希望我们所取得的成果是理解关键的动机。

我们已经学会了从一系列需求的角度来理解MLOps的生命周期。我们已经看到,ML是关于从数据中提取模式并重新应用这些模式。数据可能是不可预测的,这可能意味着我们必须谨慎地开展工作,我们必须在数据层面进行监控,而不仅仅是错误。

链接和文献

[1] hackernoon.com/why-is-devo…

[2] github.com/EthicalML/a…

The postNext Level Automationappeared first onDevOps Conference.