Azure MachineLearning WebService 未使用传递的 .ilearner 模型



我们目前正在努力使 Azure 机器学习工作室试验可操作。

我们最近的迭代有一个 Web 作业,该作业接受队列消息,获取一些数据来训练模型,并使用 ML 试验 Web 服务将训练的模型放在 Blob 位置。

第二个 Web 作业接受队列消息,拉取要在预测实验中使用的数据,获取经过训练的 .ilearner 模型的位置路径,然后使用该 ML 实验 Web 服务。

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

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

将不存在的 blob 路径传递到实验 Web 服务时,错误消息会反映没有此类 Blob,因此很明显,Web 服务至少验证了 .ilearner 的存在。

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

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

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

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

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

我们都非常惊讶,没有关于将参数传递给实际未定义的 Web 服务的异常。如果发生这种情况,我们会更快地深入了解它。

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

相关内容

  • 没有找到相关文章

最新更新