机器学习平台是一款集数据集、特征工程、模型训练、评估、预测、发布于一体的全流程开发和部署的工作平台。其数据量大、数据多样性、支持算法种类多,加上算法模型结果不确定、集成复杂等等特点;这会给QA的工作带来怎样挑战、以及如何克服,本文一一揭晓。
在谈测试机器学习平台带给QA的挑战之前,先了解一下机器学习平台是什么?
机器学习平台是一款集数据集、特征工程、模型训练、评估、预测、发布于一体的全流程开发和部署的工作平台,为数据科学家提供端到端的一站式的服务,帮助他们脱离繁琐的工程化开发,从而帮助他们提高工作效率。
在介绍机器学习平台之前,首先看一下数据科学家日常工作是怎样的?
数据科学家的工作
数据科学家日常工作就是把一个模糊的问题转化成一个具体的数据问题,运用数据科学的方法解决掉这个问题。
举例说明:
广告供应商老大,要求数据科学家小博用模型去估计广告点击率,以便给什么用户推荐什么广告,增加用户的点击率。小博思考,广告被点击是1,没有被点击是0,这是个二分类问题,可以用简易的逻辑回归模型来预测用户点击的概率。小博开始行动如图1:

图1. CTR问题解决步骤
即数据科学家们的日常工作流程有:
机器学习平台的主要业务
简单理解,机器学习平台就是帮助数据科学家工作变得更简单、高效。所以,机器学习平台不仅集成了各种机器学习组件(算子)和算法,提供了友好的可视化界面,可以通过简单的拖拉拽来构建复杂的Pipeline,使得数据科学家日常工作更简便、高效。即机器学习平台主要业务包括(如图2):

图2. 机器学习平台的主要业务模块
机器学习平台提供的业务功能模块:
QA面临的挑战
了解了机器学习平台的主要业务功能后,谈谈机器学习平台测试过程中,QA所面临的挑战,以及在实践的所使用的应对方案。
1. 机器学习领域太多的算法,QA难以短期内熟悉所有算子与算法;有些组件(算子)计算原理复杂,超出QA的计算能力,比如:PCA。这种情况,怎么测正确性?
在Jupyter Notebook自己写代码直接调用Spark或Angel算子,传入同样数据集,通过对比结果验证。
以上这些Case构建自动化,或直接在Local或QA环境上备份pipeline,每当增加一个新组件(算子),除了单测新组件各种逻辑之外,再把它集成到原有的pipeline上验证。
3. 数据类型太多、数据值各样。场景太多怎么测?
在大数据项目上,数据即Case。准备好一套脚本,在集群上一键创建包含了所有数据类型与不同数据值的数据集。比如,每次SignOff或QA环境上测试时,这一个完整的数据集搞定全部场景验证。
4. 模型训练结果没有确定的答案,怎么测。
通过模型性能指标来检验模型结果的好坏。比如:准确率、精确率、召回率、AOC曲线、F1-Score。
5. 每个不同模型算法的训练数据集与测试数据集怎么准备。当数据集准备的不好时,直接影响模型训练结果。
6. QA不是数据科学家,调参不专业,评估指标结果一直很差,无法判断是调参问题还是代码有问题?怎么办?
7. QA环境资源有限,大数据集提交到集群上训练,资源占满block其它任务执行,而且每次耗时在几十分钟或几个小时,怎么办?
以上是在机器学习平台项目中QA遇到的挑战与应对方案,希望有相关经验的朋友一起交流。