8

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

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

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

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

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

4

1 回答 1

8

首先,我假设您正在发布的 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 秒内完成。

于 2016-01-26T18:20:06.127 回答