【问题标题】:Azure Machine Learning Request Response latencyAzure 机器学习请求响应延迟
【发布时间】:2016-01-25 10:40:39
【问题描述】:

我做了一个 Azure 机器学习实验,它采用一个小数据集(12x3 数组)和一些参数,并使用一些 Python 模块(线性回归计算等等)进行一些计算。这一切都很好。

我已经部署了实验,现在想从我的应用程序的前端向它抛出数据。 API 调用进入并返回正确的结果,但计算简单的线性回归最多需要 30 秒。有时是 20 秒,有时只有 1 秒。我什至一次将它降低到 100 毫秒(这是我想要的),但 90% 的请求需要超过 20 秒才能完成,这是不可接受的。

我想这与它仍然是一个实验有关,或者它仍处于开发阶段,但我找不到让它在更快的机器上运行的设置。

有没有办法加快我的执行速度?

编辑:澄清:使用相同的测试数据获得不同的时间,只需多次发送相同的请求即可。这让我得出结论,这一定与我的请求被放入队列有关,有一些启动延迟,或者我以其他方式受到限制。

【问题讨论】:

    标签: python azure azure-machine-learning-studio


    【解决方案1】:

    首先,我假设您正在发布的 AML 端点上进行时间测试。

    当调用 AML 时,第一次调用必须预热容器。默认情况下,Web 服务有 20 个容器。每个容器都是冷的,一个冷的容器会导致很大的(30 秒)延迟。在 AML 端点返回的字符串中,仅计算 isWarm 标志设置为 true 的请求。通过使用许多请求(相对于您正在运行的容器数量)破坏服务可以使所有容器变暖。

    如果您要向一个实例发送数十个请求,则端点可能会受到限制。您可以通过访问 manage.windowsazure.com/ 来调整端点可以接受的呼叫数量

    1. manage.windowsazure.com/
    2. 左侧栏中的 Azure ML 部分
    3. 选择您的工作区
    4. 转到网络服务标签
    5. 从列表中选择您的网络服务
    6. 使用滑块调整调用次数

    通过在端点上启用调试,您可以获得有关每个模块完成的执行时间的日志。您可以使用它来确定模块是否未按预期运行,这可能会增加时间。

    总的来说,使用 Execute python 模块时会有开销,但我希望这个请求可以在 3 秒内完成。

    【讨论】:

    • 你的回答和this article一起让我明白了问题所在:默认情况下,分配了20个容器,一开始都是冷的。我没有进行并发调用,也没有进行很多更新,所以我经常调用其​​中一个冷容器,这大约需要 30 秒。只有在击中所有容器后,才能保证获得快速响应。为了测试,我降级到 4 个容器,这意味着我从 4 个慢速调用开始,之后所有容器都是热的。
    • 谢谢,我会复习这篇文章并将我错过的任何内容添加到答案中。
    • 这些“酷”的容器很不方便。假设我更新 web 服务,客户端发出的前 20 个请求会很慢(取决于设置中的并发调用数,会更糟)。有没有办法告诉所有容器在部署后“预热”?
    • 正在重新考虑端点的整体管理方式。今年寻找可以简化这种体验的改进。但是,就目前而言,如果您无法承受冷藏集装箱的时间延迟,请查看此内容,github.com/paveldournov/RRSWarmer
    • @DanCiborowski-MSFT 这是否仍然适用于 Web 服务的新门户?在发回响应之前,我仍然遇到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2015-03-15
    • 2012-11-20
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多