入门:管理模型
在本指南中,我们将使用 DVC Studio 来管理模型注册表。你可以在 DVC Studio 中查看我们的 示例模型,了解完成本指南所有步骤后的最终效果。
要执行本指南中的模型注册表操作,请按照以下步骤登录 DVC Studio,将其连接到你的 Git 账户,并将你的仓库添加为 DVC Studio 项目。
现在我们已经添加了一个模型,如果你进入 DVC Studio 的“模型”标签页并选择 pool-segmentation
模型,你应该会看到类似下图的内容。
你还可以查看此时项目的状态,该状态已记录在我们的示例仓库中。
在后台,DVC Studio 使用一个名为 GTO 的命令行工具来执行大多数模型注册表操作。
你也可以在本地使用 GTO 设置模型注册表,而无需 DVC Studio。本章的可展开“底层原理”部分展示了具体实现方式。
模型版本管理
现在我们的模型注册表中已经有了第一个模型,可以开始为该模型注册模型版本了。我们通过选择模型开发历史中的某个特定提交,并为其附加一个版本号,以便更方便地进行追踪。你现在可以直接在 DVC Studio 用户界面中完成此操作,如下所示。
由于我们在最新的提交中已将模型保存至 DVC 并添加到了模型注册表,因此我们可以保留 DVC Studio 自动选中的提交。同时,我们也保留建议的版本号 v1.0.0。
一旦我们注册了第一个模型版本,DVC Studio 还会自动将其与实验跟踪关联起来,所有在此处跟踪的指标也会显示在模型注册表的每个模型版本中。
使用 DVC Studio 注册模型版本的操作,等价于以下 GTO 命令
gto register pool-segmentation [ref] --version v1.0.0
其中,[ref]
是我们在 DVC Studio 菜单中选择的 Git 引用/哈希值。
更多详情请参考gto register 命令参考文档。
分配生命周期阶段
我们已经有了模型的第一个版本,现在是为其分配模型生命周期阶段的好时机。你可以创建任意数量、任意名称的生命周期阶段,但在本示例中,我们仅创建两个阶段:“dev”和“prod”。
每当模型版本被分配到某个阶段时,就会创建该阶段。现在,你可以将模型版本 1.0.0 分配给 "dev" 阶段,操作如下。
当我们把模型分配到某个阶段时,可以自动触发 CICD 工作流中的操作,例如将模型部署到新的环境(我们将在 使用和部署模型 章节中探讨具体实现方式)。
使用 DVC Studio 将 "dev" 阶段分配给模型的操作,等价于以下 GTO 命令。
gto assign pool-segmentation --version v1.0.0 --stage dev
更多细节请参考 gto assign 命令文档。
更改(和移除)阶段分配
假设我们已决定将模型版本 1.0.0 提升至生产环境,并表明它不再处于 "dev" 阶段。首先,像之前对 "dev" 阶段所做的那样,将该模型版本分配到 "prod" 阶段。
现在,若要从模型版本 1.0.0 中移除 "dev" 阶段,仅保留其在 "prod" 阶段的分配,请按照以下步骤操作:
还可以注销模型版本,或将模型完全从注册表中弃用并删除。具体操作方法请参阅相关文档。
此时,注册表中该模型的详细视图应与我们在 示例中看到的内容 一致。
每次我们取消阶段分配、注销模型版本或弃用模型时,DVC Studio 都会在底层使用 GTO 库。你也可以手动使用 GTO 来执行这些操作。具体方法请参考 gto deprecate 命令文档。
审计模型历史
我们在模型注册表中执行的每项操作都会留下记录,以便审计模型历史。如果你现在查看该模型的详情页面,应该会看到类似如下内容:
正如我们前面提到的,DVC 使用特殊的 Git 标签来跟踪模型注册表的操作,因此所有这些历史记录实际上都直接存储在你的 Git 仓库中。DVC Studio 可以解析这些标签,并以用户友好的方式展示给我们。
如果你查看 示例仓库中的标签,就会发现我们执行的所有模型注册表操作都被这些标签所记录。在下一节中,我们将学习如何利用这些标签来访问模型版本,并触发自动化部署或其他 CICD 工作流。