【问题标题】:Azure ML Web Service + Python for Querying Pandas Data FrameAzure ML Web Service + Python 用于查询 Pandas 数据框
【发布时间】:2017-11-14 09:13:44
【问题描述】:

我想将 Azure ML Web 服务用于 Python 的非机器学习任务。目标如下:

我有一个这样的 Pandas DF:

   Id   Value
0  111  0.1
1  222  7.3
2  333  3.1
3  444  5.0

我可以成功查询到这个DF(某行的Id取值是多少?):

float(df.loc[pot['Id'] == 222, 'Value'])

现在,我想在 Azure ML Web 服务中部署一个具有此功能的函数,其中一个函数使用上传的数据集作为修复查找表。我构造了一个函数,它获取一个 Id 号作为参数,在预上传数据集中查找该值并将其作为浮点数返回:

from azureml import services
import pandas as pd

@services.publish(workspace_id, workspace_token)
@services.types(id=int)
@services.returns(float)
def my_func(id):
    my_df = ws.datasets["uploaded_df.csv"].to_dataframe()
    return float(my_df.loc[cent['Id'] == id, 'Value'])

我可以将它部署在 Azure Web 服务上,但是当我尝试运行测试查询时它卡住了(甚至无法窥探细节)。这里有什么问题?

【问题讨论】:

    标签: python azure azure-web-app-service azure-machine-learning-studio


    【解决方案1】:

    让我首先准确描述一下这里发生了什么,以帮助您更好地理解它失败的原因。

    @services 注解有什么作用?

    1. 它实际上在 AML Studio(studio.azureml.net 或区域等效)中使用单个“执行 Python 脚本”模块构建了一个实验 DAG
    2. 其内容解压您定义的函数并将其应用于传入数据

    Workspace 对象有什么作用?

    它连接到提供的 Studio API,并可以提取您在“ws.datasets”中使用的数据集。

    那么为什么它不起作用呢?

    它不起作用,因为 EPS 现在在没有网络访问的多租户服务中运行,并且您的函数现在被沙箱阻止(即使您要重新初始化函数内的工作区对象 - 我不知道当 http 客户端关闭并稍后再水化时实际会发生什么)

    我能做什么?

    1. 可以添加attach注解更直接解决我在这里看到的第一个问题:https://github.com/Azure/Azure-MachineLearning-ClientLibrary-Python/blob/master/azureml/services.py#L68
    2. 我个人会将代码复制到 Studio 并从那里发布 Web 服务 - 这样您就可以在部署服务之前迭代代码并更快地查看错误消息,这更难诊断

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多