Azure机器学习Web服务未使用Passed .learner模型

问题描述 投票:1回答:1

我们目前正在努力使Azure Machine Learning Studio实验正常运行。

我们最近的迭代有一个webjob接受队列消息,获取一些数据来训练模型,并使用ML Experiment webservice将训练模型放在blob位置。

第二个webjob接受队列消息,提取要在预测实验中使用的数据,获取训练的.ilearner模型的位置路径,然后消耗THAT ML Experiment webservice。

用于进行预测的数据作为输入参数传递,存储帐户名,密钥和.ilearner路径都作为全局参数传递 - 根据数据科学家提供的内容定义的Dictionary对象。

一切似乎都能正常工作 - 除了在某些情况下,预测性实验失败,并且错误消息清楚地表明正在使用错误的.ilearner文件。

当一个不存在的blob路径传递给实验webservice时,错误消息反映出没有这样的blob,所以很明显web服务至少验证了.ilearner的存在。

数据科学家可以在本地运行它,但是当他通过PowerShell在本地导出时,必须更改.ilearner文件的名称。确保每个训练有素的模型具有唯一的文件名并未解决此问题。

当我在Azure存储资源管理器中查看它们时,所有文件似乎都会根据最后修改日期按预期更新。这几乎就像某个地方的.ilearner的缓存版本没有被正确覆盖。

c# azure web-services azure-webjobs azure-machine-learning-studio
1个回答
1
投票

在排除了传递错误文件的所有可能性后,我们的数据科学家仔细研究了实验本身。他发现这是他在开发过程中使用的一条硬编码的.ilearner路径的默认值。

在某个时间点,他创建了webservice参数来覆盖这个值(因此我在我的webservice调用中定义了它们),但是在实验的重新设计中,任何人注意到它们都被删除了,因为webservice显然会接受多余的论点。

Web服务接受了我的全局参数,显然甚至验证了它们。但由于它们没有连接到实验内部的任何内容,所以传递的.ilearner文件信息从未应用于任何内容 - 无论如何都应用了硬编码的.ilearner。

我们都非常惊讶,没有异常抛出将参数传递给实际未定义的webservice。如果发生这种情况,我们会更快地完成它的底部。

tl / dr:实验未正确配置为接受.ilearner文件路径(或帐户名称或帐户密钥)作为参数,并且Web服务很乐意接受并忽略参数参数而不引发任何警报,因为它具有运行的硬编码值。

© www.soinside.com 2019 - 2024. All rights reserved.