模型注册与候选晋级
本节目标
理解模型版本、别名、签名和晋级证据,避免把“上传了一个模型”误认为“可以上线”。
注册表管理什么
模型注册表(model registry) 是模型制品及其元数据的受控目录。一个注册模型可有多个不可混淆的版本,每个版本应关联:
- 来源 run 和训练数据快照;
- 模型制品及内容摘要;
- 依赖环境与预处理器;
- 输入输出签名;
- 离线评测报告和适用范围;
- 创建者、审批、风险说明和当前状态。
注册表解决“它是谁、从哪来、被如何使用”,不自动回答“它是否正确”。错误模型也能被完美登记。
版本与别名
版本 应指向固定制品;别名 是可移动的人类可读指针,例如 candidate 或 champion。发布系统读取别名前,最好解析并记录其实际版本与摘要,避免任务运行到一半时别名被改动。
MLflow 当前文档推荐用 model aliases、tags,或按环境拆分注册模型等方式管理生命周期;旧式固定 Stage 已被弃用。工具界面会变化,但“不可变版本 + 可审计指针”这一原则更稳定。
输入输出签名
模型签名描述模型接受和返回的数据形状、类型与字段。例如:
输入:age: integer, region: string, events_30d: integer
输出:risk_score: number in [0, 1]签名能拦截字段缺失或类型错误,却无法证明语义正确。events_30d 从“最近 30 天事件数”变成“最近 30 个事件”时,类型仍相同,所以还需要数据契约与语义版本。
从候选到可发布版本
候选晋级可以分为四层证据:
- 完整性:数据、代码、环境、签名和制品可追溯;
- 正确性:单元测试、数据测试、推理冒烟测试通过;
- 有效性:在冻结评测集和关键切片上满足本项目定义的门槛;
- 可运营性:延迟、资源、依赖、回滚制品和负责人就绪。
阈值不能从教程照抄。关键切片允许多大回退、延迟预算是多少,应由业务损失、风险容忍度、基线波动和测量不确定性共同决定,并保存在版本化策略中。
Champion/Challenger 不是“新模型一定替换旧模型”
- Champion:当前被信任的参考版本;
- Challenger:等待离线或线上比较的候选。
Challenger 可以因为某个关键切片退化而被拒绝,即使整体指标更高。对于标签延迟长的任务,还可能先做影子运行,仅收集比较证据而不影响用户。
常见错误
- 版本名包含
latest,却没有解析到固定摘要; - 模型与预处理器分开更新,导致输入含义错位;
- 只看整体平均指标,忽略高风险群体;
- 用注册表状态代替独立审批和评测证据;
- 别名切换后删除旧制品,使回滚名存实亡。
练习与自测
为一个房价模型设计注册条目,列出签名、训练快照、关键切片和回滚信息。然后判断:
- 候选 RMSE 更低,但某城市误差显著变差,能否直接晋级?
champion别名足以作为审计记录吗?还应保存什么?- 为什么模型注册表不能替代制品仓库的完整性校验?
小结与下一步
注册表提供身份与血缘,晋级门提供决策证据。下一步将这些检查自动化,见 CI、CD 与自动化质量门。
参考资料
- MLflow Model Registry 工作流(核对于 2026-07-14;页面说明 Model Stages 自 MLflow 2.9.0 起弃用)
- MLflow Model Deployment(核对于 2026-07-14)