Skip to content

在生产环境中测试 ML 模型的 4 种方法

4 Ways to Test ML Models in Production

尽管我们已经在本地(在验证集和测试集上)对 ML 模型进行了严格的测试(testing),但直接用新模型立刻替换之前的模型,可能是个糟糕的主意。

ds p89 1

一个更可靠的策略是在生产环境(production)中测试模型(没错,就是在真实接入的数据上)。虽然这听起来有风险,但 ML 团队一直在这么做,而且并没有那么复杂。下面的示意图展示了 4 种常用策略:

ds p89 2

  • 当前模型被称为旧模型(legacy model)。
  • 新模型被称为候选模型(candidate model)。

ds p90 1

  • 在旧模型和候选模型之间非均匀地分配接入的请求。
  • 有意限制候选模型的曝光量,以避免任何潜在风险。因此,发送给候选模型的请求数量必须很少。

ds p90 2

  • 在 A/B 测试(A/B testing)中,由于流量会被随机重定向到任意一个模型而不区分用户,所以可能会影响所有用户。
  • 在金丝雀测试(canary testing)中,候选模型会先发布给生产环境中的少部分用户,然后逐步推广给更多用户。

ds p91 1

  • 这种做法会在响应中混合多个模型的预测结果。
  • 以亚马逊的推荐引擎为例。在交错部署(interleaved deployment)中,首页上展示的部分商品推荐可以来自旧模型,而另一些可以来自候选模型。

ds p91 2

  • 上述所有技术都会影响部分(或全部)用户。
  • 影子测试(shadow testing,又称暗发布)让我们可以在生产环境中测试新模型,而不会影响用户体验。
  • 候选模型与现有的旧模型一同部署,并像旧模型一样处理请求。但是,其输出不会返回给用户,而是被记录下来,供日后与旧模型进行性能对比基准测试。
  • 我们之所以显式部署候选模型而不是离线测试,是因为生产环境很难在离线条件下复现。影子测试提供了在生产环境中对候选模型进行无风险测试的机会。

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