Sagemaker Endpoint节流异常

时间:2019-10-25 12:01:42

标签: endpoint amazon-sagemaker

我已经使用Sagemaker创建了一个端点,并设计了我的系统,使得它被同时调用了大约100次。这似乎导致“模型错误” ,并且花费了太多时间。我是否需要为每个事件创建一个端点,而是为每个端点进行一次呼叫?

1 个答案:

答案 0 :(得分:2)

您可以进入cloudwatch日志来诊断模型故障。 实时推理流量扩展可通过以下3个独立维度来解决:

  1. 硬件:选择更大或更大型的计算机 机器。例如,您可以load test your model endpoint使用越来越多的计算机,并查看硬件大小何时为您提供可接受的延迟。 SageMaker的自动缩放功能可帮助您自动解决此问题。如果部署深度神经网络,您还可以考虑使用适当的加速器,例如GPU(EC2 P3,EC2 G4)或Amazon Elastic Inference Accelerator,以使每个预测更快。

  2. 软件:您有2种方法可在此处进行调整:

    • 选择精简而快速的服务堆栈。不同的服务器将以不同的性能级别处理负载。一个常见的技巧是分批加载-例如,如果不是100次命中服务器,您能否只对100条记录进行一次命中?如果客户端无法批处理其请求,您可以使用微异步性,以便在他们发出请求后自行进行批处理吗?您通常可以在高级深度学习服务器(例如TF ServingMXNet Model Server(均可在SageMaker中使用)中配置此类微分批处理,但是除此之外,您也可以自己通过排队(SQS)来完成在服务器前面。
    • 模型编译-优化模型图及其运行时间。这是一个非常聪明的概念,它利用了以下事实:当您知道要部署的位置(例如NVIDIA,Intel,ARM等)时,您便拥有内部人员的优势,并且可以优化模型工件并创建定制的运行时为此特定目标平台量身定制的应用程序。这可以将内存消耗和等待时间减少两位数,并且是ML研究的一个活跃领域。在SageMaker生态系统中,可以使用SageMaker Neo执行这样的编译任务,但是开源生态系统正在快速发展,尤其是Treelite(paperdoc)用于决策树编译和TVM({{ 3}},doc)进行任意神经网络编译。两者都是Neo的依赖项。
  3. 科学:某些模型比其他模型慢或重。如果速度和并发性是您优先考虑准确性的前提,并且您已经利用了上面(1)和(2)级别的所有可能技巧,请考虑使用快速通量模型,例如线性模型和结构化数据的逻辑回归,MobileNet或SqueezeNet用于分类(paper)的大型Resnet,而不是用于检测(nice benchmark here的FasterRCNN的Yolov3,等等。但是请注意,与级别(1)和(2)不同,更改模型科学会更改准确性。

如上所述,这三个方面的改进实际上是关于实时推理;如果您有能力预计算所有可能的模型输入,那么最终的低延迟高吞吐量解决方案是离线预计算各种感兴趣的输入预测对,并根据需要从快速数据库或本地读取中提供服务-仅限商店。