如何测试机器学习系统

从概念到实用的代码片段,实现有效测试图片来自作者软件开发中的测试至关重要,因为它可以保证交付给客户的价值。交付成功的产品不是一次性的努力;而是一个持续的过程。为了确保持续交付,我们必须定义成功,整理数据,然后训练和部署我们的模型,同时持续监控和测试我们的工作。为了持续交付,我们必须定义成功,整理数据,然后训练和部署我们的模型,同时持续监控和测试我们的工作。机器学习系统中的“信任”不仅仅需要测试;它必须集成到整个生命周期中(如我的另一篇博客所示)。TRUST 的机器学习流程可以在“如何以合理的方式在机器学习中构建 TRUST”中描述(图片来自作者)。在深入讨论详细部分之前,这里有一个简短的 TL;DR,供大家参考,然后是针对 ML 从业者量身定制的更深入的信息。TL;DR 测试机器学习很难,因为它本质上是概率性的,必须考虑多样化的数据和动态的现实条件。您应该从基本的 CI 管道开始。专注于对您的用例最有价值的测试:语法测试、数据创建测试、模型创建测试、E2E 测试和工件测试。大多数时候,最有价值的测试是 E2E 测试。为了了解每种测试带来的价值,我们定义了下表:https://medium.com/media/4715fe4d614

来源:走向数据科学

4. E2E 测试

E2E 测试

机器学习中的 E2E 测试涉及测试管道的组合部分,以确保它们按预期协同工作。这包括数据管道、特征工程、模型训练以及模型序列化和导出。主要目标是确保模块在组合时正确交互,并满足系统和模型标准。

主要目标是确保模块在组合时正确交互,并满足系统和模型标准。

进行 E2E 测试可降低部署失败的风险并确保有效的生产运行。重要的是保持断言部分不脆弱,集成测试的目标是确保管道有意义,而不是它是正确的。

集成测试通过验证机器学习工作流程的不同部分来确保凝聚力。它可以检测系统范围内的问题,例如数据格式不一致和兼容性问题,并验证端到端功能,确认系统满足从数据收集到模型输出的总体要求。

由于机器学习系统复杂且脆弱,您应该尽早添加集成测试。

由于机器学习系统复杂且脆弱,您应该尽早添加集成测试。

以下代码片段是整个 ML 管道的集成测试:

验证机器学习工作流的端到端集成,从数据采样到模型训练、导出和推理,确保预测有效。
验证机器学习工作流的端到端集成,从数据采样到模型训练、导出和推理,确保预测有效。

由于集成测试的复杂性和资源需求以及执行时间,因此需要仔细规划。即使对于集成测试,规模较小的测试也更好。这些测试的设置和维护可能很复杂,尤其是在系统扩展和发展时。