与任何其他分布式系统一样,关于机器学习系统功能是否正确运行的信息是有效且可靠地操作它的关键。确定“正确”运行的主要指标显然仍是产品和业务人员的职责。数据工程师将识别信号,软件工程师和站点可靠性工程师将帮助实施数据收集、监控和发出警报等。
这与之前的SLO讨论密切相关,因为监控信号通常直接用于SLO的选择或构建。在这里,我们稍微深入地探讨一下监控信号的类别:
系统健康或黄金指标信号
这些与任何非机器学习信号都没有什么不同。将端到端系统视为数据提取、处理和服务系统,并相应地对其进行监控。进程是否正在运行?他们是否有改进?是否有新数据到达等(第9章会有更多详细信息)。机器学习的复杂性很容易让人分心。然而,重要的是,要记住机器学习系统也是系统。它们具有所有与其他分布式系统相同的故障模式,以及一些新颖的故障模式。不要忘记最基本的,这是 黄金指标 监控方法背后的理念:找到能够代表系统整体行为的通用的、高级别的指标。
基本模型健康或通用机器学习信号
检查机器学习中的基本模型健康指标与检查系统健康等价:它不是特别复杂,也不是与领域紧密耦合,而是包括关于建模系统的基本和代表性的事实。新模型是否符合预期大小?它们可以无误地加载到我们的系统中吗?在这种情况下,关键的标准是,是否需要了解模型的内容才能进行监控。如果不需要,所做的监控就是基本模型健康问题。这种与模型内容无关的方法具有很大的价值。
模型质量或特定领域信号
最难监控和检测的是模型质量。在与运行相关的模型质量问题和改进模型质量的机会之间并没有严格的界限。例如,如果我们的模型为我们网站上购买针而不是纱线的人所生成的推荐很差,这可能是一个改进模型的机会(如果这种质量水平满足发布标准),或者这可能是一个需要立即响应的紧急事件(如果这是最近的回归)
。不同之处在于其背景。对于大多数站点可靠性工程师,这也是机器学习系统最难的方面:没有能够客观衡量模型质量“足够好”的标准,更糟糕的是,这是一个难以衡量的多维度问题。最终,产品和业务负责人将不得不建立真实世界的指标,以验证模型是否满足他们的要求,而机器学习工程师和站点可靠性工程师需要共同努力确定与那些要求最相关的质量指标。
作为循环中的最后一步,我们需要确保我们的终端用户与模型交互的方式能够返回到下一轮数据收集中,并准备好再次进行循环。机器学习服务系统应该记录所有其认为有用的内容,以便将来进行改进。通常情况下,收到的查询、提供的答案以及为什么提供这些答案都会被记录下来。“为什么”可以像单一的相关性评分一样简单,也可以是更复杂的甚至影响决策的因素的集合。
我们完成了第一次机器学习循环,并准备好重新开始。至此, yarnit.ai 应该至少添加了最小限度的机器学习功能,我们也应该开始不断地改进它,要么通过改进第一个模型,要么通过确认可以用机器学习手段改进的网站的其他方面。