可复现听起来像研究圈的讲究,直到第一次有人问:为什么上个季度那个模型表现不一样。那时它就变成了一个带期限的业务问题。
答案需要的不只是代码,还有当时那份数据。
必须钉住的东西
- 数据集版本,带内容哈希
- 过滤器和它们的版本
- 模型自身的版本与参数
- 当时那个评测集的样子
- 训练开始的日期和时间
少任何一样,重建就变成了近似。
不可变,而不只是有版本号
一个版本号指向还能被编辑的数据,那不是版本。一个集合发布之后,追加就是新版本,修改就是新集合。
被拒的行也要留
一次训练同样由「被排除的东西」塑形。拒绝清单没存,重跑就会悄悄把原本不在里面的行加进来。
定期演练重建
每个季度,故意重建一次旧的运行并对比。差异会告诉你,你流程里的哪一环其实没有钉住。
Zovda 通过 Datuva 交付每一批数据时都带内容哈希和不可变快照。数据研究语料展示了一次运行是怎么被描述的。
告诉我们哪些东西以后必须能解释,我们会在 1 个工作日内回复。
