在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误
Posted
技术标签:
【中文标题】在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误【英文标题】:Getting timeout error for azure aci webservice while fetching files from blob storage and passing to the model for predication 【发布时间】:2021-10-08 15:08:53 【问题描述】:我正在尝试在 aci 中部署机器学习模型,其功能如下所示
-
它将尝试连接 Blob 存储
它将尝试从存储文件夹中读取一个文件并将文件数据传递给模型进行预测。这将在循环中一次一个文件发生
一旦所有文件的循环完成,就会发送所有结果。
现在我的问题是超时问题。在这里,我的 aci api 等待时间为 1 分钟,从 blob 读取一个文件并将其传递给模型通常需要 5-10 秒。但我必须一次处理 100-200 个文件
有谁知道我应该如何扩展它,我也尝试增加 cpu 内核和内存 gb,但也没有用
【问题讨论】:
@Laurent Mazuel 【参考方案1】:您可以通过修改 score.py 来增加超时时间或尝试加快服务速度,以去除不必要的调用。如果这些操作没有解决问题,请使用本文中的信息debug score.py 文件。代码可能处于无响应状态或无限循环。
使用 AKS,您可以根据实例的利用率扩展实例。
Azure Kubernetes 服务部署支持自动缩放,这允许添加副本以支持额外负载。自动缩放器旨在处理负载的逐渐变化。
扩大/缩小规模的决定取决于当前容器副本的利用率。忙碌(处理请求)的副本数除以当前副本的总数就是当前利用率。如果此数量超过**autoscale_target_utilization**
,则会创建更多副本。如果它较低,则减少副本。添加副本的决定是急切且快速的(大约 1 秒)。删除副本的决定是保守的(大约 1 分钟)。默认情况下,自动扩缩目标利用率设置为 70%,这意味着该服务可以处理 高达 30% 的每秒请求 (RPS) 峰值。
参考:https://docs.microsoft.com/en-us/azure/machine-learning/how-to-troubleshoot-deployment?tabs=python#http-status-code-503
【讨论】:
以上是关于在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误的主要内容,如果未能解决你的问题,请参考以下文章
C++中用frugally-deep读取keras的模型并进行预测(详细)