生产机器学习系统:静态训练与动态训练#
两种训练范式#
笼统地说,训练一个模型只有两种方式:
静态训练(也叫离线训练):模型只训练一次,之后有一段时间,你对外提供服务的始终是这同一个训练好的模型。
动态训练(也叫在线训练):持续训练模型,或者至少训练得很频繁,你对外提供的通常是最近一次训练出来的那个模型。
用一个做面包的比喻就能看出区别在哪。静态训练是“面团只和一次面、烤一次,之后一直卖同一炉面包”;动态训练是“面团反复重新和、反复重新烤,每次出炉的面包都略有不同”。


各自的优点与缺点#
| 静态训练 | 动态训练 | |
|---|---|---|
| 优点 | 更简单。模型只需要开发和测试一次。 | 适应性更强。模型能跟上特征与标签之间关系的变化。 |
| 缺点 | 有时会过时。如果特征与标签之间的关系随时间变化,模型的预测质量会退化。 | 工作量更大。你必须一直构建、测试、发布新的产品。 |
到底该怎么选#
如果你的数据集确实不会随时间变化,那就选静态训练——它比动态训练更省钱,创建和维护的成本都更低。
不过通常来说数据集都是会变的,就连那些你自以为像海平面一样恒定的特征,其实也在变。这里想要表达的是,即便采用静态训练,你仍然必须持续监控输入数据的变化。
举个例子,假设有个模型用来预测用户买花的概率。因为赶时间,这个模型只用 7 月和 8 月的购花行为数据训练了一次。这个模型头几个月都工作得好好的,可到了情人节前后,预测就变得一塌糊涂,因为在那个鲜花节日期间,用户的购买行为发生了剧烈变化。
练习:检查你的理解#
第1题:下面关于静态(离线)训练的说法,哪些选项是正确的?
A. 模型会随着新数据的到来不断保持更新。
B. 你可以在把模型用到生产环境之前,先把它验证一遍。
C. 推理时几乎不需要对输入数据做监控。
D. 离线训练需要对训练任务做的监控,比在线训练少。
第2题: 下面关于动态(在线)训练的说法,哪一条是正确的?
A. 模型会随着新数据的到来不断保持更新。
B. 推理时几乎不需要对输入数据做监控。
C. 几乎不需要对训练任务做监控。
关键术语:
- 动态训练(Dynamic training)
- 静态训练(Static training)