使用Azure SQL Server作为Azure ML培训服务输入参数

时间:2017-10-28 12:31:15

标签: machine-learning azure-sql-database azure-machine-learning-studio input-parameters

我是Azure ML Studio的新手,并尝试弄清楚如何使用Azure SQL Server作为训练输入参数。 到目前为止,我可以将本地数据同步到Azure SQL数据库并训练数据并在Azure ML Studio上获取输出。 我也部署了预测网络服务。 我需要触发培训服务以从Azure SQL服务器读取数据,但所有示例都将Azure blob存储显示为培训服务输入。

  1. 有没有办法使用Azure SQL Server作为训练输入参数,从该数据库中读取整个训练数据并更新训练模型?
  2. 我是否需要将经过培训的模型保存到Azure Blob存储中以用于预测服务,或者在培训批处理作业完成后它是否会更新并且预测服务会自动使用经过培训的模型开始?

2 个答案:

答案 0 :(得分:0)

关于培训,您将需要使用导入数据模块。在那里,您可以指定如何连接到Azure SQL数据库。

本文可能会为您提供一个好的pointer,它展示了如何使用Azure数据工厂来同步实验的再培训。

答案 1 :(得分:0)

我发现在文档中很难找到,但发现这个链接我能够成功运行批处理执行而不上传blob。 https://docs.microsoft.com/en-us/azure/machine-learning/studio/web-services-that-use-import-export-modules

关键部分是:

  • 将C#示例代码复制并粘贴到Program.cs文件中,和 删除对blob存储的所有引用

  • 找到请求声明并更新Web Service的值 传递给导入数据和导出数据的参数
    模块。在这种情况下,您使用原始查询,但定义新的 表名。

为导入查询和目标表配置Web服务参数:

在“导入数据”模块的属性窗格中,单击“数据库查询”字段右上角的图标,然后选择“设置为Web服务参数”。 在“导出数据”模块的属性窗格中,单击“数据表名称”字段右上角的图标,然后选择“设置为Web服务参数”。 在“导出数据”模块属性窗格的底部,在“Web服务参数”部分中,单击“数据库查询”并将其重命名为“查询”。 单击“数据表名称”并将其重命名为“表”。

 var request = new BatchExecutionRequest() 
 {           
     GlobalParameters = new Dictionary<string, string>() {
         { "Query", @"select [age], [workclass], [fnlwgt], [education], [education-num], [marital-status], [occupation], [relationship], [race], [sex], [capital-gain], [capital-loss], [hours-per-week], [native-country], [income] from dbo.censusdata" },
         { "Table", "dbo.ScoredTable2" },
     }
 };

将数据库作为加载数据模块源后,您无需在培训模块上输入Web服务。您还可以将数据库查询设置为Web参数。一旦运行批处理执行作业以重新训练模型,就可以将它们存储在Azure blob存储中,并让您的预测模型在运行时使用“加载训练模型”模块而不是经过训练的模型模块从那里加载它们。请参阅此链接以了解该程序:

https://blogs.technet.microsoft.com/machinelearning/2017/06/19/loading-a-trained-model-dynamically-in-an-azure-ml-web-service/

简而言之:

使用SQL数据库作为导入数据模块的源

运行批处理执行过程,以您想要的任何间隔重新训练模型

将重新训练的模型(ilearner文件)保存到blob存储区,或者保存在可访问的http地址

在预测实验中使用负载训练模型模块,而不是训练模型。

将您的blob或url的路径放入已加载训练的模型模块的参数中。

使用动态加载的模型运行,发布和测试预测性实验

注意,如果您的实验中有多个模型,则可以使用此方法。