我做了一个Azure机器学习实验,它采用一个小数据集(12x3数组)和一些参数,并使用一些Python模块进行一些计算(线性回归计算等等)。一切正常。
我已经部署了实验,现在想从我的应用程序的前端向它投掷数据。 API调用会进入并返回正确的结果,但计算简单的线性回归最多需要30秒。有时它是20秒,有时只有1秒。我甚至一次将它降低到100毫秒(这是我想要的),但90%的时间请求完成时间超过20秒,这是不可接受的。
我想这与它仍然是一个实验有关,或者它仍然在开发槽中,但我找不到设置让它在更快的机器上运行。
有没有办法加快执行速度?
编辑:澄清:使用相同的测试数据获得不同的时序,只需多次发送相同的请求即可。这让我得出结论,它必须与我的请求被放入队列有关,有一些启动延迟或者我以某种其他方式受到限制。
答案 0 :(得分:8)
首先,我假设您正在对已发布的AML端点进行时序测试。
当呼叫AML时,第一次呼叫必须预热容器。默认情况下,Web服务有20个容器。每个容器都是冷的,冷容器会导致很长(30秒)的延迟。在AML端点返回的字符串中,仅计算isWarm
标志设置为true的请求。通过使用MANY请求粉碎服务(相对于您运行的容器数量),可以使所有容器变暖。
如果您发送了几十个实例请求,端点可能会受到限制。您可以通过访问manage.windowsazure.com /
来调整您的终端可以接受的呼叫数量通过在端点上启用调试,您可以获取有关每个模块的执行时间的日志。您可以使用它来确定模块是否未按预期运行,这可能会增加时间。
总的来说,使用Execute python模块时会产生开销,但我希望这个请求能在3秒内完成。