【问题标题】:Using Azure SQL Server as Azure ML Training Service Input Parameter使用 Azure SQL Server 作为 Azure ML 训练服务输入参数
【发布时间】:2017-10-28 12:31:15
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我发现这在文档中很难找到,但发现这个链接我能够成功运行批处理执行而无需上传 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 服务参数部分,单击数据库查询并将其重命名为查询。 点击数据表名,重命名为Table。

       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 的路径放入负载训练模型模块的参数中。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 2019-11-08
        • 1970-01-01
        相关资源
        最近更新 更多