1

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

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

2 回答 2

0

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

这篇文章可能会给你一个很好的指导,它展示了如何使用 Azure 数据工厂来同步实验的再训练。

于 2017-10-29T14:32:41.067 回答
0

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

关键部分是:

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

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

为导入查询和目标表配置 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 的路径放在负载训练模型模块的参数中。

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

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

于 2018-05-25T00:51:17.357 回答