Sagemaker 不以异步方式进行推理

Sagemaker doesn't inference in an async manner

我已经部署了一个带有异步端点的自定义模型。我想用它处理视频文件,因为视频可能有 ~5-10 分钟,我无法将所有帧加载到内存中。当然,我想对每一帧进行推理。 我写了
input_fn - 使用 boto 从 s3 下载视频文件并创建生成器以给定批量大小加载视频帧 - return 生成器 - 用 OpenCV 编写
predict_fn - 迭代生成器批处理帧并使用模型生成预测 - 将预测保存在列表中
output_fn - 将预测转换为 json 格式,gzip 全部以减小大小

端点运行良好,但问题是并发。 sagemaker 端点处理请求后请求(来自 cloudwatch 和 s3 保存文件时间)。我不知道为什么会这样。 max_concurrent_invocations_per_instance 设置为 1000。PyTorch 服务的其他设置如下:

SAGEMAKER_MODEL_SERVER_TIMEOUT: 100000
SAGEMAKER_TS_MAX_BATCH_DELAY: 10000
SAGEMAKER_TS_BATCH_SIZE: 1000
SAGEMAKER_TS_MAX_WORKERS: 4
SAGEMAKER_TS_RESPONSE_TIMEOUT: 100000

而且,它仍然不起作用。那么如何使用 PyTorch 创建异步推理端点以获得并发性?

TorchServe DLC 的并发设置由工作人员数量等机制控制,可以通过定义适当的变量来设置,例如 SAGEMAKER_TS_*SAGEMAKER_MODEL_*(参见,例如, this page 了解它们的含义和含义的详细信息。

而后者对任何特定的服务堆栈都是不可知的,并且在 SageMaker Inference Toolkit, the former are TorchServe-specific and are defined in TorchServe Inference Toolkit 中定义。此外,由于 TorchServe 推理工具包构建在 SageMaker 推理工具包之上,因此这两组参数之间存在 non-trivial 相互作用。

因此,您可能还想尝试使用 SAGEMAKER_MODEL_SERVER_WORKERS 等参数来正确设置 SageMaker 异步端点的并发设置。