C# Azure MachineLearning Web服务未使用已传递的.ilearner模型
我们目前正在进行Azure MachineLearning Studio实验 我们最近的迭代有一个webjob,它接受队列消息,获取一些数据来训练模型,并使用ML实验webservice将经过训练的模型放在blob位置 第二个webjob接受队列消息,提取用于预测实验的数据,获取经过训练的.ilearner模型的位置路径,然后使用该ML实验webservice 用于进行预测的数据作为输入参数传入,存储帐户名、密钥和.ilearner路径都作为全局参数传入——字典对象根据数据科学家提供的定义 一切似乎都正常工作——除了在某些情况下,预测实验失败,错误消息表明使用了错误的.ilearner文件 当一个不存在的blob路径被传递到实验webservice时,错误消息反映没有这样的blob,因此很明显webservice至少在验证.ilearner的存在 数据科学家可以在本地运行它,但当他通过PowerShell在本地导出.ilearner文件时,必须更改其名称。确保每个经过培训的模型具有唯一的文件名并不能解决此问题C# Azure MachineLearning Web服务未使用已传递的.ilearner模型,c#,azure,web-services,azure-webjobs,azure-machine-learning-studio,C#,Azure,Web Services,Azure Webjobs,Azure Machine Learning Studio,我们目前正在进行Azure MachineLearning Studio实验 我们最近的迭代有一个webjob,它接受队列消息,获取一些数据来训练模型,并使用ML实验webservice将经过训练的模型放在blob位置 第二个webjob接受队列消息,提取用于预测实验的数据,获取经过训练的.ilearner模型的位置路径,然后使用该ML实验webservice 用于进行预测的数据作为输入参数传入,存储帐户名、密钥和.ilearner路径都作为全局参数传入——字典对象根据数据科学家提供的定义 一切
当我在Azure存储资源管理器中查看所有文件时,它们似乎都在根据上次修改的日期按预期进行更新。这几乎就像是在某个地方有一个.ilearner的缓存版本没有被正确覆盖。在排除了所有传入错误文件的可能性后,我们的数据科学家对实验本身进行了更仔细的研究。他发现它默认为一个硬编码的ilearner路径,这是他在开发中使用的路径 在某个时候,他创建了webservice参数来覆盖这个值(因此我在webservice调用中定义了这些参数),但在重新设计实验的过程中,这些参数被删除了,所有人都注意到了,因为webservice显然会接受多余的参数 Web服务接受了我的全局参数,显然甚至验证了它们。但是由于他们没有连接到实验内部的任何东西,因此通过的.ilearner文件信息从未应用到任何东西上——硬编码的.ilearner无论在什么情况下都被应用 我们都非常惊讶,在向webservice传递未实际定义的参数时没有引发异常。如果发生这种情况,我们会更快地找到问题的根源 tl/dr:实验没有正确配置为接受.ilearner文件路径(或帐户名或帐户密钥)作为参数,Web服务很高兴地接受并忽略参数参数,而没有发出任何警报,因为它有硬编码的值来运行