2.2.2 测试查询
最后,让我们查询模型并监控结果。完整性检查(sanity check)是一个简单的测试,确保我们的模型做出的预测在理论上是合理的。例如,我们试图猜测写的是什么数字。如果模型返回的答案是77、orange Kool-Aid或者ERROR,则它们都不能通过完整性检查。我们希望看到0~9之间的数字。在投入生产前对模型进行完整性检查是一个明智的选择。
Web用户界面和模型服务通过同一个Istio网关暴露。所以,模型将在http://<WEBUI_URL>/seldon<mnist-classifier/api<v0.1/predictions上提供。如果你正在使用Google IAP,可能会发现iap_curl项目对请求很有帮助。
Python脚本(https://oreil.ly/Kubeflow_for_MLch02)可以从MNIST数据集中提取图像、将其转化为向量、显示图像和将其发送到模型。将图像转化为向量通常是预测前转换的一部分,详见第8章。例2-11是一个相当清晰的Python例子,演示了如何查询模型。该模型返回一个10个数字的JSON数据结构,以及提交的向量是否代表一个特定数字的概率。
具体来说,我们需要一个手写数字的图像,该图像可以被转换成值的数组。
例2-11:模型查询示例
例如,见图2-4中手写的3。
图2-4:手写数字3
这将返回以下内容:
可以看到,尽管我们写了一个很清楚的3,但模型的最佳猜测在1和7之间。也就是说,RandomForestClassifier对于手写数字识别来说是一个糟糕的模型,但这并不是一个令人惊讶的结果。我们使用RandomForestClassifier的原因有两个:一是为了说明第8章中模型的可解释性;二是为了让你可以用更合理的模型进行实验,从而比较性能。
虽然我们在这里部署了端到端的示例,但没有进行任何真正的验证,你应该在将其投入真正的生产之前始终进行验证。