MLOps - 如何刷新 ML 模型

MLOps - How to refresh a ML model

下图显示了我公司用于管理模型生命周期的两条管道。

(模型和应用程序)将一起部署在我们的编排器(一个 kubernetes 集群)中。

我处于应用程序逻辑未更改但模型更改的情况。 我可能会发现自己处于以下情况。

我想有两种方法可以管理编排器上的 运行 时间模型刷新(希望有人建议我其他我没有考虑过的可能性):

  1. 在应用逻辑中;代码通过采用新模型通过线程管理刷新。
    • 优点:没有生成新的容器
    • 缺点:能够引入错误。
  2. 通过管道;管道必须由事件触发(在我的例子中是 git 分支上的合并)并通过执行滚动更新来引入容器。 运行 处的新容器将加载新模型。
    • 优点:现有流程
    • 缺点:模型的每个新版本都应该提供容器的新构建,即使应用程序逻辑没有改变。

[问题] 有人可以向我推荐这些案例的最佳实践(可能通过图像上的标签系统)吗?

谢谢 基普利科

最无缝的方法是通过 k8s/kubectl 执行 rolling update。这将需要一个新容器,但是,这被认为是最佳实践,因为每个容器都保持原子性和可重现性。通过线程更新模型很难调试。

您可以做的另一种情况是 blue-green deployment 使用 Istio,并在旧模型和新模型之间缓慢移动流量,尽管这需要更多的开销。