Skip to content

版本控制与模型注册表

Version Controlling and Model Registry

现实中的 ML 部署绝不仅仅是“部署”这么简单——把模型托管到某处、获得一个 API 端点(endpoint)、把它集成到应用里,就完事了!这是因为在实际中,部署之后还有大量工作要做,以确保模型的可靠性和性能。

ds p92 1

首先,对 ML 部署进行版本控制(version control)极为关键。例如,你在使用 ChatGPT 时可能就注意到了这一点。

但更新并不只是简单地覆盖之前的版本。相反,ML 模型始终是受版本控制的(使用 git 工具)。

ds p92 2

对 ML 部署进行版本控制的优势相当明显:

  • 如果部署后突然出现问题,我们可以立即回滚到旧版本。
  • 我们可以借助分支(branching)来推动并行开发,还有许多其他好处。

另一个实用的想法是为部署维护一个模型注册表(model registry)。让我们来理解它是什么。

ds p93 1

简单来说,模型注册表可以看作是模型的仓库。要知道,通常我们会倾向于把代码和 ML 模型一起进行版本控制:

ds p93 2

然而,当我们使用模型注册表时,我们会把模型与代码分开进行版本控制。让我给你一个直观的例子来更好地理解这一点。假设我们部署的模型需要三个输入才能生成一个预测:

ds p93 3

在编写推理代码时,我们忽略了有时候其中某个输入可能会缺失。我们是通过分析模型的日志才发现这一点的。

ds p93 4

在更具体地决定下一步之前,我们可能希望先快速修复这个问题(至少暂时如此)。因此,我们可能决定更新推理代码,为缺失的输入赋一个占位值。

ds p94 1

这样模型仍然能够处理接入的请求。让我问你一个问题:“我们更新模型了吗?”没有,对吧?这里我们只需要更新推理代码。模型保持不变。

ds p94 2

但如果我们把模型和代码一起进行版本控制,就会产生冗余的模型并占用额外空间。而通过维护模型注册表:

  • 我们可以只更新推理代码。
  • 避免把一个新的(但其实并不需要的)模型推送到部署中。

这也符合直觉,不是吗?

本站内容仅供学习交流,版权归原作者所有。