在ACI或AKS上部署的AMLS模型的服务超时为1分钟

时间:2019-09-23 15:04:16

标签: azure azure-kubernetes azure-container-instances azure-machine-learning-service

我们已经在机器学习服务上创建了图像评分模型,并在ACI和AKS上都使用AMLS门户进行了部署。 尽管它在较小的图像上运行,但对于较大的图像,在ACI和AKS上恰好1分钟后就会超时。 预计图像评分可能需要几分钟。

想知道,这是使用AMLS部署的限制还是ACI和AKS在60秒后使部署的Web服务超时? 任何解决方法都将受到欢迎

ACI错误:-  发布http://localhost:5001/score:net / http:请求已取消(等待标头时,超出了Client.Timeout)

AKS错误:-  副本已关闭连接,然后回复

2 个答案:

答案 0 :(得分:1)

部署类具有一个超时设置,您可以在构造函数中进行更改,这会有所帮助。无论如何,有些客户会超时。

https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.webservice.aks.aksservicedeploymentconfiguration?view=azure-ml-py

scoring_timeout_ms :int =>为对该Web服务的调用进行评分而强制实施的超时。默认为60000

答案 1 :(得分:1)

如果您要在AKS中部署服务,那么@Greg的解决方案在大多数情况下就足够了。但是,如果您scoring_timeout_ms的值将超过60000毫秒(即60秒),那么我建议您也使用以下配置设置进行调整。当您的模型作为部署部署到Kubernetes中时,我们定义了一个LivenessProbe,以便在模型容器无响应时,Kubernetes可以自动重新启动容器,以恢复模型的运行状况。

  • period_seconds:每个LivenessProbe之间的时间间隔。如果您的模型需要45秒来响应评分请求,那么您可以做的一件事就是将每次LivenessProbe执行之间的时间间隔从默认的10秒增加到可能的30秒(或更多)。
  • failure_threshold:LivenessProbe失败的次数,此后Kubernetes重新启动模型容器。如果您想每10秒运行一次LivenessProbe,并且模型需要45秒才能响应,那么您可以将failure_threshold从默认值3增加到10。这意味着在连续10次LivenessProbe失败后,Kubernetes将重新启动您的容器。
  • timeout_seconds:LivenessProbe放弃之前要等待的时间间隔。您可以考虑的另一种选择是将timeout_seconds从默认的2秒增加到30秒。这将导致LivenessProbe在您的容器繁忙时最多等待30秒,但在不繁忙时,它将更早回复。

没有一个可以修改的“正确”配置设置,但是这些组合的使用肯定会有助于防止502“在回复之前关闭复制的连接”错误。